昨天,為App換上了門面,設計了專屬的Icon和啟動畫面。當App的外觀和功能都已具備,就代表我們正式進入了發布準備階段。今天將專注於Android平台的上架準備工作,完成將App提交到Google Play商店前最關鍵的兩個技術步驟。
首先,產生一個用來證明App開發者身份的數位簽署金鑰(Keystore),接著,設定build.gradle檔案,將專案打包成Google Play官方推薦的Android App Bundle(AAB)格式。
一、產生簽署金鑰(Keystore):App的數位身份證
在將App發布到Google Play之前,必須先用一個數位憑證來簽署它。這個簽署確保了兩件事:
一、身份驗證:證明這個App的來源是你,而不是別人冒名頂替。
二、更新完整性:使用者手機上的App只會接受來自同一個簽署金鑰的更新,防止惡意竄改。
這個金鑰會被存放在一個稱為「Keystore」的檔案中。
請務必牢記:你必須永久、安全地保管這個檔案,一旦遺失,你將永遠無法再更新你的App!
我們將使用Java Development Kit(JDK)內建的keytool指令來產生金鑰,產生步驟:
Step1. 打開你的終端機 (Terminal)。
Step2. 導航到你的專案中的 android 資料夾。
Step3. 執行以下指令:keytool -genkey -v -keystore 3x-inspire-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias 3x-inspire-alias
Step4. 接著,指令行會引導你設定金鑰庫的密碼、金鑰的密碼,以及一些關於你的組織和個人的資訊。請務必記下你設定的密碼。
完成後,你會在android資料夾下看到一個3x-inspire-key.jks檔案。請立即將這個檔名加入到專案根目錄的 .gitignore檔案中,避免將金鑰上傳到公開的程式碼倉庫!
二、設定 build.gradle,建置aab(Android App Bundle)檔案
產生金鑰後,需要告訴Android的建置系統在打包「Release」版本的App時使用這個金鑰。
Step1. 安全地儲存金鑰資訊:
直接將密碼寫在 build.gradle 中是不安全的。最佳實踐是建立一個 android/key.properties 檔案(此檔案也必須加入 .gitignore),並在其中儲存你的金鑰資訊:
storePassword=你的金鑰庫密碼
keyPassword=你的金鑰密碼
keyAlias=3x-inspire-alias
storeFile=3x-inspire-key.jks
Step2. 設定android/app/build.gradle:
打開這個檔案,並進行以下修改:
// ...
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}
android {
// ...
signingConfigs {
release {
keyAlias keystoreProperties['keyAlias']
keyPassword keystoreProperties['keyPassword']
storeFile file(keystoreProperties['storeFile'])
storePassword keystoreProperties['storePassword']
}
}
buildTypes {
release {
// ...
signingConfig signingConfigs.release
}
}
}
三、建置App Bundle(AAB):
現在一切就緒!回到專案的根目錄,在終端機中執行 Flutter 的建置指令:flutter build appbundle
這個指令會自動以Release模式建置,並使用我們設定好的金鑰進行簽署,最終產生AAB檔案。完成後,你可以在 build/app/outputs/bundle/release/app-release.aab路徑下找到這個檔案。這就是我們下一步要上傳到 Google Play的檔案。
App現在已經是一個簽署完成,隨時可以發布的狀態。下一步是將它真正地帶到世界舞台!明天,我們將踏出上架的第一步:登入Google Play Console,並將今天產生的AAB檔案發佈到內部測試軌道。
【哈囉你好:)感謝你的閱讀!其他我會常出沒的地方:Threads】