Flutter 打包 android端 apk

Burke_Deng發表於2021-03-26

本次所記錄的打包流程全部都是在Android Studio上完成,建議不要直接參考官方文件的打包流程,不然很大機率會出錯

android studio終端生成簽名檔案

keytool -genkey -v -keystore <存放的路徑>/檔名字.jks -keyalg RSA -keysize 2048 -validity 有效時間 -alias 別名
複製程式碼

例:keytool -genkey -v -keystore D:/flutterPackageSignature/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias sign

  1. genkey : 產生金鑰
  2. keystore :
  3. <存放的路徑>/key.jks :證書的存放路徑和名字
  4. keyalg RSA -keysize 2048 :使用 2048 位 RSA 演算法對簽名加密
  5. validity 10000 :有效期時間,這裡是 10000天
  6. alias sign : 別名 sign

輸入正確命令然後回車,即會請求輸入密碼(密碼不要忘記)

11.png

此時執行正確的命令不出意外會在D:/flutterPackageSignature中生成一個key.jks檔案,注意此檔案不要上傳分享給別人

專案配置

捕獲.PNG

  1. 匯入簽名檔案key.jks

在Flutter工程中/android/app目錄下建立key資料夾,然後把sign.jks複製進來(注意儲存在電腦本地的資料夾中還得有存在key.jks檔案)

  1. 配置/android/app/build.gradle檔案

在flutter的/android/app/build.gradle檔案中的android前加入

def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
複製程式碼

在android裡的signingConfigs加入release

 signingConfigs {
        release {
            keyAlias 'sign'  //別名
            keyPassword '生成簽名時輸入的密碼'
            storeFile file('D:/flutterPackageSignature/signfile.jks')  //簽名檔案路徑
            storePassword '生成簽名時輸入的密碼'
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
複製程式碼
  1. 建立 key.properties 檔案

  • storePassword= 剛剛建立金鑰庫時的密碼
  • keyPassword= 剛剛建立金鑰的密碼
  • keyAlias=sign(別名)
  • storeFile=D:/flutterPackageSignature/key.jks

生成apk

配置完成後在專案終端輸入生成apk命令

flutter build apk --target-platform android-arm --split-per-abi

或者

flutter build apk(相對上面那個命令,此命令打包的apk相對大一些)

.PNG 當出現如圖所示即打包成功,Build後為apk存放的路勁

生成apk過程遇到的一些坑

BUG1

enableR8istrue.png

如圖,當出現圖中bug時我們就檢查專案的/android/gradle.properties檔案,看是否存在android.enableR8=true(最好不要加上android.enableR8這行,但有時候預設會生成的,所以我們講true改成false就可以解決此bug)

BUG2

enableR8isfalse.png

綜上,當我們把true改為false時解決bug1,但是會出現圖中的bug2

解決方法:將下圖中的old部分換成new部分即可

捕獲2.PNG

BUG3

專案中換取使用阿里映象時buildscript repositories和allprojects repositories都需要更改,不然會出錯

啊裡映象

maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
複製程式碼

引用參考

Flutter 專案打包成 APK:juejin.cn/post/689411…

Flutter打包apk: wcdxg.com/2020/04/29/…

Flutter打包apk:www.jianshu.com/p/fabcfd621…

相關文章