Skip to content

应用发布

发布前需要配置应用名称、图标、启动页等,然后构建各平台的安装包。

应用名称修改

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.aab

Android 签名

  1. 创建签名密钥:
bash
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
  1. 创建 android/key.properties
properties
storePassword=你的密码
keyPassword=你的密码
keyAlias=upload
storeFile=/path/to/upload-keystore.jks
  1. 修改 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/*.ipa

iOS 签名需要在 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 已更新
隐私政策准备好隐私政策页面
混淆配置如使用了代码混淆,确保规则正确

下一步

基于 Flutter 官方文档整理