查看默認應用程序清單文件(位于<app dir>/android/app/src/main/中的AndroidManifest.xml文件),并驗證這些值是否正確,特別是:
查看默認[Gradle 構建文件][gradlebuild]”build.gradle”,它位于<app dir>/android/app/,驗證這些值是否正確,尤其是:
當一個新的Flutter應用程序被創(chuàng)建時,它有一個默認的啟動器圖標。要自定義此圖標:
如果您有現(xiàn)有keystore,請?zhí)料乱徊?。如果沒有,請通過在運行以下命令來創(chuàng)建一個: keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
注意:保持文件私密; 不要將它加入到公共源代碼控制中。
注意: keytool可能不在你的系統(tǒng)路徑中。它是Java JDK的一部分,它是作為Android Studio的一部分安裝的。有關具體路徑,請百度。
創(chuàng)建一個名為<app dir>/android/key.properties的文件,其中包含對密鑰庫的引用:
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>
注意: 保持文件私密; 不要將它加入公共源代碼控制中
通過編輯<app dir>/android/app/build.gradle文件為您的應用配置簽名
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)在,您的應用的release版本將自動進行簽名。默認情況下 flutter 不會開啟 Android 的混淆。
如果使用了第三方 Java 或 Android 庫,也許你想減小 apk 文件的大小或者防止代碼被逆向破解。
創(chuàng)建 /android/app/proguard-rules.pro 文件,并添加以下規(guī)則:
#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.** { *; }
上述配置只混淆了 Flutter 引擎庫,任何其他庫(比如 Firebase)需要添加與之對應的規(guī)則。
打開 /android/app/build.gradle 文件,定位到 buildTypes 塊。
在 release 配置中將 minifyEnabled 和 useProguard 設為 true,再將混淆文件指向上一步創(chuàng)建的文件。
android {
...
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
本節(jié)介紹如何構建發(fā)布版(release)APK。如果您完成了前一節(jié)中的簽名步驟,則會對APK進行簽名。
使用命令行:
打包好的發(fā)布APK位于<app dir>/build/app/outputs/apk/app-release.apk。
按照以下步驟在已連接的Android設備上安裝上一步中構建的APK
使用命令行:
將應用的release版發(fā)布到Google Play商店的詳細說明,請參閱 Google Play publishing documentation. (國內不存在的,但你可以發(fā)布到國內的各種應用商店)
更多建議: