Бөлісу құралы:


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

Важно!

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

Узнайте больше о сроках поддержки и альтернативных вариантах.

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

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

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

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

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

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

Примечание

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

Android

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

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

Android Studio помещает пакеты встроенных приложений в project-name/module-name/build/outputs/bundle/ и apk в project-name/module-name/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

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

Пользовательская операционная система

Архивация сборки для приложений с помощью пользовательской операционной системы в .zip формате.

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

Примечание

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

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

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

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

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

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

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

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

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

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

Для использования этой функции требуется 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 а — .Example-App{app_name} Для приложения, принадлежащего организации, 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_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"
     }
    
  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.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
    
Распространение выпуска

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

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

    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 для распространения в Центре приложений. Сделайте выпуск обязательным, установив флажок Обязательное обновление на этапе проверки распространения выпуска, или вы можете использовать API.

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

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

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

Примечание

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

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