应用发布
发布前需要配置应用名称、图标、启动页等,然后构建各平台的安装包。
应用名称修改
Android
文件位置:android/app/src/main/AndroidManifest.xml
xml
<application
android:label="我的应用"> <!-- 修改这里 -->
</application>iOS
文件位置:ios/Runner/Info.plist
xml
<key>CFBundleName</key>
<string>我的应用</string>鸿蒙
文件位置:ohos/entry/src/main/module.json5
json
{
"module": {
"label": "$string:entry_label"
}
}应用图标设置
使用 flutter_launcher_icons 插件自动生成各平台图标:
安装
bash
flutter pub add dev:flutter_launcher_icons配置
在 pubspec.yaml 中添加:
yaml
flutter_launcher_icons:
android: true
ios: true
image_path: "assets/icons/app_icon.png" # 1024x1024 的图标
# 或分别配置
# android: "assets/icons/android_icon.png"
# ios: "assets/icons/ios_icon.png"
adaptive_icon_background: "#FFFFFF" # Android 自适应图标背景
adaptive_icon_foreground: "assets/icons/app_icon.png"生成
bash
dart run flutter_launcher_icons图标要求
- 原始图标建议 1024×1024 像素
- 格式为 PNG
- 背景透明或纯色
- 不要有圆角(系统会自动裁剪)
启动页配置
使用 flutter_native_splash 插件自动生成各平台启动页:
安装
bash
flutter pub add dev:flutter_native_splash配置
在 pubspec.yaml 中添加:
yaml
flutter_native_splash:
color: "#FFFFFF" # 背景色
# 或使用背景图
# background_image: "assets/splash.png"
# 图片(居中显示)
image: assets/icons/splash_logo.png
# Android 12+ 配置
android_12:
image: assets/icons/splash_logo.png
color: "#FFFFFF"
# 深色模式
# color_dark: "#000000"
# image_dark: assets/icons/splash_logo_dark.png生成
bash
dart run flutter_native_splash删除启动页(恢复默认)
bash
dart run flutter_native_splash:remove构建与签名
Android APK
bash
# 构建 release APK
flutter build apk --release
# 构建 AppBundle(推荐,用于上架 Google Play)
flutter build appbundle --release
# 输出位置
# APK: build/app/outputs/flutter-apk/app-release.apk
# AAB: build/app/outputs/bundle/release/app-release.aabAndroid 签名
- 创建签名密钥:
bash
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload- 创建
android/key.properties:
properties
storePassword=你的密码
keyPassword=你的密码
keyAlias=upload
storeFile=/path/to/upload-keystore.jks- 修改
android/app/build.gradle:
groovy
// 在 android {} 之前添加
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
...
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
}安全提示
key.properties和.jks文件不要提交到版本控制(添加到.gitignore)- 密钥文件和密码务必安全保存,丢失后无法更新应用
iOS IPA
bash
# 构建(需 macOS + Xcode)
flutter build ipa --release
# 输出位置
# build/ios/ipa/*.ipaiOS 签名需要在 Xcode 中配置 Apple 开发者证书和 Provisioning Profile。
鸿蒙 HAP(需 flutter-ohos 定制版)
注意
flutter build hap 仅在 flutter-ohos 定制版 中可用,官方 Flutter SDK 不支持此命令。
bash
# 构建鸿蒙应用
flutter build hap --release
# 输出位置
# build/ohos/entry-default-signed.hap构建前检查清单
| 检查项 | 说明 |
|---|---|
| 应用名称 | 各平台配置一致 |
| 应用图标 | 已生成并替换 |
| 启动页 | 已配置 |
| 签名 | 已配置 release 签名 |
| 权限 | 已声明所有需要的权限 |
| 版本号 | pubspec.yaml 中 version 已更新 |
| 隐私政策 | 准备好隐私政策页面 |
| 混淆配置 | 如使用了代码混淆,确保规则正确 |
下一步
- 应用商店上架 — 各平台上架流程与审核要点
