小菜是搞 Android 的,曾經嘗試過打包 APK 檔案失敗,由于種種原因暫停研究,今天重新學習一下如何打包 APK 。 官網 講解的清楚明了,小菜在此基礎上整理一下打包過程中遇到的問題。
打包步驟:
- 檢查 Android 環境,一般建立的應用若不做特殊調整基本沒有問題;若需要網絡請求,需要在 AndroidManifest 檔案中添加網絡權限;若需要更改應用名稱和圖示可以參考 Flutter 05: 圖解修改應用名稱及圖示 ;
<uses-permission android:name="android.permission.INTERNET"/>
- 建立簽名檔案 key.jks,與直接 Android 打包時 key 檔案生成略有不同;需要在【終端】中運作如下指令;并按照訓示填寫密碼和使用者基本資訊;注意:密碼需要牢記,且 key 檔案可以通用;
keytool -genkey -v -keystore ~/key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
- 在 Android 環境中配置 key.jks 檔案資訊;
3.1 建立一個 key.properties 檔案,名稱并非絕對,并在檔案中填寫如下 key 基本資訊;
storePassword=123456
keyPassword=123456
keyAlias=key
storeFile=/Users/.../key.jks
3.2 在 gradle 檔案中添加如下消息,名稱要對應;
def keystorePropertiesFile = rootProject.file("key.properties")
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
- 【終端】進入需要打包應用 pubspec.lock 目錄下,運作如下指令,等待即可,最終生成 APK 檔案目錄以【終端】顯示為準;
flutter build apk
- 将打包好的應用運作在終端裝置上即可;
問題一:key.jks 檔案存在卻忘記密碼;
小菜以前嘗試時生成過 key.jks 檔案,但是實在是想不起密碼,打包一直失敗,無奈重新生成一個 key02.jks 檔案,使用新的簽名,但是在真正的項目中建議使用一套簽名檔案,否則在更新或其他情況會出問題,是以密碼和簽名檔案要牢記;
keytool -genkey -v -keystore ~/key02.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key
Tips: alias 和簽名檔案要與 key.properties 中對應。
問題二:command not found: flutter
小菜以前釋出插件時配置了一個牆外環境和牆内環境兩套,是以有些混亂,這個問題主要是 Flutter 環境未找到,需要找到個人配置的環境即可,若有問題可參考小菜很久以前分别為 Windows 和 Mac 環境下配置環境的小部落格。
Flutter 的打包并非難題,主要是細節方面要多注意,尤其是簽名檔案要牢記;如果有錯誤的地方煩請多多指導!