ビルドをリリースする
重要
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 Build を使用することもできます。 ブランチのビルド構成で自動的に配布するようにビルドを構成できます。
次のセクションでは、App Center で配布がサポートされているすべてのアプリの種類のファイルを作成する方法について説明します。
注意
アーカイブ (.zip、.ipa など) をアップロードする場合、アプリの圧縮されていない合計サイズは 4 GB 未満である必要があります。
Android
Android の場合は、署名されたアプリ バンドルまたは APK ファイルを生成する必要があります。 このプロセスの詳細については、 アプリのリリース準備に関する Google の公式ドキュメントを参照してください。
- マニフェストを更新し、Gradle ビルドが正しく構成されていることを確認します。
- Android Studio で、[署名付きバンドル/APK の生成] を選択>し、ウィザードの手順に従ってアプリ バンドルまたは APK をビルドします。
Android Studio では、ビルドされたアプリ バンドルを project-name/module-name/build/outputs/bundle/ に配置し、API を project-name/module-name/build/outputs/apk/ に配置します。
注意
Android アプリケーション バンドル (AAB) を配布すると、App Center によってユニバーサル APK が生成され、生成された署名キーで署名され、デバイスに配布されます。
iOS
iOS の場合は、アプリケーション用の IPA パッケージを生成する必要があります。 このプロセスの詳細については、Apple の公式ドキュメントを参照 してください。
- プロビジョニング プロファイル内のすべてのハードウェア デバイスの UDID を登録します。
- Xcode で[Product Archive]\ (製品>アーカイブ\) に移動して、アプリをアーカイブします。
- 適切なプロビジョニング プロファイルを使用してアーカイブをエクスポートします。
macOS
macOS の場合は、アプリ パッケージを生成する必要があります。 App Center では、種類が .app.zip、.pkg、または.dmgのアプリ パッケージのリリースがサポートされています。 このプロセスの詳細については、 Apple macOS の公式ドキュメントを参照してください。
- 1 つのデバイスを登録 するか、Apple 開発者アカウントに 複数のデバイスを登録 します。
- Xcode で[Product Archive]\ (製品>アーカイブ\) に移動して、アプリをアーカイブします。
- 適切なプロビジョニング プロファイルを使用してアーカイブをエクスポートします。
Windows
App Center では、、または の種類.appx
.msix
.appxbundle
.msi
.msixbundle
.appxupload
.msixupload
の Windows アプリ パッケージのリリースがサポートされています。.zip
AppX または MSIX 形式でアプリをパッケージ化する方法の詳細については、 Microsoft UWP の公式ドキュメントを参照してください。
カスタム オペレーティング システム
カスタム オペレーティング システムを使用してアプリのビルドを .zip 形式でアーカイブします。
パッケージの配布
注意
ダウンロード用のファイルを含むすべての install.appcenter.ms URL は、パブリックにアクセスできます。
App Center でパッケージを配布するには、App Center に移動し、アプリに移動し、[グループの配布>] に移動して [新しいリリース] を選択します。 ウィザードの手順に従って操作します。
最初の手順で、[ リリース ] 領域を選択してアップロードするファイルを参照するか、ファイルを領域にドラッグ アンド ドロップします。 アプリのオペレーティング システムとファイル拡張子によっては、App Center からリリースのバージョンとビルド番号の入力を求められる場合があります。 情報を入力し、[ 次へ] を選択します。
リリース ノートは、リリースの一部として、プレーンテキスト形式と Markdown 形式の両方で含めることができます。 [次へ] を選択します。
複数の 配布グループ またはテスト担当者でリリースを対象にすることができます。 App Center では、これらのテスト担当者と、選択したグループの一部であるユーザーがこのリリースを利用できるようにします。 [次へ] を選択します。
iOS アプリをリリースするときに、 テスト担当者のデバイスを自動的にプロビジョニングできます。 [次へ] を選択します。
リリースを確認します。 アプリで Distribute SDK を使用している場合は、リリースを必須にするように App Center を構成できます。 App Center がリリースを配布すると、宛先に設定されているすべてのテスト担当者に新しいバージョンの電子メール通知が送信されます。 [校繂] タブでテスト担当者に通知しないことを選択できます。最後に、[ 配布 ] を選択して、ファイルをテスト担当者にリリースします。
App Center コマンド ライン インターフェイスを使用した配布
警告
この機能を使用するには、App Center CLI 2.7 以降が必要です。
App Center CLI の コマンドをappcenter distribute release
使用してリリースを配布します。 次のコマンド例では、 という~/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}
は で、{app_name}
は ですExample-App
Example-User
。 組織が所有するアプリの場合、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
このコマンドは、、
splitab
、 などの名前splitaa
の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 ポータルでリリースを確認します。 3 つのエンドポイントは次のとおりです。
- 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}"
配布グループ ID は、そのグループの設定ページにあります。
より複雑なシナリオについては、複数の宛先に配布する要求を参照してください。 PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}
ビルドを Re-Release する
ビルドを別の配布グループにリリースするには、App Center の任意の場所から [リリースの配布>] に移動し、再配布するリリースを選択します。 リリースの詳細ページが開きます。 画面の右上隅にある [ 配布 ] ボタンを選択し、再リリース プロセスを開始する宛先を選択します。 ウィザードの手順に従い、最後に [ 配布 ] を選択して、リリースをグループまたはテスト担当者またはストアに送信します。
必須の更新
すべてのユーザーが同じバージョンのアプリを実行するように強制するには、リリースを必須にします。 この操作を行うと、選択した更新プログラムが App Center によってすべてのテストデバイスにインストールされます。
アプリで App Center Distribute SDK が使用されている場合にのみ、リリースを必須にすることができます。 リリースを配布するレビュー ステージで [ 必須の更新] チェック ボックスをオンにして、リリースを必須にするか、API を使用できます。
App Center で必須リリースを表示するには、[アプリ] > グループ > リリースの配布>を開きます。 必須リリースは赤い点で示されます。
リリースへのリンク
正常にリリースされると、テスト担当者は電子メール、App Center へのログイン、または直接リンクを使用してリリースにアクセスできます。
特定のリリースへのリンクは、プライベート移行先のリリース ページにあります。
注意
Android アプリケーション バンドル (AAB) は、ダウンロード ボタンをクリックしてリリース ページでダウンロードできます。 インストール可能な APK ファイル形式が必要な場合は、デバイスのインストール ポータル (https://install.appcenter.ms) を使用してください。 ダウンロード ボタンの横にある生成された QR コードの下にリンクがあります。
パブリック グループの [リリース] タブで、特定のリリースからパブリック宛先へのリンクを確認できます。