iT邦幫忙

2025 iThome 鐵人賽

DAY 26
1

昨天,為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

  • keystore 3x-inspire-key.jks:指定生成的金鑰庫檔案名稱。
  • validity 10000:憑證的有效期(天),Google Play要求至少到2033 年 10 月 22 日之後,10000天約等於 27 年,是個安全的選擇。
  • 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:
打開這個檔案,並進行以下修改:

  • 在android { ... } 區塊的頂部,加入讀取 key.properties 的程式碼。
  • 在android { ... } 區塊內,加入 signingConfigs 設定。
  • 在buildTypes { ... } 的 release 設定中,引用剛剛建立的簽署設定。
// ...
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


上一篇
【30 天做一個極簡App】專業門面:設計App Icon與啟動畫面
系列文
Mobile Dev|日更靈感來源 App:Flutter × LLM × n8n,每天只推 3 則!26
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言