fastlane自動打包上傳到AppStore

簡介:Fastlane是一套使用Ruby寫的自動化工具集,旨在簡化Android和iOS的部署過程,自動化你的工作流。它可以簡化一些乏味、單調、重複的工作,像截圖、代碼簽名以及發佈App。因爲涉及到公司賬號和子賬號權限問題,因爲有時候公司在給開發者設置子賬號權限時,不想給管理員賬號,只會給開發者賬號,所以要在這種情況下還得自己完成上架,就需要使用這種腳本比較好,因爲只需要輸入一次公司agent賬號和密碼就可以實現。

所需材料:P12證書雙擊安裝,蘋果發佈證書雙擊安裝,並在工程中配置好這兩個文件。

實現過程

一、安裝xcode命令行工具

xcode-select --install,如果沒有安裝,會彈出對話框,點擊安裝。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已經安裝

二、安裝Fastlane

sudo gem install fastlane -NV或是brew cask install fastlane我這裏使用gem安裝的

安裝完了執行fastlane --version,確認下是否安裝完成和當前使用的版本號。

三、初始化Fastlane

cd到你的項目目錄執行

fastlane init

init

這裏會彈出四個選項,問你想要用Fastlane做什麼? 之前的老版本是不用選擇的。選幾都行,後續我們自行根據需求完善就可以,這裏我選的是3。

如果你的工程是用cocoapods的那麼可能會提示讓你勾選工程的Scheme,步驟就是打開你的xcode,點擊Manage Schemes,在一堆三方庫中找到你的項目Scheme,在後面的多選框中進行勾選,然後rm -rf fastlane文件夾,重新fastlane init一下就不會報錯了。

接着會提示你輸入開發者賬號和密碼。

[20:48:55]: Please enter your Apple ID developer credentials

[20:48:55]: Apple ID Username:

登錄成功後會提示你是否需要下載你的App的metadata。點y等待就可以。

如果報其他錯的話,一般會帶有github的相似的Issues的鏈接,裏面一般都會有解決方案。

四、文件系統

初始化成功後會在當前工程目錄生成一個fastlane文件夾,文件目錄爲下。

其中metadata和screenshots分別對應App元數據和商店應用截圖。

Appfile主要存放App的apple_id team_id app_identifier等信息

Deliverfile中爲發佈的配置信息,一般情況用不到。

Fastfile是我們最應該關注的文件,也是我們的工作文件。

爲了使其結構更整齊,這裏我們將其內容修改爲如下內容,這樣生成的ipa包就會保存在build文件夾下,XXApp_iOS要更換爲自己的項目名稱

default_platform(:ios)

platform :ios do

  # desc "Push a new release build to the App Store"

  # lane :release do

  #   build_app(workspace: "XXApp_iOS.xcworkspace", scheme: "XXApp_iOS")

  #   upload_to_app_store

  # end

  desc "打包XXX

  lane :XXApp_iOS do |options|

    gym(

      clean:true, #打包前clean項目

      export_method: "app-store", #導出方式

      workspace:XXApp_iOS.xcworkspace",

      scheme:XXApp_iOS”, #scheme

      configuration: "Release",#環境

      output_directory:"./build",#ipa的存放目錄

      output_name:XXX#get_build_number()#輸出ipa的文件名爲當前的build

    )

  end


end


執行

在工作目錄的終端執行

fastlane

然後等待就好了,直到完成就可以看到多了一個ipa文件。這時候選中xcode,根據目錄xcode->open developer tool->Application Loader,根據提示上傳ipa即可。

其他的一些小提示

  1. 可以在before_all中做一些前置操作,比如進行build號的更新,我個人建議不要對Version進行自動修改,可以作爲參數傳遞進來。

  2. 如果ipa包存放的文件夾爲工作區,記得在.gitignore中進行忽略處理,我建議把fastlane文件也進行忽略,否則回退版本打包時缺失文件還需要手動打包。

  3. 如果你的Apple ID在登錄時進行了驗證碼驗證,那麼需要設置一個專業密碼供fastlane上傳使用,否則是上傳不上去的。

  4. 如果你們的應用截圖和Metadata信息是運營人員負責編輯和維護的,那麼在打包到AppStore時,記得要忽略截圖和元數據,否則有可能因爲不一致而導致覆蓋。skip_metadata:true, #不上傳元數據skip_screenshots:true,#不上傳屏幕截圖

關於fastlane的一些想法

其實對於很多小團隊來說,fastlane就可以簡化很多操作,提升一些效率,但是還不夠極致,因爲我們沒有打通Git環節,測試環節,反饋環節等,fastlane只是處於開發中的一環。許多團隊在進行Jenkins或是其他的CI的嘗試來摸索適合自己的工作流。但是也不要盲目跟風,從需求出發切合實際就好,找到痛點才能找到止痛藥!

參考鏈接:https://www.jianshu.com/p/5d836e89d9d1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章