Android 的程式碼簽署

在本文中,您將了解如何為 Android (APK) 進行程式碼簽署。 如果在建立和建置您的裝合專案時,選取了 Android 做為其中一個平臺,您就必須簽署 Android 的應用程式。

重要

如果您想改為 Google Play 發佈簽署 AAB 應用程式,請參閱為簽署您的應用程式

準備好電腦

您需要提供以下資訊才能開始:

產生金鑰

注意

如果您在建立應用程式註冊時已經產生金鑰和簽章雜湊,請跳至簽署 APK 套件

我們將使用 keytool.exe (安裝 Android Studio 後可用,從資料夾位置 "Drive:\Program Files\Android\Android Studio\jre\bin\keytool.exe") 建立憑證以簽署應用程式封裝。 Keytool 可用來管理加密金鑰、X. 509 憑證鏈結和信任憑證的金鑰儲存區 (資料庫)。

若要產生金鑰,請打開命令提示字元,並執行下列命令:

keytool -genkey -alias SIGNATURE_ALIAS -keyalg RSA -keystore PATH_TO_KEYSTORE -keysize 2048 -validity 10000

參數:

  • genkey - 產生金鑰的命令。
  • alias - 表示未來要使用的別名,會用來參考包含所產生之金鑰的金鑰儲存區項目。
  • keyalg - 金鑰演算法名稱。
  • keystore - 所使用金鑰儲存區的名稱。
  • keysize - 要產生的每個金鑰的大小。
  • validity - 金鑰的有效天數。

範例:

  • 如果準備 Key Vault,PATH_TO_KEYSTORE 應具有 .pfx 擴充。

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.pfx -keysize 2048 -validity 10000

  • 如果準備手動簽署,PATH_TO_KEYSTORE 應具有 .jks 副檔名。

    keytool -genkey -alias powerappswrap -keyalg RSA -keystore powerappswrap.jks -keysize 2048 -validity 10000

使用上述範例中參數的 keytool 命令螢幕擷取畫面。

產生簽章雜湊

注意

如果您在建立應用程式註冊時已經產生金鑰和簽章雜湊,請跳至簽署 APK 套件

產生金鑰之後,會使用 keytool 中的 exportcert 命令來匯出金鑰儲存區憑證。

keytool -exportcert -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE | openssl sha1 -binary | openssl base64

參數:

  • exportcert - 從金鑰儲存區讀取與別名相關的憑證,並將它儲存在 cert_file 檔案中。 當未指定檔案時,會將憑證輸出至 StdOut。
  • alias - 在先前產生金鑰時所用的別名。
  • keystore - 所使用金鑰儲存區的名稱。
  • openssl - 產生 Android 的 SHA1 金鑰。

註冊應用程式時,將產生的簽章雜湊新增至重新導向 URI 中。

手動將 SHA1 十六進位轉換為 Base64 編碼的簽章雜湊

如果您的簽章雜湊未經過正確編碼或無法被接受,您可能會在 Azure 入口網站中看到以下錯誤:

「簽章雜湊必須是 base64 編碼的 SHA1」。

出現此錯誤時,請嘗試使用下列步驟產生簽章雜湊:

  1. 執行 keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE 以詳細模式列出憑證資訊。
  2. 從輸出的憑證指紋區段中複製 SHA1 值。 請確定您只複製十六進位值。
    例如:EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
  3. 使用任何可用的「十六進位至 Base64」轉換器,將已複製的憑證指紋十六進位值轉換為 Base64 編碼值。
    Base64 編碼值的範例:8CPPeLaz9etdqQyaQubcqsy2Tw=
  4. 註冊應用程式時,請將產生的 Base64 編碼值複製為 Azure 入口網站中的簽章雜湊

簽署 APK 套件

若要簽署 APK 套件,我們會使用 apksigner 工具。 此工具可讓您簽署 APK,並確認 APK 套件簽章會在 APK 所支援的所有 Android 平臺上成功通過驗證。

尋找您的 apksigner

  1. 檢查 Android Studio 中 的 Android SDK 路徑。

  2. 選取工具 > SDK 管理員 > Android SDK 位置

    如果使用 iOS,請從 buildTools 版本目錄中檢查 apksigner 檔案:

    移至 SDK 目錄 > build-tools > buildToolsVersion > lib,並檢查 apksigner.jar檔案

使用 apksigner 檔案

執行下列命令,以使用 apksigner 並簽署套件:

apksigner.bat sign --ks PATH_TO_KEYSTORE --ks-key-alias KEY_ALIAS PATH_TO_APK

參數:

  • ks - 金鑰儲存區路徑。
  • ks-key-alias - APK 檔案的金鑰別名路徑。

出現提示時,請輸入密碼。

其他資訊:Android Studio 命令列工具:apksigner

散發應用程式

您可以將套件託管在應用程式中心等分配服務上。 若要使用 Microsoft Intune 來散發,請參閱將 Android 企業營運應用程式新增至 Microsoft Intune。 若要了解如何讓應用程式存取 Intune 應用程式防護服務,請參閱授予應用程式存取 intune 應用程式防護服務的權限

另請參閱