簽署行動應用程式

Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019

開發 Android 或 Apple 作業系統的應用程式時,您最終將需要管理簽署憑證,並在 Apple 應用程式的情況下佈 建配置檔。 本文說明如何安全地管理它們以簽署和布建您的應用程式。

提示

使用 Microsoft 裝載的 Linux、macOS 或 Windows 組建代理程式,或設定您自己的代理程式。 請參閱 建置和發行代理程式

此文章涵蓋:

簽署 Android 應用程式

請遵循下列步驟來簽署 Android 應用程式,同時保護您的簽署憑證安全:

  1. 首先,取得包含簽署憑證的密鑰存放區檔案。 Android 檔案說明產生金鑰存放區檔案及其對應金鑰的程式。

  2. 從 Android 或 Xamarin.Android 組建範本建立組建管線。 或者,如果您已經有組建管線,請在 建置 APK 的工作之後新增 Android 簽署 工作。

  3. 尋找 Android 簽署工作的 [簽署 APK ] 複選框並加以啟用。

  4. 在 [ 金鑰存放區檔案 ] 字段旁,選取設定圖示,並將密鑰存放區檔案上傳至 安全檔案庫。 上傳期間,您的金鑰存放區將會經過加密並安全地儲存。

  5. 將金鑰存放區上傳至安全檔案庫之後,請在 [金鑰存放區檔案] 下拉式清單中選取它

  6. 移至 [ 變數] 索引標籤,並新增下列變數。 在 [ 值] 資料行中,輸入您的 金鑰存放區密碼金鑰別名密鑰密碼

    • keystore-password:未加密密鑰存放區檔案的密碼。 請務必選取 鎖定 圖示。 這會保護您的密碼,並在記錄中遮蔽密碼。

    • key-alias:您所產生簽署憑證的密鑰別名。

    • key-password:與指定別名相關聯的密鑰密碼。 同樣地,請務必選取 鎖定 圖示。

      Android 簽署變數

  7. 返回 [ 工作] 索引標籤,並在簽署選項中參考新建立變數的名稱。

    Android 簽署輸入值

儲存您的組建管線,而且您已全部設定! 任何組建代理程式現在都能夠安全地簽署您的應用程式,而不需要建置機器本身的任何憑證管理。

簽署 Apple iOS、macOS、tvOS 或 watchOS 應用程式

若要讓 Xcode 或 Xamarin.iOS 組建簽署和布建您的應用程式,它需要存取您的 P12 簽署憑證和一或多個佈建配置檔。 下列各節說明如何取得這些檔案。

取得 P12 簽署憑證

建立開發或散發簽署憑證之後,請使用macOS上的 Xcode 或 Keychain 存取應用程式將它匯出至 .p12 檔案。

  1. 若要使用 Xcode 8 或更低版本匯出,請移至 [Xcode>喜好設定...>帳戶 並選取您的Apple開發人員帳戶。

  2. 選取 [ 檢視詳細數據...],以滑鼠右鍵按下您想要導出的簽署身分識別,然後選取 [ 導出...]。

  3. 輸入檔名和密碼。 記下密碼,因為稍後會用到密碼。

    Xcode 導出憑證

  4. 或者,請遵循在 macOS 上使用 Keychain Access 應用程式或在 Windows 上產生簽署憑證的類似程式。 如果您想要使用此方法,請使用本文所述的程式

取得布建配置檔

除非您的應用程式使用自動簽署,否則您可以從Apple Developer入口網站下載應用程式佈建配置檔。 瞭解如何在Apple Developer入口網站中下載布建配置檔。

您也可以使用 Xcode 來存取安裝在 Mac 上的裝置。

  1. 使用 Xcode 8 或更低版本,移至 [Xcode>喜好設定...>帳戶並選取您的Apple開發人員帳戶。

  2. 以滑鼠右鍵按下您想要使用的布建配置檔,然後選取 [在 Finder 中顯示]。

  3. 將醒目提示的檔案從 Finder 複製到另一個位置,併為其提供描述性的檔名。

    在 Finder 中顯示 Xcode

設定組建

建置有兩種建議方式可存取簽署憑證,以及用來簽署和布建應用程式的布建配置檔:

  1. 在組建期間安裝它們
  2. 在 macOS 組建代理程式上預安裝它們

選擇下列任一索引標籤以取得詳細數據。

當您沒有持續存取組建代理程式時,請使用這個方法,例如 託管的 macOS 代理程式。 P12 憑證和布建配置檔會安裝在組建的開頭,並在組建完成時移除。

在組建期間安裝 P12 憑證

可視化編輯器
  1. Xcode 或 Xamarin.iOS 工作之前,將 [安裝 Apple 憑證 ] 工作新增至您的組建。
  2. 在 [ 憑證 (P12)] 字段旁,選取設定圖示,並將 P12 檔案上傳至 安全檔案庫。 上傳期間,您的憑證將會經過加密並安全地儲存。
  3. 將憑證上傳至安全檔案庫之後,請在 [憑證 (P12)] 下拉式清單中選取它。
  4. 移至 [ 變數] 索引標籤,並新增名為的 P12password變數。 將其值設定為憑證的密碼。 請務必選取 鎖定 圖示。 這會保護您的密碼,並在記錄中遮蔽密碼。
  5. 返回 [工作] 索引標籤。在 [安裝 Apple 憑證] 工作的設定中,在 [憑證 (P12) 密碼] 欄位中參考新建立的變數,如下所示:$(P12password)
YAML 範例
  1. 將您的 P12 檔案上傳至 安全檔案庫。 上傳期間,您的憑證將會經過加密並安全地儲存。

  2. 移至 [ 變數] 索引標籤,並新增名為的 P12password變數。 將其值設定為憑證的密碼。 請務必選取 鎖定 圖示。 這會保護您的密碼,並在記錄中遮蔽密碼。

  3. Xcode 或 Xamarin.iOS 工作之前,將 [安裝 Apple 憑證 ] 工作新增至 YAML:

    - task: InstallAppleCertificate@2
        inputs:
          certSecureFile: 'my-secure-file.p12' # replace my-secure-file.p12 with the name of your P12 file.
          certPwd: '$(P12password)'
    

在組建期間安裝布建配置檔

可視化編輯器
  1. Xcode 或 Xamarin.iOS 工作之前,將 [安裝 Apple 布建配置檔 ] 工作新增至您的組建。
  2. 針對 [ 布建設定檔位置 ] 選項,選擇 [安全檔案 ] (在 YAML 中, secureFiles
  3. 在 [ 布建配置檔] 字段旁,選取設定圖示,並將布建配置檔檔案上傳至 安全檔案庫。 上傳期間,您的憑證將會經過加密並安全地儲存。
  4. 將憑證上傳至安全檔案庫之後,請在 [ 布建配置檔 ] 下拉式清單中選取它。
  5. 啟用標示為 置後移除配置檔的複選框。 這可確保布建配置檔不會留在代理程式計算機上。
YAML 範例
  1. 將您的布建配置檔上傳至 安全檔案庫。 上傳期間,您的憑證將會經過加密並安全地儲存。

  2. Xcode 或 Xamarin.iOS 工作之前,將 [安裝 Apple 布建配置檔 ] 工作新增至 YAML:

    - task: InstallAppleProvisioningProfile@1
        inputs:
          provProfileSecureFile: 'my-provisioning-profile.mobileprovision' # replace my-provisioning-profile.mobileprovision with the name of your provisioning profile file.
    

    [注意] 在組建 預設為 true 之後移除配置檔。

參考 Xcode 工作中的檔案

可視化編輯器
  1. 選取 Xcode 工作。
  2. 針對 [ 簽署樣式 ] 選項,選擇 [ 手動簽署]。
  3. 在 [ 簽署身分識別] 欄位中,輸入 $(APPLE_CERTIFICATE_SIGNING_IDENTITY)。 此變數會自動由 您選取之憑證的 [安裝 Apple 憑證 ] 工作設定。
  4. 在 [ 布建設定檔 UUID ] 欄位中, 輸入 $(APPLE_PROV_PROFILE_UUID)。 針對您選取的布建配置檔,[ 安裝 Apple 布建配置檔 ] 工作會自動設定此變數。
YAML 範例
- task: Xcode@5
  inputs:
    signingOption: 'manual'
    signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
    provisioningProfileUuid: '$(APPLE_PROV_PROFILE_UUID)'

參考 Xamarin.iOS 工作中的檔案

可視化編輯器
  1. 選取 Xamarin.iOS 工作。
  2. 針對 [ 使用覆寫] 選項,選擇 [ 標識符]。
  3. 在 [ 簽署身分識別] 欄位中,輸入 $(APPLE_CERTIFICATE_SIGNING_IDENTITY)。 此變數會自動由 您選取之憑證的 [安裝 Apple 憑證 ] 工作設定。
  4. 在 [ 布建設定檔 UUID ] 欄位中, 輸入 $(APPLE_PROV_PROFILE_UUID)。 針對您選取的布建配置檔,[ 安裝 Apple 布建配置檔 ] 工作會自動設定此變數。
YAML 範例
- task: XamariniOS@2
    inputs:
      solutionFile: '**/*.iOS.csproj'
      signingIdentity: '$(APPLE_CERTIFICATE_SIGNING_IDENTITY)'
      signingProvisioningProfileID: '$(APPLE_PROV_PROFILE_UUID)'

儲存您的組建管線,而且您已全部設定! 組建代理程式現在將能夠安全地簽署和布建您的應用程式。

常見問題集

我需要代理程式嗎?

您至少需要一個 代理程式 來執行組建或發行。

我有問題 如何進行疑難解答?

請參閱 針對組建和發行進行疑難解答。

我無法選取預設的代理程式集區,而且無法將組建或發行排入佇列。 如何修正此問題?

請參閱 代理程式集區

我的 NuGet 推送工作失敗,發生下列錯誤:「錯誤:無法取得本機簽發者憑證」。 如何修正此問題?

可以透過新增受信任的根憑證來修正。 您可以將 NODE_EXTRA_CA_CERTS=file 環境變數新增至組建代理程式,也可以在您的管道中新增 NODE.EXTRA.CA.CERTS=file 工作變數。 如需此變數的詳細資料,請參閱 Node.js 文件。 如需在管道中設定變數的指示,請參閱在管道中設定變數

我使用內部部署 TFS,但看不到其中一些功能。 為什麼呢?

部分功能僅適用於 Azure Pipelines ,但尚未提供內部部署。 如果您已 升級至最新版的 TFS,某些功能可在內部部署使用。