利用 flutter_distributor 自动打包 flutter app 上传蒲公英|fir

2,174 阅读2分钟

介绍一下新的工具 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>&lt;none&gt;</string>
</dict>
</plist>

打包上传

在配置好文件后,在项目根目录执行以下命令即可自动打包并上传了

$ flutter_distributor release --name daily

daily 就是 releases 数组下的 name,你可以配置多个工作流以比如 test,dev,daily,release 等等

这样下次只需要一行命令敲下去,就可以去一边摸鱼等他自己打包上传了