Поделиться через


Выпуск сборки

Это важно

Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.

Отправьте двоичный пакет приложения в Центр приложений, чтобы распространить его. Центр приложений поддерживает распространение пакетов для приложений android, iOS, macOS, Windows и пользовательских операционных систем. Вы можете распространять выпуски отдельным тестировщикам или группам тестировщиков. Для приложений iOS и Android можно также выпускать в магазины, такие как Google Play, Магазин приложений и Intune. См. статью "Публикация в потребительских и корпоративных магазинах".

На этой странице вы узнаете, как создать двоичный файл для выпуска, а также как отправить и освободить его в группы с помощью портала, интерфейса командной строки (CLI) и интерфейса программирования приложений (API).

Вы также можете использовать Azure DevOps или Jenkins:

Создание двоичного пакета приложения

Сначала необходимо упаковить приложение в двоичный файл для выпуска. Этот файл можно создать вручную.

В следующих разделах объясняется, как создать файлы для всех типов приложений App Center, поддерживаемых для распространения.

Замечание

Если вы собираетесь отправить архив (.zip, IPA и другие), общее количество несжатого размера приложения должно быть меньше 4 ГБ.

Андроид

Для Android необходимо создать подписанный пакет приложений или APK-файл. Полные сведения об этом процессе см. в официальной документации Google по подготовке приложения к выпуску.

  1. Убедитесь, что вы обновили манифест и правильно настроили сборку Gradle.
  2. В Android Studio выберите "Создать>подписанный пакет" или "APK" и выполните действия мастера по созданию пакета приложений или APK.

Android Studio помещает встроенные пакеты приложений в имя проекта/имя модуля/build/outputs/bundle/ и APK-файлы в имя проекта/имя модуля/build/outputs/apk/.

Замечание

При распространении пакета приложений Android (AAB) Центр приложений создает универсальный APK-файл, подписывает его с помощью созданного ключа подписи и распространяет его на устройство.

iOS

Для iOS необходимо создать пакет IPA для приложения. Полные сведения об этом процессе см. в официальной документации Apple.

  1. Зарегистрируйте идентификаторы UDID для всех аппаратных устройств в профиле распределения.
  2. В Xcode перейдите в Продукт>Архивировать, чтобы создать архив приложения.
  3. Экспортируйте архив с использованием соответствующего профиля подготовки.

macOS

Для macOS необходимо создать пакет приложения. Центр приложений поддерживает выпуск пакетов приложений типа .app.zip, .pkg или .dmg. Полные сведения об этом процессе см. в официальной документации apple macOS.

  1. Зарегистрируйте одно устройство или зарегистрируйте несколько устройств в учетной записи разработчика Apple.
  2. В Xcode перейдите в Продукт>Архивировать, чтобы создать архив приложения.
  3. Экспортируйте архив с использованием соответствующего профиля подготовки.

Виндоус

Центр приложений поддерживает выпуск пакетов приложений Windows типа .appx, .appxbundle, .appxupload, .msi, .msix, , .msixbundle.msixuploadили .zip. Полные сведения о том, как упаковать приложение в форматах AppX или MSIX, см. в официальной документации по Microsoft UWP.

Настраиваемая операционная система

Архивируйте сборку приложений с кастомной операционной системой в формате .zip.

Распространение пакета

Замечание

Все install.appcenter.ms URL-адреса, содержащие файлы для скачивания, являются общедоступными.

Чтобы распространить пакет с помощью Центра приложений, перейдите в Центр приложений, перейдите в приложение, а затем перейдите в раздел "Распространение>групп " и выберите "Создать выпуск". Следуйте шагам мастера. Распространение нового выпуска

На первом шаге выберите область Release, чтобы найти файл, который вы хотите загрузить, или перетащите файл в данную область. В зависимости от операционной системы приложения и расширения файла Центр приложений может попросить ввести версию и номер сборки для выпуска. Введите сведения и нажмите кнопку "Далее".

Вы можете включить заметки о выпуске в свою публикацию как в виде обычного текста, так и в формате Markdown. Нажмите кнопку Далее.

Вы можете нацелить выпуск на несколько групп рассылки или тестировщиков. Центр приложений предоставляет этот выпуск тем тестировщикам и пользователям, которые являются частью выбранных групп. Нажмите кнопку Далее.

Настройка назначений выпуска

При выпуске приложения iOS вы можете автоматически подготовить устройства тестировщиков. Нажмите кнопку Далее.

Просмотрите выпуск. Если приложение использует пакет SDK для распространения, вы можете настроить Центр приложений, чтобы сделать выпуск обязательным. Когда Центр приложений распространяет выпуск, он отправляет уведомление по электронной почте о новой версии всем тестировщикам, заданным в местах назначения. Вы можете не уведомлять тестировщиков на вкладке проверки. Наконец, выберите "Распространить ", чтобы освободить файл для тестировщиков.

Распространение с помощью интерфейса командной строки Центра приложений

Предупреждение

Для использования этой функции вам потребуется 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

Вы можете вызвать API Центра приложений для распространения выпуска. Приведенный ниже подход предназначен для описания минимального рабочего подхода, многие из задач можно дополнительно настроить или автоматизировать.

Пример реализации можно увидеть здесь: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/blob/main/ac-distribute.sh

Предпосылки

  • Пакет приложения для отправки и распространения.
  • Получение маркера API. Маркер API используется для проверки подлинности для всех вызовов API Центра приложений.
  • Имя группы рассылки (необязательно, если отсутствует или недопустимо, загрузка всё равно завершится)
  • Определите {owner_name} и {app_name} для приложения, для которое вы хотите распространить выпуск. Эти идентификаторы используются в URL-адресе для вызовов API. Для приложения, принадлежащих пользователю, 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-aks.appcenter.ms",
             "token": "{TOKEN}",
             "url_encoded_token": "{URL_ENCODED_TOKEN}"
         }
    
  2. Скопируйте параметры из ответа на предыдущем шаге, так как большинство из них используются на следующем шаге, включая package_asset_idupload_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-aks.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
    

    Эта команда создает последовательные файлы в каталоге temp с именем splitaa, 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-aks.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-aks.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
    
Распространение выпуска

Распределите отправленный выпуск тестировщикам, группам или магазинам, чтобы просмотреть выпуск на портале Центра приложений. Три конечные точки:

Пример для групп:

    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 версия сборки

Чтобы освободить сборку в другую группу рассылки, в любом месте в Центре приложений перейдите в раздел "Распространение > выпусков ", а затем выберите выпуск, который вы хотите распространить снова. Откроется страница сведений о релизе. Нажмите кнопку "Распространить " в правом верхнем углу экрана и выберите место назначения, чтобы запустить процесс повторного выпуска. Выполните действия в мастере и, наконец, выберите "Распространить", чтобы отправить выпуск группам или тестировщикам или магазину.

Обязательные обновления

Сделайте выпуск обязательным для принудительного запуска всех пользователей одной и той же версии приложения. При этом Центр приложений установит выбранное обновление на всех устройствах тестировщика.

Вы можете сделать выпуск обязательным только в том случае, если ваше приложение использует SDK App Center Distribute. Сделайте выпуск обязательным, установив флажок "Обязательное обновление " на этапе проверки распространения выпуска или с помощью API.

Вы можете просматривать обязательные выпуски в Центре приложений, открыв [ваше приложение] > распространение выпусков > групп>. Обязательные выпуски указываются красной точкой.

После успешного выпуска тестировщики могут получить доступ к выпуску по электронной почте, войти в Центр приложений или напрямую по ссылке.

Ссылки на определенные выпуски можно найти на странице выпуска для частных назначений. кнопка

Замечание

Пакеты приложений Android (AAB) доступны для скачивания на странице выпуска, нажав кнопку скачивания. Если вам нужен формат файла APK для установки, используйте портал установки (https://install.appcenter.ms) на устройстве. Вы можете найти ссылку под созданным QR-кодом рядом с кнопкой скачивания.

Ссылки на определенные релизы можно найти на вкладке "Релизы" в общедоступных группах. Общедоступная глубокая ссылка