釋放組建

重要

Visual Studio App Center 已排定於 2025 年 3 月 31 日淘汰。 雖然您可以繼續使用 Visual Studio App Center,直到它完全淘汰為止,但有數個建議您考慮移轉至的建議替代方案。

深入瞭解支持時程表和替代方案。

將應用程式二進位套件上傳至 App Center 以加以散發。 App Center 支援 Android、iOS、macOS、Windows 和自定義作業系統應用程式的套件發佈。 您可以將發行散發給個別測試人員或測試人員群組。 針對 iOS 和 Android 應用程式,您也可以發行至 Google Play、App Store 和 Intune 等商店。 請參閱 發佈至消費者和企業商店

在此頁面上,您可以瞭解如何產生發行的二進位檔,以及如何使用入口網站將它上傳並發行至群組、命令行介面 (CLI) ,以及應用程式程式設計介面 (API) 。

您也可以使用 Azure DevOps 或 Jenkins:

產生應用程式二進位套件

首先,您必須將應用程式封裝成二進位檔以供發行。 您可以手動建立此檔案,或使用 App Center組建。 您可以將組建設定為在分支的組建組態中自動散發。

下列各節說明如何為App Center支援散發的所有應用程式類型建立檔案。

注意

如果您要上傳封存 (.zip、.ipa 和其他) ,則應用程式的總未壓縮大小必須小於 4GB。

Android

針對 Android,您必須產生已簽署的應用程式套件組合或 APK 檔案。 如需此程式的完整詳細數據,請參閱準備 應用程式以發行的官方 Google 檔

  1. 請確定您已 更新指令清單 ,並已正確 設定 Gradle 組建
  2. 在 Android Studio 中,選擇 [>置產生已簽署套件組合/ APK],並遵循精靈中的步驟來建置應用程式套件組合或 APK。

Android Studio 會將建置的應用程式套件組合放在 project-name/模組名稱/build/output/bundle/ 和 PROJECT-name/模組名稱/build/output/apk/中的 APK。

注意

當您將Android應用程式套件組合散發 (AAB) 時,App Center 會產生通用 APK、使用產生的簽署密鑰加以簽署,並將它散發至裝置。

iOS

針對 iOS,您必須為應用程式產生 IPA 套件。 如需此程式的完整詳細數據,請參閱官方 Apple 檔

  1. 在布建配置檔中註冊所有硬體裝置的 UDID
  2. 在 Xcode 中,移至 [產品>封存 ] 以封存您的應用程式。
  3. 使用適當的布建配置檔匯出封存。

macOS

針對 macOS,您必須產生應用程式套件。 App Center 支援發行類型為 .app.zip、.pkg或.dmg的應用程式套件。 如需此程式的完整詳細數據,請參閱官方 Apple macOS 檔

  1. 註冊單一裝置 ,或在Apple開發人員帳戶中 註冊多個裝置
  2. 在 Xcode 中,移至 [產品>封存 ] 以封存您的應用程式。
  3. 使用適當的布建配置檔匯出封存。

Windows

App Center 支援發行類型.appx為 、.appxbundle、、.appxupload.msi.msixbundle.msixupload.msix.zip的 Windows 應用程式套件。 如需如何以AppX或 MSIX 格式封裝應用程式的完整詳細數據,請參閱官方 Microsoft UWP 檔案

自訂作業系統

以自定義操作系統封存您的組建,其格式為 .zip。

散發套件

注意

可公開存取包含下載檔案的所有 install.appcenter.ms URL。

若要使用 App Center散發套件,請移至App Center,移至您的應用程式,然後移至 [散發>群組 ],然後選取[ 新版本]。 請依照精靈中的步驟執行。 散發新版本

在第一個步驟中,選擇 [發行 ] 區域以流覽您要上傳的檔案,或將檔案拖放到區域。 視您應用程式的作業系統和擴展名而定,App Center 可能會要求您輸入版本的版本和組建編號。 輸入資訊,然後選擇 [ 下一步]。

您可以在版本中包含版本資訊,同時以純文本或 Markdown 格式。 選擇 [下一步]。

您可以將發行的目標設為多個 通訊群組 或測試人員。 App Center 可讓屬於所選群組一部分的測試人員和使用者使用此版本。 選擇 [下一步]。

設定發行目的地

發行 iOS 應用程式時,您可以 自動布建測試人員的裝置。 選擇 [下一步]。

檢閱版本。 如果您的應用程式使用 散發 SDK,您可以設定 App Center 來強制發行。 當 App Center 發佈版本時,會將新版本的電子郵件通知傳送給目的地中設定的所有測試人員。 您可以選擇不要在 [檢閱] 索引標籤中通知測試人員。最後,選擇 [散發 ] 以將檔案釋放給測試人員。

使用 App Center 命令行介面進行散發

警告

您需要 App Center CLI 2.7 或更新版本才能使用此功能。

使用 appcenter distribute releaseApp Center CLI 中的 命令散發您的版本。 下列範例命令會將名為 ~/releases/my_app-23.ipa 的檔案散發至 所David擁有應用程式的My-App群組Beta testers

appcenter distribute release --app David/My-App --file ~/releases/my_app-23.ipa --group "Beta testers"

使用 API 進行散發

您可以呼叫 App Center API 來散發版本。 下列方法旨在描述最基本的工作方法,許多工作都可以進一步自定義或自動化。

您可以在這裡看到範例實作: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/blob/main/ac-distribute.sh

必要條件

  • 要上傳和散發的應用程式套件。
  • 取得 API 令牌。 API 令牌用於所有 App Center API 呼叫的驗證。
  • 如果遺失或無效,則通訊組名 (選擇性,上傳仍會完成)
  • {owner_name}識別您要散發發行之應用程式的 與 {app_name} 。 這些標識碼會用於 API 呼叫的 URL 中。 對於用戶擁有的應用程式,App Center 中的 URL 可能看起來像: https://appcenter.ms/users/Example-User/apps/Example-App。 在這裡, {owner_name}Example-User ,而 {app_name}Example-App。 對於組織所擁有的應用程式,URL 可能是 https://appcenter.ms/orgs/Example-Org/apps/Example-App{owner_name} 而會是 Example-Org
上傳新版本

使用這些循序 API 呼叫上傳新版本:

  1. 建立新版本上傳:要呼叫的端點是 POST /v0.1/apps/{owner_name}/{app_name}/uploads/releases

        OWNER_NAME="Example-Org"
        APP_NAME="Example-App"
        API_TOKEN="Example-Token"
    
        curl -X POST "https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases" -H  "accept: application/json" -H  "X-API-Token: $API_TOKEN" -H  "Content-Type: application/json" -H "Content-Length: 0"
    

    回應看起來會像這樣,並 {VARIABLE_NAME} 取代每個用途唯一的數據:

         {
             "id": "{ID}",
             "package_asset_id": "{PACKAGE_ASSET_ID}",
             "upload_domain": "https://file.appcenter.ms",
             "token": "{TOKEN}",
             "url_encoded_token": "{URL_ENCODED_TOKEN}"
         }
    
  2. 從上一個步驟中的回應複製參數,因為下一個步驟會使用大部分參數,包括 package_asset_id& upload_domainurl_encoded_token

    以位元組為單位決定應用程式套件的大小。 建議您使用 之類的 wc -c ExampleApp.ipa 命令來取得精確的位元組計數。

    MIME Type根據您的應用程式設定 : content_type

    • Android .apk 使用廠商類型 application/vnd.android.package-archive
    • Android .aab 使用廠商類型 application/x-authorware-bin
    • iOS 使用一般類型 application/octet-stream

    最後一個命令看起來應該像這樣:

    FILE_NAME="ExampleApp.apk"
    FILE_SIZE_BYTES=$(wc -c $RELEASE_FILE_LOCATION | awk '{print $1}')
    APP_TYPE='application/vnd.android.package-archive' # iOS uses `application/octet-stream` instead.
    
    METADATA_URL="https://file.appcenter.ms/upload/set_metadata/$PACKAGE_ASSET_ID?file_name=$FILE_NAME&file_size=$FILE_SIZE_BYTES&token=$URL_ENCODED_TOKEN&content_type=$APP_TYPE"
    
     curl -s -d POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" "$METADATA_URL"
    

    傳回的輸出看起來應該像這樣:

     {
         "error":false,
         "id":"{PACKAGE_ASSET_ID}",
         "chunk_size":4194304,
         "resume_restart":false,
         "chunk_list":[1,2,3,4,5],
         "blob_partitions":1,
         "status_code":"Success"
     }
    
  3. chunk_size使用無法自定義的值,您可以將應用程式上傳分割成循序區塊,以上傳至散發。 例如,您可以使用 split 公用程式,如下所示:

    split -b $CHUNK_SIZE $RELEASE_FILE_LOCATION temp/split
    

    此命令會在名為splitaasplitab等的目錄中產生循序檔案temp。 每個檔案都會在限制內 chunk_size 分割。

  4. 接下來,您必須使用個別區塊上傳分割應用程式套件的每個區塊:

    BLOCK_NUMBER=0
    
    for i in temp/*
    do
        BLOCK_NUMBER=$(($BLOCK_NUMBER + 1))
        CONTENT_LENGTH=$(wc -c "$i" | awk '{print $1}')
    
        UPLOAD_CHUNK_URL="https://file.appcenter.ms/upload/upload_chunk/$PACKAGE_ASSET_ID?token=$URL_ENCODED_TOKEN&block_number=$BLOCK_NUMBER"
    
        curl -X POST $UPLOAD_CHUNK_URL --data-binary "@$i" -H "Content-Length: $CONTENT_LENGTH" -H "Content-Type: $CONTENT_TYPE"
    done
    
  5. 上傳完成後,將上傳資源的狀態更新為 uploadFinished

    FINISHED_URL="https://file.appcenter.ms/upload/finished/$PACKAGE_ASSET_ID?token=$URL_ENCODED_TOKEN"
    curl -d POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" "$FINISHED_URL"
    
    COMMIT_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases/$ID"
    curl -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" \
    --data '{"upload_status": "uploadFinished","id": "$ID"}' \
    -X PATCH \
    $COMMIT_URL
    
  6. 上傳之後,上傳後會有短暫的延遲,才會將上傳標示為完成。 輪詢此狀態以取得 $RELEASE_ID 下一個步驟的 :

    RELEASE_STATUS_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases/$UPLOAD_ID"
    POLL_RESULT=$(curl -s -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" $RELEASE_STATUS_URL)
    RELEASE_ID=$(echo $POLL_RESULT | jq -r '.release_distinct_id')
    
    if [[ $RELEASE_ID == null ]];
    then
       echo "Failed to find release from appcenter"
       exit 1
    fi
    
  7. 最後,釋放組建。 要呼叫的端點是 PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}

    DISTRIBUTE_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/releases/$RELEASE_ID"
    
    curl -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" \
    --data '{"destinations": [{ "name": "'"$DISTRIBUTION_GROUP"'"}] }' \    
    -X PATCH \
    $DISTRIBUTE_URL
    
散發版本

將上傳的版本散發給測試人員、群組或市集,以查看App Center入口網站中的版本。 這三個端點包括:

群組的範例:

    curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" -d "{ \"id\": "$DISTRIBUTION_GROUP_ID", \"mandatory_update\": false, \"notify_testers\": false}" 

您可以在該群組的 [設定] 頁面上找到通訊群組識別碼。

若要在更複雜的案例中參考散發至多個目的地的要求: PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}

Re-Release 組建

若要將組建發行至另一個通訊群組,請從 App Center 中的任何位置移至 [散發 > 版本 ],然後選取您想要再次散發的版本。 發行詳細數據頁面隨即開啟。 選取畫面右上角的 [ 散發 ] 按鈕,然後選取目的地以開始重新發行程式。 請遵循精靈中的步驟,最後選取 [ 散發 ] 以將發行傳送給群組/測試人員或存放區。

強制 匯報

強制所有使用者執行相同版本的應用程式,強制發行。 當您這樣做時,App Center 會在所有測試人員裝置上安裝選取的更新。

如果您的應用程式使用App Center散發 SDK,您只能進行強制發行。 選取散發版本的檢閱階段中的 [ 強制更新 ] 複選框,或使用 API,以強制發行。

您可以開啟 [您的應用程式] > 散發 > 群組 > 版本,以在App Center中檢視強制版本。 強制版本會以紅色點表示。

成功發行之後,測試人員就可以透過電子郵件存取發行、登入App Center,或透過直接連結存取發行。

您可以在私人目的地的發行頁面上找到特定版本的連結。 安裝按鈕

注意

Android 應用程式套件組合 (AAB) 可透過按兩下 [下載] 按鈕,在發行頁面上下載。 如果您需要可安裝的 APK 檔案格式,請使用裝置上的安裝入口網站 (https://install.appcenter.ms) 。 您可以在下載按鈕旁邊的產生的 QR 代碼下方找到連結。

您可以在公用群組的 [發行] 索引標籤上,找到特定發行至公用目的地的連結。 公用深層連結