次の方法で共有


ビルドをリリースする

重要

Visual Studio App Center は、2026 年 6 月 30 日まで引き続きサポートされる分析機能と診断機能を除き、2025 年 3 月 31 日に廃止されました。 詳細を参照してください。

アプリケーション バイナリ パッケージを App Center にアップロードして配布します。 App Center では、Android、iOS、macOS、Windows、およびカスタム オペレーティング システム アプリのパッケージ配布がサポートされています。 リリースは、個々のテスターまたはテスト担当者のグループに配布できます。 iOS および Android アプリケーションの場合は、Google Play、App Store、Intune などのストアにリリースすることもできます。 「 コンシューマー ストアとエンタープライズ ストアに発行する」を参照してください。

このページでは、リリース用のバイナリを生成する方法と、ポータル、コマンド ライン インターフェイス (CLI)、アプリケーション プログラミング インターフェイス (API) を使用して、バイナリをグループにアップロードしてリリースする方法について説明します。

Azure DevOps または Jenkins を使用することもできます。

アプリケーション バイナリ パッケージの生成

まず、リリースのためにアプリケーションをバイナリ ファイルにパッケージ化する必要があります。 このファイルは手動で作成できます。

次のセクションでは、App Center で配布用にサポートされるすべてのアプリの種類のファイルを作成する方法について説明します。

アーカイブ (.zip、.ipa など) をアップロードする場合、アプリの非圧縮サイズの合計は 4 GB 未満である必要があります。

アンドロイド

Android の場合は、署名されたアプリ バンドルまたは APK ファイルを生成する必要があります。 このプロセスの詳細については、 アプリのリリース準備に関する Google の公式ドキュメントを参照してください。

  1. マニフェストが更新され、Gradle ビルドが正しく構成されていることを確認します。
  2. Android Studio で、[ ビルド>Generate Signed Bundle /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 の公式ドキュメントを参照 してください

  1. プロビジョニング プロファイル内のすべてのハードウェア デバイスの UDID を登録します。
  2. Xcode で >Archive に移動してアプリをアーカイブします。
  3. 適切なプロビジョニング プロファイルを使用してアーカイブをエクスポートします。

macOS

macOS の場合は、アプリ パッケージを生成する必要があります。 App Center では、.app.zip、.pkg、または.dmgの種類のアプリ パッケージのリリースがサポートされています。 このプロセスの詳細については、 Apple macOS の公式ドキュメントを参照してください

  1. 1 つのデバイスを登録 するか、Apple 開発者アカウントに 複数のデバイスを登録 します。
  2. Xcode で >Archive に移動してアプリをアーカイブします。
  3. 適切なプロビジョニング プロファイルを使用してアーカイブをエクスポートします。

ウィンドウズ

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 アプリをリリースするときに、 テスターのデバイスを自動的にプロビジョニングできます。 [次へ] を選択します。

リリースを確認します。 アプリで Distribute SDK を使用している場合は、リリースを必須にするように App Center を構成できます。 App Center は、リリースを配布すると、移行先で設定されたすべてのテスト担当者に新しいバージョンの電子メール通知を送信します。 [レビュー] タブでテスターに通知しないことを選択できます。最後に、[ 配布 ] を選択して、ファイルをテスターにリリースします。

App Center コマンド ライン インターフェイスを使用した配布

警告

この機能を使用するには、App Center CLI 2.7 以降が必要です。

appcenter distribute release コマンドを使用してリリースを配布します。 次のコマンド例では、~/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 呼び出しを使用して、新しいリリースをアップロードします。

  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_idupload_domain&url_encoded_tokenなど、ほとんどのパラメーターが次の手順で使用されるため、前の手順の応答からパラメーターをコピーします。

    アプリ パッケージのサイズをバイト単位で決定します。 正確なバイト数を取得するには、 wc -c ExampleApp.ipa などのコマンドを使用することをお勧めします。

    アプリに基づいてMIME Typecontent_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
    

    このコマンドは、tempsplitaa などの名前のsplitab ディレクトリに順次ファイルを生成します。 各ファイルは、 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 ポータルでリリースを確認します。 3 つのエンドポイントは次のとおりです。

グループの例:

    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 コードの下にリンクがあります。

パブリック グループの [リリース] タブには、特定のリリースからパブリック宛先へのリンクがあります。 パブリック ディープ リンク