Flutter 发布 APP (Android and iOS)

Keep in memory.

For Android

准备好为Android准备的release版时, 需要执行一下步骤

检查 App Manifest

查看默认应用程序清单文件(位于<app dir>/android/app/src/main/中的AndroidManifest.xml文件),并验证这些值是否正确,特别是:

  • application: 编辑 application 标签, 这是应用的名称。

  • uses-permission: 如果您的应用程序代码不需要Internet访问,请删除android.permission.INTERNET权限。标准模板包含此标记是为了启用Flutter工具和正在运行的应用程序之间的通信。

查看构建配置

查看默认[Gradle 构建文件][gradlebuild]”build.gradle”,它位于<app dir>/android/app/,验证这些值是否正确,尤其是:

  • defaultConfig:

    • applicationId: 指定始终唯一的 (Application Id) appid

    • versionCode & versionName: 指定应用程序版本号和版本号字符串。

    • minSdkVersion & targetSdkVersion: 指定最低的API级别以及应用程序设计运行的API级别。

添加启动图标

当一个新的Flutter应用程序被创建时,它有一个默认的启动器图标。要自定义此图标:

  1. 查看(Android启动图标)[https://material.io/design/iconography/] 设计指南,然后创建图标。

  2. <app dir>/android/app/src/main/res/目录中,将图标文件放入使用配置限定符命名的文件夹中。默认mipmap-文件夹演示正确的命名约定。

  3. 在AndroidManifest.xml中,将application标记的android:icon属性更新为引用上一步中的图标(例如 <application android:icon="@mipmap/ic_launcher" …)。

  4. 要验证图标是否已被替换,请运行您的应用程序并检查应用图标

app签名

创建 keystore

如果您有现有keystore,请跳至下一步。如果没有,请通过在运行以下命令来创建一个:keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

注意:保持文件私密; 不要将它加入到公共源代码控制中。

注意: keytool可能不在你的系统路径中。它是Java JDK的一部分,它是作为Android Studio的一部分安装的。有关具体路径,请百度。

引用应用程序中的keystore

创建一个名为<app dir>/android/key.properties的文件,其中包含对密钥库的引用:

1
2
3
4
storePassword=<password from previous step>
keyPassword=<password from previous step>
keyAlias=key
storeFile=<location of the key store file, e.g. /Users/<user name>/key.jks>

注意: 保持文件私密; 不要将它加入公共源代码控制中

在gradle中配置签名

通过编辑<app dir>/android/app/build.gradle文件为您的应用配置签名

替换:

1
android {

为:

1
2
3
4
5
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {

替换:

1
2
3
4
5
6
7
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs.debug
}
}

为:

1
2
3
4
5
6
7
8
9
10
11
12
13
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}

现在,您的应用的release版本将自动进行签名。

构建一个发布版(release)APK

使用命令行:

  1. cd <app dir> ( 为您的工程目录).
  2. 运行flutter build apk (flutter build 默认会包含 –release选项).
    打包好的发布APK位于<app dir>/build/app/outputs/apk/app-release.apk

在设备上安装发行版APK

按照以下步骤在已连接的Android设备上安装上一步中构建的APK

使用命令行:

  1. 用USB您的Android设备连接到您的电脑
  2. cd <app dir> .
  3. 运行 flutter install .

(注意: <>为需要替换的内容)

iOS

准备

在开始发布您的应用程序之前,请确保它符合Apple的App Review Guidelines.

为了将您的应用发布到App Store,您需要注册Apple开发者计划。您可以在Apple的Choosing a Membership中阅读更多关于各种会员选项的信息。