Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Центр приложений Visual Studio был прекращен 31 марта 2025 г., за исключением функций аналитики и диагностики, которые будут поддерживаться до 30 июня 2026 г. Подробнее.
Отправьте двоичный пакет приложения в Центр приложений, чтобы распространить его. Центр приложений поддерживает распространение пакетов для приложений android, iOS, macOS, Windows и пользовательских операционных систем. Вы можете распространять выпуски отдельным тестировщикам или группам тестировщиков. Для приложений iOS и Android можно также выпускать в магазины, такие как Google Play, Магазин приложений и Intune. См. статью "Публикация в потребительских и корпоративных магазинах".
На этой странице вы узнаете, как создать двоичный файл для выпуска, а также как отправить и освободить его в группы с помощью портала, интерфейса командной строки (CLI) и интерфейса программирования приложений (API).
Вы также можете использовать Azure DevOps или Jenkins:
- Azure DevOps использует задачу распространения в Центре приложений (версия 3+)
- Плагин Jenkins (версия 0.11.0+).
Создание двоичного пакета приложения
Сначала необходимо упаковить приложение в двоичный файл для выпуска. Этот файл можно создать вручную.
В следующих разделах объясняется, как создать файлы для всех типов приложений App Center, поддерживаемых для распространения.
Замечание
Если вы собираетесь отправить архив (.zip, IPA и другие), общее количество несжатого размера приложения должно быть меньше 4 ГБ.
Андроид
Для Android необходимо создать подписанный пакет приложений или APK-файл. Полные сведения об этом процессе см. в официальной документации Google по подготовке приложения к выпуску.
- Убедитесь, что вы обновили манифест и правильно настроили сборку Gradle.
- В Android Studio выберите "Создать>подписанный пакет" или "APK" и выполните действия мастера по созданию пакета приложений или APK.
Android Studio помещает встроенные пакеты приложений в имя проекта/имя модуля/build/outputs/bundle/ и APK-файлы в имя проекта/имя модуля/build/outputs/apk/.
Замечание
При распространении пакета приложений Android (AAB) Центр приложений создает универсальный APK-файл, подписывает его с помощью созданного ключа подписи и распространяет его на устройство.
iOS
Для iOS необходимо создать пакет IPA для приложения. Полные сведения об этом процессе см. в официальной документации Apple.
- Зарегистрируйте идентификаторы UDID для всех аппаратных устройств в профиле распределения.
- В Xcode перейдите в Продукт>Архивировать, чтобы создать архив приложения.
- Экспортируйте архив с использованием соответствующего профиля подготовки.
macOS
Для macOS необходимо создать пакет приложения. Центр приложений поддерживает выпуск пакетов приложений типа .app.zip, .pkg или .dmg. Полные сведения об этом процессе см. в официальной документации apple macOS.
- Зарегистрируйте одно устройство или зарегистрируйте несколько устройств в учетной записи разработчика Apple.
- В Xcode перейдите в Продукт>Архивировать, чтобы создать архив приложения.
- Экспортируйте архив с использованием соответствующего профиля подготовки.
Виндоус
Центр приложений поддерживает выпуск пакетов приложений 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:
Создание новой загрузки выпуска: конечная точка для вызова 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}" }Скопируйте параметры из ответа на предыдущем шаге, так как большинство из них используются на следующем шаге, включая
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" }-
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-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После завершения отправки обновите состояние
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После отправки ожидается небольшая задержка, прежде чем отправка будет помечена как завершенная. Опрос состояния, чтобы получить
$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}/store
Пример для групп:
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-кодом рядом с кнопкой скачивания.
Ссылки на определенные релизы можно найти на вкладке "Релизы" в общедоступных группах.