2020年12月8日 星期二

Android Studio - 匯出 Android Release APK 流程(八)

Android Studio - 匯出 Android Release APK 流程(八):

Android 系統要求所有 APK 必須先使用證書進行數位簽章,為了保證每個應用程式開發商合法 ID,防止部分開發商可能通過使用相同的包名(pakage name)來混淆替換已經安裝的程式,然後才能安裝到設備上或進行更新。如果您使用 Android App Bundle,則只需要在將 app bundle 上傳到 Play 管理中心之前為其簽名,其餘操作均由 Google Play 應用簽名功能完成。不過,您也可以手動為應用簽名以將其上傳到 Google Play 及其他應用商店。

Android 提供的打包簡略流程圖
  • 操作系統:Windows 7 64-bit 版本
  • 開發環境:Android Studio 4.0.1 版本
  • 原程式:C:\Development\Development_Android\Android_Project\HelloWorld
  • 程式:C:\Development\Development_Android\Android_Project\HelloWorld

  • Debug / Release APK 構建流程圖

    Android Debug / Release APK 簽名需要配置 4 個參數:
    1. key alias key 別名
    2. key password key 密碼
    3. keystore file 金鑰文件
    4. keystore password 金鑰密碼

    1.ˉˉ 編譯器將您的原始程式碼轉換成 DEX(Dalvik Executable) 檔(其中包括運行在 Android 設備上的位元組碼),將所有其他內容轉換成已編譯資源。

    2.ˉˉ APK 打包器將 DEX 檔和已編譯資源合併成單個 APK。不過,必須先簽署 APK,才能將應用安裝並部署到 Android 設備上。

    3.ˉˉ APK 打包器使用調試或發佈金鑰庫簽署您的 APK:
    ˉˉ3.1. 如果您構建的是調試版本的應用(即專用於測試和分析的應用),打包器會使用調試金鑰庫簽署您的應用。Android Studio 自動使用調試金鑰庫配置新專案。
    ˉˉ3.2. 如果您構建的是打算向外發佈的發佈版本應用,打包器會使用發佈金鑰庫簽署您的應用。要創建發佈金鑰庫,請閱讀在 Android Studio 中簽署您的應用

    4.ˉˉ 在生成最終 APK 之前,打包器會使用 zipalign 工具對應用進行優化,減少其在設備上運行時的記憶體佔用。

    選擇 Build → Generate Signed Bundles / APK
    選擇 APK → Next
    選擇 Create new (第一次選擇新創建)
    輸入資料 → OK
    Key store path:選擇要儲存的檔案位置,以後要記得備份這個檔案
    Password:Confirm:設定存取這個檔案的密碼
    Key Alias:金鑰的別名,使用 APP 的名稱即可
    Password:Confirm:設定金鑰的密碼
    Validity years:有效期限,用預設的 25年即可
    Orginization Unit:証書的資料,可選填

    選擇 Next
    選擇 release → Finish
    成功產生 Signed APK
    Signed APK 在C:\Development\Development_Android\Android_Project\HelloWorld\app\release

    成功產生 Signed APK,便將 APK 下載到手機內,然後雙擊 APK 安裝,便可安裝程式在手機。
    Hello World 應用程式運行
    檔案位置: Signed APK(1722kB)在C:\Development\Development_Android\Android_Project\HelloWorld\app\src\release\ app-release.apk
    金鑰庫: 在 C:\Development\Development_Android\Android_Project\HelloWorld\Keystore\Hello_World.jks

    2020年 12月 8日 天氣報告
    氣溫:-2.0@ 08:00
    相對濕度:百分之 67%
    天氣:多雲

    沒有留言:

    張貼留言