Android 的程式碼簽署
在本文中,您將了解如何為 Android (APK) 進行程式碼簽署。 如果在建立和建置您的裝合專案時,選取了 Android 做為其中一個平臺,您就必須簽署 Android 的應用程式。
重要
如果您想改為 Google Play 發佈簽署 AAB 應用程式,請參閱為簽署您的應用程式。
準備好電腦
您需要提供以下資訊才能開始:
- 安裝 Android Studio
- 安裝 OpenSSL
產生金鑰
我們將使用 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 中的 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」。
出現此錯誤時,請嘗試使用下列步驟產生簽章雜湊:
- 執行
keytool -list -v -alias SIGNATURE_ALIAS -keystore PATH_TO_KEYSTORE
以詳細模式列出憑證資訊。 - 從輸出的憑證指紋區段中複製 SHA1 值。 請確定您只複製十六進位值。
例如:EF:11:45:3D:F1:72:D9:8C:43:32:CD:0A:49:C2:E4:75:2D:B3:2D:9F
- 使用任何可用的「十六進位至 Base64」轉換器,將已複製的憑證指紋十六進位值轉換為 Base64 編碼值。
Base64 編碼值的範例:8CPPeLaz9etdqQyaQubcqsy2Tw=
- 在註冊應用程式時,請將產生的 Base64 編碼值複製為 Azure 入口網站中的簽章雜湊。
簽署 APK 套件
若要簽署 APK 套件,我們會使用 apksigner 工具。 此工具可讓您簽署 APK,並確認 APK 套件簽章會在 APK 所支援的所有 Android 平臺上成功通過驗證。
尋找您的 apksigner
檢查 Android Studio 中 的 Android SDK 路徑。
選取工具 > 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 應用程式防護服務的權限。