Fastlane自動化打包到蒲公英

語言: CN / TW / HK

Fastlane

fastlane是一個旨在簡化 Android 和 iOS 部署的開源平臺,可以自動化開發和釋出工作流程的各個方面。

一、安裝Xcode命令列工具

fastlane安裝Xcode命令列工具: js xcode-select --install Pasted Graphic.png 如果安裝過會提示:

js xcode-select: error: command line tools are already installed, use "Software Update" in System Settings to install updates

二、安裝fastlane

提前配置好HomeBrew管理工具

js brew install fastlane 檢視fastlane版本:

```js fastlane -v fastlane installation at path: /usr/local/Cellar/fastlane/2.206.2/libexec/gems/fastlane-2.206.2/bin/fastlane


[✔] 🚀 fastlane 2.206.2 ``` 將終端導航到專案目錄並執行:

js fastlane init 命令執行:

``js [✔] 🚀 [13:13:34]: Sending anonymous analytics information [13:13:34]: Learn more at https://docs.fastlane.tools/#metrics [13:13:34]: No personal or sensitive data is sent. [13:13:34]: You can disable this by addingopt_out_usage` at the top of your Fastfile [✔] Looking for iOS and Android projects in current directory... 13:13:34: Created new folder './fastlane'. 13:13:34: Detected an iOS/macOS project in the current directory: 'FastlaneDemo.xcodeproj'

13:13:34: --- Welcome to fastlane 🚀 ---

13:13:34: fastlane can help you with all kinds of automation for your mobile app 13:13:34: We recommend automating one task first, and then gradually automating more over time 13:13:34: What would you like to use fastlane for? 1. 📸 Automate screenshots 2. 👩‍✈️ Automate beta distribution to TestFlight 3. 🚀 Automate App Store distribution 4. 🛠 Manual setup - manually setup your project to automate your tasks ```

13:13:34你想用快車道做什麼? 1. 📸自動截圖 2. 👩✈️自動測試分發TestFlight
3. 🚀自動化應用商店分銷 4. 🛠手動設定-手動設定您的專案自動化您的任務

這邊選擇4

```js 14:29:49: --- Setting up fastlane so you can manually configure it ---

14:29:49: Installing dependencies for you... 14:29:49: $ bundle update

14:31:36: --- ✅ Successfully generated fastlane configuration ---

14:31:36: Generated Fastfile at path ./fastlane/Fastfile 14:31:36: Generated Appfile at path ./fastlane/Appfile 14:31:36: Gemfile and Gemfile.lock at path Gemfile

``` 專案裡多了這三個檔案:

Pasted Graphic 1.png

三、安裝蒲公英外掛

js fastlane add_plugin pgyer 註冊蒲公英,拿到API KeyUser Key

1__#$!@%!#__Pasted Graphic.png

簡單配置一下:

```js default_platform(:ios)

platform :ios do desc "Description of what the lane does"

打包時候用的名稱 例如 fastlane app

lane :develop do |options| target = "FastlaneDemo" configuration = "Debug" gym(scheme: target, configuration: configuration, export_method:"development") pgyer(api_key: "xxxxxxxxxx”) end end ``` 終端執行:

js fastlane develop 結果: ```js +------+------------------+-------------+ | fastlane summary | +------+------------------+-------------+ | Step | Action | Time (in s) | +------+------------------+-------------+ | 1 | default_platform | 0 | | 2 | gym | 78 | +------+------------------+-------------+

[17:39:32]: fastlane.tools finished successfully 🎉 ``` 可以看到上傳蒲公英成功:

2__#$!@%!#__Pasted Graphic.png

點選應用資訊:

Pasted Graphic 4.png

在專案本地也會生成一個ipa

Pasted Graphic 3.png

四、分發到Appstore

```js

釋出到appstore

lane :to_appstore do

# 先獲取當前專案中的bundle version + 1
@build_version = get_info_plist_value(path: "#{$info_plist_path}", key: "CFBundleVersion").to_i + 1

# 針對於 iOS 專案開發證書和 Provision file 的下載工具
sigh(
  force: true,
  output_path: "./fastlane/crets"
)

# 設定 bundle version
set_info_plist_value(
  path: "./so/Supporting Files/so-Info.plist", 
  key: "CFBundleVersion", 
  value: "#{@build_version}"
)

# 針對於 iOS 編譯打包生成 ipa 檔案
gym(
  workspace: "#{$project_name}.xcworkspace",
  scheme: "#{$project_name}",
  clean: true,
  configuration: "Release",
  export_method: "app-store",
  output_directory: "ipa_build/release",
  output_name: "#{$project_abbreviation}"
)

# 用於上傳應用的二進位制程式碼,應用截圖和元資料到 App Store
deliver(
  force: true,# 上傳之前是否成html報告
  submit_for_review: false,# 上傳後自動提交稽核
  automatic_release: true,# 通過審後自動釋出
  skip_binary_upload: false,# 跳過上傳二進位制檔案
  skip_screenshots: true,# 是否跳過上傳截圖
  skip_metadata: false,# 是否跳過元資料
)

end ``` 執行:

```js

[16:03:13]: $ bundle exec fastlane FastlaneDemo [16:03:13]: [16:03:13]: Get started using a Gemfile for fastlane https://docs.fastlane.tools/getting-started/ios/setup/#use-a-gemfile +-----------------------+---------+--------+ | Used plugins | +-----------------------+---------+--------+ | Plugin | Version | Action | +-----------------------+---------+--------+ | fastlane-plugin-pgyer | 0.2.4 | pgyer | +-----------------------+---------+--------+

16:03:14: --- Step: Verifying fastlane version ---

16:03:14: Your fastlane version 2.212.1 matches the minimum requirement of 2.68.2 ✅

16:03:14: --- Step: default_platform ---

16:03:14: Driving the lane 'ios FastlaneDemo' 🚀

16:03:14: --- Step: get_info_plist_value ---

16:03:14: --- Step: sigh ---

+-------------------------------------+-------+ | Summary for sigh 2.212.1 | +-------------------------------------+-------+ | force | true | | adhoc | false | | developer_id | false | | development | false | | skip_install | false | | include_mac_in_profiles | false | | ignore_profiles_with_different_name | false | | skip_fetch_profiles | false | | include_all_certificates | false | | skip_certificate_verification | false | | platform | ios | | readonly | false | | fail_on_name_taken | false | +-------------------------------------+-------+

16:03:14: To not be asked about this value, you can specify it using 'username' 16:03:14: Your Apple ID Username: `` 輸入Apple ID`去測試 ......

參考: