共用方式為


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 應用程式的程式代碼簽署。 針對這三種方法,您必須先移至組建組態並啟用程式代碼簽署:

  1. 在 App Center 中移至您的應用程式。
  2. 移至 [ 建置]。
  3. 從清單中選擇您想要設定的分支。
  4. 使用右上角的 [設定] 功能表,或選擇 [如果您的分支尚未針對組建進行設定],請選擇 [設定]。
  5. 啟用 [簽署組建]。
  6. 選擇儲存

然後,根據您的案例,使用下列各節中三個選項中最適合的選項。 第一個選項牽涉到將認證簽入您的存放庫,而其他兩個選項則改用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 中設定組建 組態 ,如下所示:

  1. 停用 [我的 Gradle 設定] 完全設定為自動處理簽署。
  2. 將您的金鑰存放區檔案上傳至 金鑰存放區檔案 上傳檔案卸除。 您可以將檔案拖曳到方塊上,或按下該檔案並瀏覽檔案。 金鑰存放區檔案具有 擴充名 .keystore.jks
  3. 在對應的欄位中輸入金鑰存放區密碼、金鑰別名和密鑰密碼。 當您簽署組建時,這些值與您在 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 來保護值:

  1. 移至您的 組建組態
  2. 請確定名為 My Gradle 設定的複選框已完全設定為自動處理未核取的簽署
  3. 在對應的欄位中輸入金鑰存放區密碼、金鑰別名和密鑰密碼。 當您簽署組建時,這些值與您在 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選項。