本次所記錄的打包流程全部都是在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
- genkey : 產生金鑰
- keystore :
- <存放的路徑>/key.jks :證書的存放路徑和名字
- keyalg RSA -keysize 2048 :使用 2048 位 RSA 演算法對簽名加密
- validity 10000 :有效期時間,這裡是 10000天
- alias sign : 別名 sign
輸入正確命令然後回車,即會請求輸入密碼(密碼不要忘記)
此時執行正確的命令不出意外會在D:/flutterPackageSignature中生成一個key.jks檔案,注意此檔案不要上傳分享給別人
專案配置
-
匯入簽名檔案key.jks
在Flutter工程中/android/app目錄下建立key資料夾,然後把sign.jks複製進來(注意儲存在電腦本地的資料夾中還得有存在key.jks檔案)
-
配置/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
}
}
複製程式碼
-
建立 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相對大一些)
當出現如圖所示即打包成功,Build後為apk存放的路勁
生成apk過程遇到的一些坑
BUG1
如圖,當出現圖中bug時我們就檢查專案的/android/gradle.properties檔案,看是否存在android.enableR8=true(最好不要加上android.enableR8這行,但有時候預設會生成的,所以我們講true改成false就可以解決此bug)
BUG2
綜上,當我們把true改為false時解決bug1,但是會出現圖中的bug2
解決方法:將下圖中的old部分換成new部分即可
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…