APK Release
Reference¶
https://ithelp.ithome.com.tw/articles/10224285
添加App Icon¶
雖然Flutter預設的Icon並不算醜,但用預設的總是有種陽春感,所以在輸出前先來建立專屬於你自己的Icon吧。
在Dart Pub上有一個能迅速幫你生成Android和iOS Icon的套件flutter_launcher_icons,只需要三個簡單的步驟,它就會分別在Android和iOS的資料夾產生適合各種大小使用的Icon圖示。
在pubspec.yaml的dev_dependencies區塊引入flutter_launcher_icons package
將你的Icon圖放到assets資料夾後,在pubspec.yaml添加以下程式碼指向圖片路徑、設置檔案名稱等等
flutter_icons:
image_path: "assets/icons/ic_launcher.png"
android: true # can specify file name here e.g. "ic_launcher"
ios: true # can specify file name here e.g. "My-Launcher-Icon"
在命令行輸入下方程式碼,剩下的就交由套件幫我們完成
執行完後可以在Android資料夾看見產生出了許多不同大小的Icon,在android/app/src/main/AndroidManifest.xml中的android:icon="@mipmap/ic_launcher">也會自動更改成你設定的檔案名稱。
建立keyStore¶
有兩種方式可以產生keyStore
-
使用Android Studio GUI介面產生
這種方式簡單但麻煩,因為你需要先建立一個空的Android專案,然後依照下方的示意圖建立keyStore。
- 從上方工具列選擇Build -> Generate Signed Bundle/APK
- 選擇APK
- 點選Create new…,建造KeyStore
- 設置你的keyStore檔案存放位置並設置alias的密碼 -
透過command line指令建造KeyStore
到C:\Program Files\Java\jdk1.8.0_181\bin(路徑可能依你當初安裝的設定有異),開啟cmd或Power Shell輸入下方指令,keyStore的存放路徑可以自己設定。
keytool -genkey -v -keystore c:/Users/USER_NAME/key.jks -storetype JKS -keyalg RSA -keysize 2048 -validity 10000 -alias key
新增key.properties¶
回到專案,在android資料夾下新增key.properties,用來存放你剛剛新增的keyStore檔案位置和密碼。
設置Proguard Rule¶
使用Proguard是為了保護你的程式碼不易被竊取,它能對程式碼做混淆和優化,即使惡意人士反組譯你的apk,也很難看懂程式碼的運作流程。
在android/app資料夾新增proguard-rules.pro用來設置Proguard的規則。
## 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.** { *; }
-dontwarn io.flutter.embedding.**
設置app層級的build.gradle¶
開啟android/app/build.gradle
找到
在它上面加三行程式碼,載入剛剛的key.properties
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
compileSdkVersion 28
找到
修改成以下程式碼,開啟Proguard功能以及設置簽章用的keyStore資訊。
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled false
useProguard true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
輸出Release APK¶
在terminal輸入 flutter build apk 就完成啰。輸出的apk可以在「專案資料夾\build\app\outputs\apk\release」找到。
設置Firebase驗證指紋¶
你會發現當安裝APK後,卻無法使用Google賬號登入,這是因為之前只有在Firebase填上debug keyStore的驗證指紋,而剛剛產生的release keyStore指紋還沒有輸入。
取得證書SHA-1步驟:
- 使用cmd或PowerShell到
C:\Program Files\Java\jdk1.8.0_181\bin路徑 - 輸入
keytool -exportcert -list -v -alias <alias名稱> -keystore <keyStore檔案路徑> - 輸入金鑰密碼
最後只要在Firebase App設置的地方新增你的SHA1就可以啦。
Created : 13 novembre 2024