Liberar um build
Importante
O Visual Studio App Center está programado para ser desativado em 31 de março de 2025. Embora você possa continuar a usar o Visual Studio App Center até que ele seja totalmente desativado, há várias alternativas recomendadas para as quais você pode considerar a migração.
Carregue o pacote binário do aplicativo no App Center para distribuí-lo. O App Center dá suporte à distribuição de pacotes para aplicativos android, iOS, macOS, Windows e sistema operacional personalizado. Você pode distribuir versões para testadores individuais ou grupos de testadores. Para aplicativos iOS e Android, você também pode liberar para as lojas como o Google Play, o App Store e Intune. Consulte Publicar em repositórios corporativos e consumidores.
Nesta página, você pode aprender a gerar o binário para lançamento e como carregá-lo e liberá-lo em grupos usando o portal, a CLI (interface de linha de comando) e a API (interface de programação do aplicativo).
Você também pode usar o Azure DevOps ou o Jenkins:
- O Azure DevOps usa a Tarefa distribuir do App Center (versão 3+)
- Plug-in jenkins (versão 0.11.0+).
Gerando um pacote binário de aplicativo
Primeiro, você deve empacotar seu aplicativo em um arquivo binário para lançamento. Você pode criar esse arquivo manualmente ou usar o Build do App Center. Você pode configurar o Build para distribuir automaticamente na configuração de build de um branch.
As seções a seguir explicam como criar os arquivos para todos os tipos de aplicativos compatíveis com o App Center para distribuição.
Observação
Se você vai carregar arquivos (.zip, .ipa e outros), o tamanho total descompactado do aplicativo deve ser menor que 4 GB.
Android
Para Android, você deve produzir um pacote de aplicativo assinado ou um arquivo APK. Para obter detalhes completos desse processo, consulte a documentação oficial do Google sobre como preparar um aplicativo para lançamento.
- Verifique se você atualizou o manifesto e se tem um build do Gradle configurado corretamente.
- No Android Studio, escolha Criar>Gerar Pacote Assinado/APK e siga as etapas no assistente para criar o pacote de aplicativos ou o APK.
O Android Studio coloca pacotes de aplicativos criados em nome do projeto module-name//build/outputs/bundle/ e APKs emproject-name/module-name/build/outputs/apk/.
Observação
Quando você distribui o Pacote de Aplicativos do Android (AAB), o App Center gera um APK universal, assina-o com uma chave de assinatura gerada e a distribui para um dispositivo.
iOS
Para iOS, você deve produzir um pacote IPA para seu aplicativo. Para obter detalhes completos desse processo, consulte a documentação oficial da Apple.
- Registre UDIDs para todos os dispositivos de hardware em seu perfil de provisionamento.
- No Xcode, vá para Arquivo Morto do Produto> para arquivar seu aplicativo.
- Exporte o arquivo morto usando o perfil de provisionamento adequado.
macOS
Para macOS, você deve produzir um pacote de aplicativos. O App Center dá suporte à liberação de pacotes de aplicativos do tipo .app.zip, .pkg ou .dmg. Para obter detalhes completos desse processo, consulte a documentação oficial do MacOS da Apple.
- Registre um único dispositivo ou registre vários dispositivos em sua conta de desenvolvedor da Apple.
- No Xcode, vá para Arquivo Morto do Produto> para arquivar seu aplicativo.
- Exporte o arquivo morto usando o perfil de provisionamento adequado.
Windows
O App Center dá suporte à liberação de pacotes de aplicativos do Windows do tipo .appx
, .appxbundle
, .appxupload
, .msi
, .msix
, .msixbundle
, .msixupload
ou .zip
. Para obter detalhes completos sobre como empacotar seu aplicativo em formatos AppX ou MSIX, consulte a documentação oficial da UWP da Microsoft.
Sistema operacional personalizado
Arquive seu build para aplicativos com um sistema operacional personalizado no formato .zip.
Distribuindo o pacote
Observação
Todas as URLs install.appcenter.ms que contêm arquivos para download são publicamente acessíveis.
Para distribuir um pacote com o App Center, acesse o App Center, acesse seu aplicativo, vá para Distribuir>Grupos e selecione Nova versão. Siga as etapas no assistente.
Na primeira etapa, escolha a área Versão para procurar o arquivo que você deseja carregar ou arraste e solte o arquivo na área. Dependendo do sistema operacional do aplicativo e da extensão de arquivo, o App Center pode solicitar que você insira uma versão e um número de build para sua versão. Insira as informações e escolha Avançar.
Você pode incluir notas sobre a versão como parte de sua versão, tanto em texto sem formatação quanto no formato Markdown. Escolha Próxima.
Você pode direcionar sua versão para vários grupos de distribuição ou testadores. O App Center disponibiliza essa versão para os testadores e os usuários que fazem parte dos grupos selecionados. Escolha Próxima.
Ao lançar um aplicativo iOS, você pode provisionar automaticamente os dispositivos dos testadores. Escolha Próxima.
Examine a versão. Se o aplicativo usar o SDK de Distribuição, você poderá configurar o App Center para tornar a versão obrigatória. Quando o App Center distribui uma versão, ele envia uma notificação por email da nova versão para todos os testadores definidos nos destinos. Você pode optar por não notificar os testadores na guia de revisão. Por fim, escolha Distribuir para liberar o arquivo para os testadores.
Distribuição usando a interface de linha de comando do App Center
Aviso
Você precisa da CLI 2.7 ou mais recente do App Center para usar esse recurso.
Distribua sua versão usando o appcenter distribute release
comando na CLI do App Center. O comando de exemplo a seguir distribui um arquivo chamado ~/releases/my_app-23.ipa
para o grupo Beta testers
do aplicativo My-App
de propriedade de David
.
appcenter distribute release --app David/My-App --file ~/releases/my_app-23.ipa --group "Beta testers"
Distribuição usando a API
Você pode chamar a API do App Center para distribuir uma versão. A abordagem a seguir destina-se a descrever uma abordagem de trabalho mínima, muitas das tarefas podem ser personalizadas ou automatizadas.
Uma implementação de exemplo pode ser vista aqui: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/blob/main/ac-distribute.sh
Pré-requisitos
- O pacote do aplicativo a ser carregado e distribuído.
- Obter um token de API. Um Token de API é usado para autenticação para todas as chamadas à API do App Center.
- O Nome do Grupo de Distribuição (opcional, se ausente ou inválido, o upload ainda será concluído)
- Identifique o
{owner_name}
e{app_name}
para o aplicativo para o qual você deseja distribuir uma versão. Esses identificadores são usados na URL para as chamadas à API. Para um aplicativo de propriedade de um usuário, a URL no App Center pode ser semelhante a: https://appcenter.ms/users/Example-User/apps/Example-App. Aqui, o{owner_name}
éExample-User
e o{app_name}
éExample-App
. Para um aplicativo pertencente a uma organização, a URL pode ser https://appcenter.ms/orgs/Example-Org/apps/Example-App e a{owner_name}
seriaExample-Org
.
Carregar nova versão
Carregue uma nova versão usando estas chamadas sequenciais à API:
Criar um novo upload de versão: o ponto de extremidade a ser chamado é 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"
A resposta será semelhante a esta, com
{VARIABLE_NAME}
a substituição de dados exclusivos para cada uso:{ "id": "{ID}", "package_asset_id": "{PACKAGE_ASSET_ID}", "upload_domain": "https://file.appcenter.ms", "token": "{TOKEN}", "url_encoded_token": "{URL_ENCODED_TOKEN}" }
Copie os parâmetros da resposta na etapa anterior, pois a maioria deles é usada na próxima etapa, incluindo o
package_asset_id
,upload_domain
&url_encoded_token
.Determine o tamanho do pacote do aplicativo em bytes. É recomendável usar um comando como
wc -c ExampleApp.ipa
para obter uma contagem precisa de bytes.Defina o
MIME Type
para ocontent_type
com base em seu aplicativo:- O Android .apk usa o tipo de fornecedor
application/vnd.android.package-archive
- O Android .aab usa o tipo de fornecedor
application/x-authorware-bin
- O iOS usa o tipo geral
application/octet-stream
O comando final deve ter esta aparência:
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"
A saída retornada deve ser semelhante a esta:
{ "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" }
- O Android .apk usa o tipo de fornecedor
Usando o
chunk_size
valor que não pode ser personalizado, você pode dividir o upload do aplicativo em partes sequenciais para upload para Distribuir. Por exemplo, você pode usar osplit
utilitário da seguinte maneira:split -b $CHUNK_SIZE $RELEASE_FILE_LOCATION temp/split
Esse comando gera arquivos sequenciais no
temp
diretório chamadosplitaa
,splitab
e assim por diante. Cada arquivo é dividido dentro dochunk_size
limite.Em seguida, você precisa carregar cada parte do pacote de aplicativo dividido com o respectivo bloco:
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
Depois que o upload for concluído, atualize o status do recurso de upload para
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
Depois de carregado, há um pequeno atraso antes que o upload seja marcado como concluído. Sondagem para este status para obter o
$RELEASE_ID
para a próxima etapa: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
Por fim, libere o build. O ponto de extremidade a ser chamado é 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
Distribuir Versão
Distribua a versão carregada para testadores, grupos ou repositórios para ver a versão no portal do App Center. Os três pontos de extremidade são:
- 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
Um exemplo para grupos:
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}"
Você pode encontrar a ID do grupo de distribuição na página de configurações desse grupo.
A solicitação para distribuir para vários destinos é referenciada aqui para cenários mais complexos: PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}
Re-Release um build
Para liberar um build para outro grupo de distribuição, de qualquer lugar no App Center, acesse Distribuir > Versões e selecione a versão que você deseja distribuir novamente. A página de detalhes da versão é aberta. Selecione o botão Distribuir no canto superior direito da tela e selecione o destino para iniciar o processo de relançamento. Siga as etapas no assistente e, por fim, selecione Distribuir para enviar a versão para grupos/testadores ou para o repositório.
Atualizações obrigatório
Torne obrigatória uma versão para forçar todos os usuários a executar a mesma versão do seu aplicativo. Quando você fizer isso, o App Center instalará a atualização selecionada em todos os dispositivos testador.
Você só poderá tornar uma versão obrigatória se seu aplicativo usar o SDK de Distribuição do App Center. Torne obrigatória uma versão selecionando a caixa de seleção Atualização obrigatória no estágio de revisão da distribuição de uma versão ou você pode usar a API.
Você pode exibir versões obrigatórias no App Center abrindo [Seu Aplicativo] > Distribuir > Versões de Grupos>. As versões obrigatórias são indicadas por um ponto vermelho.
Vincular a versões
Depois de lançar com êxito, os testadores poderão acessar a versão por email, fazer logon no App Center ou por meio de um link direto.
Você pode encontrar links para versões específicas na página de lançamento para destinos privados.
Observação
Os Pacotes de Aplicativos do Android (AAB) estão disponíveis para download na página de lançamento clicando no botão baixar. Se você precisar de um formato de arquivo APK instalável, use o portal de instalação (https://install.appcenter.ms) em seu dispositivo. Você pode encontrar o link abaixo do código QR gerado ao lado do botão de download.
Você pode encontrar links para versões específicas para destinos públicos na guia versões em grupos públicos.