1. 通过flutter脚本打包
1.1 iOS打包
1.1.1 自动创建证书打包
flutter build ipa --export-method ad-hoc --dart-define=ENV=$name
1.1.2 手动创建证书打包
flutter build ipa --export-options-plist shell/AdHocExportOptions.plist --dart-define=ENV=$name --dart-define=APP_NAME=$name
1.2 Android打包
flutter build apk --dart-define=ENV=$name --release --target-platform android-arm,android-arm64 --split-per-abi
2. 通过flutter_distributor打包
2.1 通过命令打包
flutter_distributor package --platform ios --targets ipa --build-export-options-plist shell/AdHocExportOptions.plist --build-dart-define=ENV=$name
2.2 通过配置文件打包
项目根路径添加’distribute_options.yaml’文件
env:
PGYER_API_KEY: '***' # 蒲谷英 token
FIR_API_TOKEN: '***' # fir token
APPSTORE_USERNAME: 'app store username' # app store 登录用户名
APPSTORE_PASSWORD: '***' # App Store 专用密码
output: dist/ # 输出路径
releases:
# 开发环境
- name: dev # 命令名称
jobs:
# Build and publish your ipa pkg to pgyer
- name: ios # job名称
package:
platform: ios/android # 平台
target: ipa # 打包方式
channel: channel # 渠道
build_args: # 构建参数
target-platform: android-arm,android-arm64 # 安卓构建平台
export-options-plist: shell/AdHocExportOptions.plist # iOS打包配置文件
dart-define: # 自定义参数
ENV: dev # 环境参数
split-per-abi: # 安卓是否分开打包, 不要带参数
publish_to: fir/pgyer/appstore # 上传平台
所有jobs一块打包
flutter_distributor release --name {命令名称} --skip-clean
单个job打包
flutter_distributor release --name {命令名称} --jobs ios --skip-clean
--skip-clean
: 是否忽略flutter_clean
2.3 配合脚本打包
echo '请选择打包环境类型'
echo '0: dev'
echo '1: test + release'
read env
case $env in
0)
env='dev'
;;
1)
env='test_release'
;;
*)
echo '你没有输入 0 到 1 之间的数字, 默认打dev的包'
env='dev'
;;
esac
# 钉钉群 Webhook 地址
url="https://oapi.dingtalk.com/robot/send?access_token=***"
# readonly url;
echo $url
# 测试地址
downloadUrl="fir/pgyer安装包下载地址"
# readonly downloadUrl
echo $downloadUrl
# 测试描述
desc='请测试'
echo "开始打 $env 环境的包"
flutter_distributor release --name $env --skip-clean
# 发送钉钉通知
curl -H 'Content-Type: application/json' -X POST -d '{
"at": {
"isAtAll": true // 是否@所有人
},
"text": { // 描述信息
"content": "'$env'环境包已打好, 安装包地址: '$downloadUrl','$desc'"
},
"msgtype": "text"
}' $url
echo -e "\n钉钉通知已发送 \n"