App Center 中的 Android 程式代碼簽署設定
重要
Visual Studio App Center 定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到它完全淘汰為止,但有數個建議您考慮移轉至的建議替代方案。
提示
對於 Xamarin.Android 使用者,程式稍有不同。 如需詳細資訊,請參閱我們的 Xamarin.Android 程式代碼簽署指南 。
簽署應用程式是開發程式期間在實際裝置上執行應用程式,或透過 Beta 程式或在 Play Store 中散發應用程式的需求。 如果沒有程式代碼簽署,應用程式只能在模擬器上執行。
當 App Center 建置具有偵錯組建類型的 Android 應用程式時,開發人員不需要密鑰存放區,但可以上傳。 這些組建會自動使用偵錯金鑰簽署程式代碼。 針對將要部署的發行組建,請將密鑰存放區上傳至 App Center。
產生金鑰存放區
如果您目前沒有金鑰存放區,您可以在 Android Studio 中產生一個金鑰存放區。 您可以在 Android Studio 的官方使用者指南中找到產生金鑰存放區以簽署 APK 的指示。
設定程式代碼簽署
App Center 支援三種不同的方式來設定 Android 應用程式的程式代碼簽署。 針對這三種方法,您必須先移至組建組態並啟用程式代碼簽署:
- 在 App Center 中移至您的應用程式。
- 移至 [ 建置]。
- 從清單中選擇您想要設定的分支。
- 使用右上角的 [設定] 功能表,或選擇 [如果您的分支尚未針對組建進行設定],請選擇 [設定]。
- 啟用 [簽署組建]。
- 選擇儲存。
然後,根據您的案例,使用下列各節中三個選項中最適合的選項。 第一個選項牽涉到將認證簽入您的存放庫,而其他兩個選項則改用App Center來處理您的認證。
從 Android 11 開始,您必須使用 APK 簽署者(如果您使用 API 層級 30),因為它會設定一些額外的配置「現在需要 APK 簽章配置 v2」。 App Center 現在(自 2020 年 12 月 17 日起)會在內部使用 APK 簽署者簽署 Android 應用程式,而不是先前使用的 JAR 簽署者。 作為在 App Center 中啟用 APK 登入者的一部分,已實作 Android 簽署工作 V3,而新簽署工作的需求是變更密鑰存放區檔案的儲存方式 - 將密鑰存放區檔案儲存在 AzDO 安全檔案中 (Android 簽署組建和發行工作 - Azure Pipelines |Microsoft Docs)。
警告
任何在 2020 年 12 月 17 日之前上傳其密鑰存放區檔案的組建組態,仍然使用 APK 簽章配置 v2 簽署方法(jarsigner)。 若要使用 APK 簽章配置 v3 簽署流程,使用者只需要 重新上傳密鑰存放區檔案 並 儲存 其分支組態。
注意
不支援使用 Android Gradle 外掛程式 4.1.x 版。 若要使用此版本,您必須在檔案中 gradle.properties
新增下一個選項設定:
android.useNewApkCreator = false
A. 將所有項目儲存在 Gradle 組態中
您可以在 (應用程式層級) 檔案中build.gradle
指定簽署詳細資料。 簽署詳細數據以及所有認證和金鑰存放區資訊都會顯示在存放庫中。 首先,將您需要的所有專案新增至程序代碼,並將其簽入您的存放庫。 然後在 App Center 的組建組態中,啟用 [我的 Gradle 設定] 完全設定為自動處理簽署。
B. 將所有項目上傳至 App Center
您可以上傳金鑰存放區,並透過 App Center 設定簽署認證。 在此情況下,App Center 會先建置 Android 應用程式,然後在成功建置之後執行簽署步驟。
注意
組建只能簽署一次。 請確定您在所選組建變體的 Gradle 組態中,與簽署組態沒有任何衝突。 如果 App Center 和 Gradle 檔案中有簽署設定,組建最終可能會簽署兩次,這會導致衝突。
在 App Center 中設定組建 組態 ,如下所示:
- 停用 [我的 Gradle 設定] 完全設定為自動處理簽署。
- 將您的金鑰存放區檔案上傳至 金鑰存放區檔案 上傳檔案卸除。 您可以將檔案拖曳到方塊上,或按下該檔案並瀏覽檔案。 金鑰存放區檔案具有 擴充名
.keystore
或.jks
。 - 在對應的欄位中輸入金鑰存放區密碼、金鑰別名和密鑰密碼。 當您簽署組建時,這些值與您在 Android Studio 中輸入的值相同。
C. 使用環境變數將簽署詳細數據儲存在存放庫中
如果您的存放庫已經包含密鑰存放區,但您不想儲存該處的認證,請使用這個方法。 在建置階段,認證會以系統屬性的形式提供給 Gradle 組建。 請參閱下列程式代碼範例,以瞭解如何使用它們:
android {
signingConfigs {
releaseSigningConfig {
storeFile rootProject.file("app/testapp.jks")
storePassword System.getProperty("APPCENTER_KEYSTORE_PASSWORD")
keyAlias System.getProperty("APPCENTER_KEY_ALIAS")
keyPassword System.getProperty("APPCENTER_KEY_PASSWORD")
}
}
buildTypes {
release {
signingConfig signingConfigs.releaseSigningConfig
}
}
}
在上述程式代碼中,保護插入至組建的系統屬性後置值會保持您的簽署認證安全 – 這些值會加密,而且只能在建置階段供組建代理程式使用。 您可以透過 App Center 提供值。 您也可以硬式撰寫任何值的程式代碼,並將其簽入您的存放庫。 若要使用 App Center 來保護值:
- 移至您的 組建組態。
- 請確定名為 My Gradle 設定的複選框已完全設定為自動處理未核取的簽署 。
- 在對應的欄位中輸入金鑰存放區密碼、金鑰別名和密鑰密碼。 當您簽署組建時,這些值與您在 Android Studio 中輸入的值相同。
如果您使用產品類別,您可能需要調整上述程式代碼,讓所有發行組態都使用正確的簽署組態。
注意
如果您在 (應用程式層級) 檔案的 buildTypes
區段中build.gradle
使用 signingConfig
選項,可能會在 App Center 組建期間面臨程式代碼簽署錯誤。 這特別適用於使用 React Native for Android 0.60.x 版和更新版本的應用程式:
Execution failed for task ':app:validateSigningRelease'.
Keystore file '.../android/app/debug.keystore' not found for signing config 'debug'
若要修正此問題,您必須推送用於簽署存放庫的適當密鑰存放區,並啟用 My Gradle 設定完全設定為在 App Center 入口網站中的組建組態中自動 處理簽署。
如果您在 App Center 入口網站中將金鑰存放區上傳至組建組態,如果您未從 React Native 專案範本的預設狀態進行更新,此方法就必須從 buildTypes
(應用程式層級) 檔案的 build.gradle
區段刪除signingConfig
選項。