Flutter 从入门到精通(水)

274 阅读2分钟

第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.apkapp-release.aab


4. 上传 Google Play(AAB 推荐)

  1. 登录 Google Play Console
  2. 创建应用并填写信息
  3. 上传 .aab 文件
  4. 设置定价、发布区域

三、发布 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.builderSliverList
动画性能避免嵌套动画、使用 RepaintBoundary 限制重绘范围

3. 启动速度优化

  • 删除 debug print
  • 预加载资源:precacheImage()
  • 使用 flutter_native_splash 插件定制启动页
  • 优化首帧绘制逻辑

4. 混淆与安全

  • Android 可开启代码混淆(保护源码)
  • Flutter 无法完全闭源 Dart,但可减少反编译风险

六、CI/CD 自动化建议(可选)

  • 使用 GitHub Actions、Codemagic、Bitrise 等
  • 实现自动打包、上传测试平台(如 TestFlight、Firebase)