介绍一下新的工具 flutter_distributor,利用该工具可实现一行代码自动打包 Android 和 IOS 并上传到蒲公英或者 fir。且配置也不复杂
安装 flutter_distributor
$ dart pub global activate flutter_distributor
安装后需要把 $HOME/.pub-cache/bin 目录添加到环境变量 path 中,执行完安装命令,dart 会提示你添加 PATH 的,这里仅给出 macOS 的配置建议
已经添加过该 PATH 的可以不用再添加
修改 ~/.zshrc 文件,添加一行代码 export PATH="$PATH":"$HOME/.pub-cache/bin"
随后执行 $ source ~/.zshrc
创建配置文件
在项目根目录创建文件 distribute_options.yaml
配置参数直接看官方文档比较好,传送门:distributor.leanflutter.org/v/zh/
这里给出我自己的配置参考
# 自动打包上传配置
# 打包命令 $ flutter_distributor release --name daily
# 如未安装 flutter_distributor 则执行以下命令安装
# $ dart pub global activate flutter_distributor
# $ export PATH="$PATH":"$HOME/.pub-cache/bin"
# 文档地址 https://distributor.leanflutter.org/v/zh/
output: dist/
env:
PGYER_API_KEY: '7139cf445ca857b6471c******'
releases:
- name: daily
jobs:
- name: release-daily-android
package:
platform: android
target: apk
build_args:
target: lib/main_daily.dart
target-platform: android-arm,android-arm64
no-tree-shake-icons: ''
no-sound-null-safety: ''
# 当你不需要发布到分发平台,请删除 publish_to 字段
publish_to: pgyer
- name: release-daily-ios
package:
platform: ios
target: ipa
build_args:
target: lib/main_daily.dart
export-options-plist: ios/ExportOptions.plist
no-tree-shake-icons: ''
no-sound-null-safety: ''
publish_to: pgyer
build_args 就是你执行 flutter build ios 命令后面的参数,--no-sound-null-safety 这样没有值的参数,就写 no-tree-shake-icons: '' 就行。
也许你注意到了 IOS 配置中有个参数 export-options-plist,该参数就是导出选项配置文件的地址,用来配置签名和描述文件以及打包方式的,我这里是自动管理签名,所以只需要在 xcode 中手动打包并导出 ipa 一次,即可在导出的目录中看到 ipa 文件以及 ExportOptions.plist 文件,复制 ExportOptions.plist 文件到 ios 目录中即可。
ExportOptions.plist 配置一览:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<true/>
<key>destination</key>
<string>export</string>
<key>method</key>
<string>ad-hoc</string>
<key>signingStyle</key>
<string>automatic</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>B2**V****</string>
<key>thinning</key>
<string><none></string>
</dict>
</plist>
打包上传
在配置好文件后,在项目根目录执行以下命令即可自动打包并上传了
$ flutter_distributor release --name daily
daily 就是 releases 数组下的 name,你可以配置多个工作流以比如 test,dev,daily,release 等等
这样下次只需要一行命令敲下去,就可以去一边摸鱼等他自己打包上传了