第13章:Flutter 应用发布与优化(Android / iOS / 多平台)
本章将教你如何将 Flutter 项目打包发布到应用市场(如 Google Play、App Store),以及如何进行常规的性能优化、包体积优化、构建优化等。
一、准备工作 checklist ✅
| 项目 | 描述 |
|---|---|
| App 名称 & 图标 | 修改 pubspec.yaml 和图标资源 |
| 包名(ID) | Android 修改 applicationId,iOS 修改 Bundle ID |
| 签名证书 | Android 用 keystore,iOS 用 Xcode 创建证书 |
| 权限声明 | AndroidManifest.xml / Info.plist 配置 |
| 多语言支持(可选) | 上一章已实现 |
| 调试代码去除 | 使用 --release 构建 |
二、发布 Android 应用(APK / AAB)
1. 生成 keystore(只需一次)
keytool -genkey -v -keystore my-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key
将 .jks 文件放入项目,例如:android/key/my-key.jks
2. 配置签名信息
编辑:android/key.properties
storePassword=你的密码
keyPassword=你的密码
keyAlias=my-key
storeFile=key/my-key.jks
在 android/app/build.gradle 中引入:
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(rootProject.file("key.properties")))
android {
...
signingConfigs {
release {
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
3. 构建发布包(APK / AAB)
flutter build apk --release
# 或构建 Android App Bundle
flutter build appbundle --release
文件输出路径:build/app/outputs/flutter-apk/app-release.apk 或 app-release.aab
4. 上传 Google Play(AAB 推荐)
- 登录 Google Play Console
- 创建应用并填写信息
- 上传
.aab文件 - 设置定价、发布区域
三、发布 iOS 应用(需 macOS)
1. 使用 Xcode 打开 iOS 项目
open ios/Runner.xcworkspace
2. 配置项(Xcode 内完成)
-
选择“Runner” -> Target
-
修改:
- Bundle Identifier
- App 名称
- App 图标(
Assets.xcassets/AppIcon.appiconset) - 权限说明(Info.plist)
3. 签名与团队配置
- 使用 Apple ID 登录 Xcode
- 设置开发团队(Apple Developer)
- 生成 Provision Profile 和证书(Xcode 自动生成)
4. 打包发布
flutter build ios --release
然后在 Xcode 中点击“Archive”打包并上传至 App Store Connect。
四、构建 Web / 桌面版本(可选)
flutter build web
flutter build macos
flutter build windows
输出目录:
build/web可部署到静态网站- 桌面平台需配置 code signing(可选)
五、优化技巧汇总
1. 包体积优化
-
移除调试包、log
-
使用
--split-per-abi分 ABI 构建flutter build apk --release --split-per-abi -
移除未使用资源
-
启用混淆(Android Proguard)
-
开启资源压缩
2. 性能优化
| 项目 | 建议 |
|---|---|
| Widget 重建 | 避免不必要的 setState(),合理使用 const 构造函数 |
| 图片加载优化 | 使用 cached_network_image |
| 列表优化 | 使用 ListView.builder、SliverList |
| 动画性能 | 避免嵌套动画、使用 RepaintBoundary 限制重绘范围 |
3. 启动速度优化
- 删除 debug print
- 预加载资源:
precacheImage() - 使用
flutter_native_splash插件定制启动页 - 优化首帧绘制逻辑
4. 混淆与安全
- Android 可开启代码混淆(保护源码)
- Flutter 无法完全闭源 Dart,但可减少反编译风险
六、CI/CD 自动化建议(可选)
- 使用 GitHub Actions、Codemagic、Bitrise 等
- 实现自动打包、上传测试平台(如 TestFlight、Firebase)