混合开发线上构建之flutter包大小优化

目录
  • 前景
  • 打包flutter
  • flutter引擎包的来源
  • 缩减fluter framework大小
  • 使用Appuploader优化流程
  • 总结

前景

在混合开发项目中,使用jenkins线上构建时,经常遇到flutter包体积过大的问题。一个release版本的flutter framework可能达到几百MB,这不仅影响代码上传、拉取速度,还会拖慢构建过程。本文将分享如何优化flutter包大小,并介绍如何使用Appuploader工具来简化iOS应用的上传流程。

打包flutter

线上构建通常使用flutter命令flutter build ios --no-codesign --release进行打包。执行后会在flutter项目的build文件夹内生成iOS文件夹,其中Release-iphoneos子目录包含打包出的framework。

提示:如果是混合开发项目,可能需要使用flutter build ios-framework命令来避免内网三方库拉取问题。

flutter引擎包的来源

通过分析flutter build ios-framework命令的源码,可以发现flutter framework包存放在本地flutter环境的bin/cache/artifacts/engine目录中。当不使用cocoapods参数时,命令会直接复制Flutter.xcframework。

开发小技巧:可以使用which flutter命令查看当前flutter环境的安装位置。

缩减fluter framework大小

一个完整的flutter framework可能达到440MB,但实际打包到ipa中后,flutter部分可能只有14.7MB左右。这是因为Xcode在打包发布时会进行优化处理,剥离bitcode并去除无用代码和资源。

我们可以使用Xcode命令手动优化:

xcrun bitcode_strip -r Flutter.framework/Flutter -o Flutter.framework/Flutter

经过测试,优化后的framework大小约为14.4MB,与最终ipa中的大小接近。

使用Appuploader优化流程

在优化flutter包大小后,可以使用Appuploader工具来简化iOS应用的上传流程。Appuploader是一款专业的iOS开发助手,可以帮助开发者:

  1. 快速打包和签名应用
  2. 自动管理证书和描述文件
  3. 一键上传到App Store Connect
  4. 提供详细的构建日志和错误分析

使用建议:将Appuploader集成到CI/CD流程中,可以显著提高构建和发布效率。

总结

优化flutter包大小的完整流程:

  1. 提取flutter的framework和App.framework
  2. 使用bitcode_strip命令剥离bitcode
  3. 将优化后的framework放入版本控制或私有仓库
  4. 使用Appuploader工具简化后续的构建和上传流程

注意事项:开发时仍需使用完整的flutter framework,仅在发布构建时应用这些优化措施。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐