Выпуск сборки
Важно!
Прекращение поддержки Центра приложений Visual Studio запланировано на 31 марта 2025 г. Хотя вы можете продолжать использовать Центр приложений Visual Studio, пока он не будет полностью выведен из эксплуатации, существует несколько рекомендуемых вариантов, на которые вы можете рассмотреть возможность миграции.
Узнайте больше о сроках поддержки и альтернативных вариантах.
Отправьте двоичный пакет приложения в Центр приложений, чтобы распространить его. Центр приложений поддерживает распространение пакетов для приложений Android, iOS, macOS, Windows и пользовательских приложений операционной системы. Выпуски можно распространять среди отдельных тестировщиков или групп тестировщиков. Для приложений iOS и Android можно также выпускать в такие магазины, как Google Play, App Store и Intune. См . статью Публикация в потребительских и корпоративных магазинах.
На этой странице вы узнаете, как создать двоичный файл для выпуска, а также как отправить и освободить его в группы с помощью портала, интерфейса командной строки (CLI) и интерфейса программирования приложений (API).
Вы также можете использовать Azure DevOps или Jenkins:
- Azure DevOps использует задачу распространения в Центре приложений (версия 3+)
- Подключаемый модуль Jenkins (версия 0.11.0+).
Создание двоичного пакета приложения
Сначала необходимо упаковыть приложение в двоичный файл для выпуска. Этот файл можно создать вручную или использовать сборку Центра приложений. Вы можете настроить сборку для автоматического распространения в конфигурации сборки ветви.
В следующих разделах объясняется, как создать файлы для всех типов приложений, поддерживаемых Центром приложений для распространения.
Примечание
Если вы собираетесь отправить архив (.zip, .ipa и другие), общий размер несжатого приложения должен быть меньше 4 ГБ.
Android
Для 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) Центр приложений создает универсальный пакет APK, подписывает его с помощью созданного ключа подписи и распространяет его на устройство.
iOS
Для iOS необходимо создать пакет IPA для приложения. Полные сведения об этом процессе см. в официальной документации Apple.
- Зарегистрируйте UDID для всех аппаратных устройств в профиле подготовки.
- В Xcode перейдите вархивпродукта>, чтобы архивировать приложение.
- Экспортируйте архив, используя соответствующий профиль подготовки.
macOS
Для macOS необходимо создать пакет приложения. Центр приложений поддерживает выпуск пакетов приложений типа .app.zip, .pkg или .dmg. Полные сведения об этом процессе см. в официальной документации apple macOS.
- Зарегистрируйте одно устройство или несколько устройств в учетной записи разработчика Apple.
- В Xcode перейдите вархивпродукта>, чтобы архивировать приложение.
- Экспортируйте архив, используя соответствующий профиль подготовки.
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:
Создание отправки нового выпуска. Вызов конечной точки — 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
Эта команда создает последовательные файлы в каталоге
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
Распространение выпуска
Раздайте отправленный выпуск тестировщикам, группам или магазинам, чтобы увидеть его на портале Центра приложений. Ниже перечислены три конечные точки.
- 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 сборки
Чтобы выпустить сборку в другую группу рассылки, в любом месте Центра приложений перейдите к разделу Распространение > выпусков и выберите выпуск, который вы хотите распространить снова. Откроется страница сведений о выпуске. Нажмите кнопку Распространить в правом верхнем углу экрана и выберите место назначения, чтобы начать процесс повторного выпуска. Выполните действия, описанные в мастере, и, наконец, выберите Распространить , чтобы отправить выпуск группам или тестировщикам или магазину.
Обязательные Обновления
Сделайте выпуск обязательным, чтобы все пользователи запускали одну и ту же версию приложения. После этого Центр приложений установит выбранное обновление на всех устройствах тестировщика.
Выпуск можно сделать обязательным только в том случае, если ваше приложение использует пакет SDK для распространения в Центре приложений. Сделайте выпуск обязательным, установив флажок Обязательное обновление на этапе проверки распространения выпуска, или вы можете использовать API.
Вы можете просмотреть обязательные выпуски в Центре приложений, открыв [Ваше приложение] > Распространение > выпусков групп>. Обязательные выпуски обозначены красной точкой.
Ссылка на выпуски
После успешного выпуска тестировщики смогут получить доступ к выпуску по электронной почте, войти в Центр приложений или по прямой ссылке.
Ссылки на конкретные выпуски можно найти на странице выпуска для частных назначений.
Примечание
Пакеты приложений Android (AAB) можно скачать на странице выпуска, нажав кнопку скачивания. Если вам нужен формат файла APK с возможностью установки, используйте портал установки (https://install.appcenter.ms) на своем устройстве. Вы можете найти ссылку под созданным QR-кодом рядом с кнопкой скачивания.
Ссылки на конкретные выпуски для общедоступных назначений можно найти на вкладке Выпуски в общедоступных группах.