這很重要
Visual Studio App Center 於 2025 年 3 月 31 日淘汰,但分析和診斷功能除外,這些功能將持續支援到 2026 年 6 月 30 日。 瞭解更多資訊。
將您的應用程式二進位套件上傳至 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支援散發之所有應用程式類型的檔案。
備註
如果您要上傳封存盤(.zip、.ipa 和其他檔案),則應用程式的未壓縮大小總計必須小於 4GB。
安卓
針對 Android,您必須產生已簽署的應用程式套件組合或 APK 檔案。 如需此過程的完整詳細資訊,請參閱 準備應用程式發行的官方 Google 文件。
- 請確定您已 更新指令清單 ,並已正確 設定 Gradle 組建。
- 在 Android Studio 中,選擇 [建>置產生簽署的套件組合/APK],並遵循精靈中的步驟來建置應用程式套件組合或 APK。
Android Studio 會將建置的應用程式套件組合放在 project-name/module-name/build/outputs/bundle/ 和將 APK 放在 project-name/module-name/build/outputs/apk/。
備註
當您散發 Android 應用程式套件組合 (AAB),App Center 會產生通用 APK、使用產生的簽署金鑰簽署它,並將它散發至裝置。
iOS
針對 iOS,您必須為您的應用程式產生 IPA 套件。 如需此程式的完整詳細數據,請參閱 官方 Apple 檔。
- 為布建配置檔中的所有硬體裝置註冊 UDID。
- 在 Xcode 中,移至 [產品>封存 ] 以封存您的應用程式。
- 使用適當的配置檔匯出封存檔案。
macOS
針對 macOS,您必須產生應用程式套件。 App Center 支援發行類型為 .app.zip、.pkg 或 .dmg 的應用程式套件。 如需此程式的完整詳細數據,請參閱 官方 Apple macOS 檔。
窗戶
App Center 支援發行類型為 .appx
、.appxbundle
、.appxupload
、.msi
、.msix
、.msixbundle
、.msixupload
或 .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
的檔案散發至由 Beta testers
擁有的應用程式 My-App
的群組 David
。
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
這個固定值,您可以將應用程式上傳分割成循序區塊以上傳至 Distribute。 例如,您可以使用split
公用程式,如下所示:split -b $CHUNK_SIZE $RELEASE_FILE_LOCATION temp/split
此命令會在名為
temp
、splitaa
等的splitab
目錄中產生循序檔案。 每個檔案都會在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 代碼下方找到連結。
您可以在公用群組的 [發行] 索引標籤上,找到特定版本至公用目的地的連結。