釋放組建
重要
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:
- Azure DevOps 使用 App Center 散發工作 (版本 3+)
- Jenkins 外掛程式 (版本 0.11.0+) 。
產生應用程式二進位套件
首先,您必須將應用程式封裝成二進位檔以供發行。 您可以手動建立此檔案,或使用 App Center組建。 您可以將組建設定為在分支的組建組態中自動散發。
下列各節說明如何為App Center支援散發的所有應用程式類型建立檔案。
注意
如果您要上傳封存 (.zip、.ipa 和其他) ,則應用程式的總未壓縮大小必須小於 4GB。
Android
針對 Android,您必須產生已簽署的應用程式套件組合或 APK 檔案。 如需此程式的完整詳細數據,請參閱準備 應用程式以發行的官方 Google 檔。
- 請確定您已 更新指令清單 ,並已正確 設定 Gradle 組建。
- 在 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 檔。
- 在布建配置檔中註冊所有硬體裝置的 UDID。
- 在 Xcode 中,移至 [產品>封存 ] 以封存您的應用程式。
- 使用適當的布建配置檔匯出封存。
macOS
針對 macOS,您必須產生應用程式套件。 App Center 支援發行類型為 .app.zip、.pkg或.dmg的應用程式套件。 如需此程式的完整詳細數據,請參閱官方 Apple macOS 檔。
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 release
App 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 呼叫上傳新版本:
建立新版本上傳:要呼叫的端點是 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}" }
從上一個步驟中的回應複製參數,因為下一個步驟會使用大部分參數,包括
package_asset_id
&upload_domain
url_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" }
- Android .apk 使用廠商類型
chunk_size
使用無法自定義的值,您可以將應用程式上傳分割成循序區塊,以上傳至散發。 例如,您可以使用split
公用程式,如下所示:split -b $CHUNK_SIZE $RELEASE_FILE_LOCATION temp/split
此命令會在名為
splitaa
、splitab
等的目錄中產生循序檔案temp
。 每個檔案都會在限制內chunk_size
分割。接下來,您必須使用個別區塊上傳分割應用程式套件的每個區塊:
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
上傳完成後,將上傳資源的狀態更新為
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
上傳之後,上傳後會有短暫的延遲,才會將上傳標示為完成。 輪詢此狀態以取得
$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
最後,釋放組建。 要呼叫的端點是 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入口網站中的版本。 這三個端點包括:
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/testers
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/groups
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/stores
群組的範例:
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 代碼下方找到連結。
您可以在公用群組的 [發行] 索引標籤上,找到特定發行至公用目的地的連結。