Flutter Jenkins打包
通过Jenkins实现Flutter项目的自动化打包可以大大提高开发效率,特别是在频繁迭代的项目中。对于iOS打包来说,结合使用Appuploader可以显著简化证书管理和应用上传流程,减少人为操作错误。无论选择哪种工具组合,关键是要建立一套适合团队的自动化流程,让开发者能够专注于业务开发,而不是繁琐的打包发布工作。
Flutter项目自动化打包实践:Jenkins与Appuploader的完美结合
前段时间公司重构了一个Flutter项目,自动化打包用的是Jenkins,在这过程中遇到了一些坑,借此写一篇文章来分享经验,让大家少走些弯路。
打包环境准备
在打包之前首先要做一些环境配置的工作:
- iOS需要单独配一台Mac来进行打包,因为需要Xcode环境,Docker是没有Xcode环境的
- Android最好也放在这台Mac上打包,因为使用Docker可能会遇到文件读写权限的问题
- 确保搭建好Flutter开发环境
- 确保本地能打包成功
对于iOS开发者来说,推荐使用Appuploader这款iOS开发助手工具,它可以简化证书管理和应用上传流程,特别适合团队协作开发场景。Appuploader提供了可视化的证书管理界面,避免了命令行操作的复杂性。
Jenkins环境配置
1. 安装JRE环境
Jenkins运行依赖于Java环境,没有安装的请去Oracle官网自行下载安装。
2. 安装Jenkins
建议使用brew来安装Jenkins:
-
安装Jenkins:
brew install jenkins -
命令行启动Jenkins:
java -jar /usr/local/Cellar/jenkins/${你的Jenkins版本}/libexec/jenkins.war --httpPort=8080 -
打开浏览器,输入localhost:8080就可看到Jenkins的web界面
-
设置Jenkins开机启动(具体步骤略)
3. Jenkins配置
安装Flutter打包所需要的插件:
- Keychains and Provisioning Profiles Management(iOS证书管理)
- Xcode integration(iOS专用)
- Gradle plugin(Android专用)
- description setter plugin(根据构建日志文件的RegEx,设置每个构建的描述)
项目工程配置
iOS配置
- 新建项目
- 项目构建配置
- 源代码管理
- SSH私钥添加
- 证书和描述文件配置
在iOS证书管理方面,除了使用Jenkins自带的证书管理功能外,也可以考虑使用Appuploader来简化流程。Appuploader提供了以下优势:
- 一键生成和下载证书、描述文件
- 自动修复证书过期问题
- 支持批量管理多应用的证书
- 可视化操作界面,降低出错概率
打包脚本示例:
security set-key-partition-list -S apple-tool:,apple: -s -k "开机密码" ~/Library/Keychains/login.keychain-db
project_path=$(pwd)
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=/Users/yongjianhe/flutter/bin:$PATH
flutter build ios
cd $project_path/ios
now=$(date +"%Y_%m_%d_%H:%M")
scheme="Runner"
configuration=${BUILD_TYPE}
if [ $BUILD_TYPE == "Release" ]
then
export_method="app-store"
elif [ $BUILD_TYPE == "AdHoc" ]
then
export_method="ad-hoc"
else
export_method="development"
fi
workspace_path="${project_path}/ios/Runner.xcodeproj"
rm -rf "${project_path}/ipa"
mkdir -p "${project_path}/ipa"
output_path="${project_path}/ipa"
archive_path="$output_path/zaihui_crm_${export_method}_${now}.xcarchive"
ipa_path="$output_path/zaihui_crm_${BUILD_TYPE}_${BUILD_BRANCH}_${BUILD_REPOSITORY}_${now}.ipa"
ipa_name="zaihui_crm_${BUILD_TYPE}_${BUILD_BRANCH}_${now}.ipa"
commit_msg="$1"
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
fastlane gym --scheme ${scheme} --clean --configuration ${configuration} --archive_path ${archive_path} --export_method ${export_method} --output_directory ${output_path} --output_name ${ipa_name}
if [ ${export_method} != "app-store" ]
then
fir publish ${ipa_path} -T "fir API token" -c $commit_msg
fi
Android配置
安卓打包相对于iOS来说就简单很多了:
- 新建项目
- 项目构建配置
- 源代码管理
- 构建脚本配置
总结
通过Jenkins实现Flutter项目的自动化打包可以大大提高开发效率,特别是在频繁迭代的项目中。对于iOS打包来说,结合使用Appuploader可以显著简化证书管理和应用上传流程,减少人为操作错误。
无论选择哪种工具组合,关键是要建立一套适合团队的自动化流程,让开发者能够专注于业务开发,而不是繁琐的打包发布工作。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)