做自(zì)由與創造的先行者

Flutter Android構建發布

Flutter開(kāi)發手冊

檢查 App Manifest

查看(kàn)默認應用(yòng)程序清單文(wén)件(位于/android/app/src/main/中的AndroidManifest.xml文(wén)件),并驗證這(zhè)些(xiē)值是否正确,特别是:

application: 編輯 application 标簽, 這(zhè)是應用(yòng)的名稱。

uses-permission: 如果您的應用(yòng)程序代碼不需要Internet訪問,請(qǐng)删除android.permission.INTERNET權限。标準模闆包含此标記是爲了(le)啓用(yòng)Flutter工(gōng)具和(hé)正在運行的應用(yòng)程序之間的通信。

查看(kàn)構建配置

查看(kàn)默認[Gradle 構建文(wén)件][gradlebuild]”build.gradle”,它位于/android/app/,驗證這(zhè)些(xiē)值是否正确,尤其是:

defaultConfig:applicationId: 指定始終唯一的 (Application Id) appid versionCode & versionName: 指定應用(yòng)程序版本号和(hé)版本号字符串。有關詳細信息,請(qǐng)參考版本文(wén)檔minSdkVersion & targetSdkVersion: 指定最低(dī)的API級别以及應用(yòng)程序設計(jì)運行的API級别。有關詳細信息,請(qǐng)參閱版本文(wén)檔中的API級别部分。

添加啓動圖标

當一個新的Flutter應用(yòng)程序被創建時(shí),它有一個默認的啓動器圖标。要自(zì)定義此圖标:

查看(kàn)Android啓動圖标 設計(jì)指南,然後創建圖标。

/android/app/src/main/res/目錄中,将圖标文(wén)件放(fàng)入使用(yòng)配置限定符命名的文(wén)件夾中。默認mipmap-文(wén)件夾演示正确的命名約定。

在AndroidManifest.xml中,将application标記的android:icon屬性更新爲引用(yòng)上(shàng)一步中的圖标(例如

要驗證圖标是否已被替換,請(qǐng)運行您的應用(yòng)程序并檢查應用(yòng)圖标

app簽名

創建 keystore

如果您有現(xiàn)有keystore,請(qǐng)跳至下(xià)一步。如果沒有,請(qǐng)通過在運行以下(xià)命令來(lái)創建一個: keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

注意:保持文(wén)件私密; 不要将它加入到(dào)公共源代碼控制中。

注意: keytool可能(néng)不在你(nǐ)的系統路徑中。它是Java JDK的一部分,它是作(zuò)爲Android Studio的一部分安裝的。有關具體路徑,請(qǐng)百度。

引用(yòng)應用(yòng)程序中的keystore

創建一個名爲/android/key.properties的文(wén)件,其中包含對(duì)密鑰庫的引用(yòng):

storePassword=

keyPassword=

keyAlias=key

storeFile=/key.jks>

注意: 保持文(wén)件私密; 不要将它加入公共源代碼控制中

在gradle中配置簽名

通過編輯/android/app/build.gradle文(wén)件爲您的應用(yòng)配置簽名

替換:

android {

爲:

def keystorePropertiesFile = rootProject.file("key.properties")

def keystoreProperties = new Properties()

keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {

替換:

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

}

}

爲:

signingConfigs {

release {

keyAlias keystoreProperties['keyAlias']

keyPassword keystoreProperties['keyPassword']

storeFile file(keystoreProperties['storeFile'])

storePassword keystoreProperties['storePassword']

}

}

buildTypes {

release {

signingConfig signingConfigs.release

}

}

現(xiàn)在,您的應用(yòng)的release版本将自(zì)動進行簽名。

開(kāi)啓混淆

默認情況下(xià) flutter 不會(huì)開(kāi)啓 Android 的混淆。

如果使用(yòng)了(le)第三方 Java 或 Android 庫,也(yě)許你(nǐ)想減小(xiǎo) apk 文(wén)件的大(dà)小(xiǎo)或者防止代碼被逆向破解。

配置混淆

創建 /android/app/proguard-rules.pro 文(wén)件,并添加以下(xià)規則:

#Flutter Wrapper

-keep class io.flutter.app.** { *; }

-keep class io.flutter.plugin.** { *; }

-keep class io.flutter.util.** { *; }

-keep class io.flutter.view.** { *; }

-keep class io.flutter.** { *; }

-keep class io.flutter.plugins.** { *; }

上(shàng)述配置隻混淆了(le) Flutter 引擎庫,任何其他(tā)庫(比如 Firebase)需要添加與之對(duì)應的規則。

開(kāi)啓混淆/壓縮

打開(kāi) /android/app/build.gradle 文(wén)件,定位到(dào) buildTypes 塊。

在 release 配置中将 minifyEnabled 和(hé) useProguard 設爲 true,再将混淆文(wén)件指向上(shàng)一步創建的文(wén)件。

android {

...

buildTypes {

release {

signingConfig signingConfigs.release

minifyEnabled true

useProguard true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

}

構建一個發布版(release)APK

本節介紹如何構建發布版(release)APK。如果您完成了(le)前一節中的簽名步驟,則會(huì)對(duì)APK進行簽名。

使用(yòng)命令行:

cd ( 爲您的工(gōng)程目錄).

運行flutter build apk (flutter build 默認會(huì)包含 --release選項).

打包好(hǎo)的發布APK位于/build/app/outputs/apk/app-release.apk。

在設備上(shàng)安裝發行版APK

按照以下(xià)步驟在已連接的Android設備上(shàng)安裝上(shàng)一步中構建的APK

使用(yòng)命令行:

用(yòng)USB您的Android設備連接到(dào)您的電腦(nǎo)

cd .

運行 flutter install .

将APK發布到(dào)Google Play商店(diàn)

将應用(yòng)的release版發布到(dào)Google Play商店(diàn)的詳細說明(míng),請(qǐng)參閱 Google Play publishing documentation. (國内不存在的,但(dàn)你(nǐ)可以發布到(dào)國内的各種應用(yòng)商店(diàn))

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:Flutter iOS構建發布
上(shàng)一篇:Flutter 檢查用(yòng)戶界面