Flutter Android構建發(fā)布

2020-08-27 14:48 更新

檢查 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級別。有關詳細信息,請參閱版本文檔中的API級別部分。

添加啟動圖標

當一個新的Flutter應用程序被創(chuàng)建時,它有一個默認的啟動器圖標。要自定義此圖標:

  1. 查看Android啟動圖標 設計指南,然后創(chuàng)建圖標。
  2. 在<app dir>/android/app/src/main/res/目錄中,將圖標文件放入使用配置限定符命名的文件夾中。默認mipmap-文件夾演示正確的命名約定。
  3. 在AndroidManifest.xml中,將application標記的android:icon屬性更新為引用上一步中的圖標(例如<application android:icon="@mipmap/ic_launcher" ...)。
  4. 要驗證圖標是否已被替換,請運行您的應用程序并檢查應用圖標

app簽名

創(chuàng)建 keystore

如果您有現(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的一部分安裝的。有關具體路徑,請百度。

引用應用程序中的keystore

創(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>

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

在gradle中配置簽名

通過編輯<app dir>/android/app/build.gradle文件為您的應用配置簽名

  1. 替換:
    android {
    

    為:

    def keystorePropertiesFile = rootProject.file("key.properties")
    def keystoreProperties = new Properties()
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
  2. 替換:
    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'

        }
    }
}

構建一個發(fā)布版(release)APK

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

使用命令行:

  1. cd <app dir> (<app dir> 為您的工程目錄).
  2. 運行flutter build apk (flutter build 默認會包含 --release選項).

打包好的發(fā)布APK位于<app dir>/build/app/outputs/apk/app-release.apk。

在設備上安裝發(fā)行版APK

按照以下步驟在已連接的Android設備上安裝上一步中構建的APK

使用命令行:

  1. 用USB您的Android設備連接到您的電腦
  2. cd <app dir> .
  3. 運行 flutter install .

將APK發(fā)布到Google Play商店

將應用的release版發(fā)布到Google Play商店的詳細說明,請參閱 Google Play publishing documentation. (國內不存在的,但你可以發(fā)布到國內的各種應用商店)


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號