1. Antes de começar
Neste codelab, você vai aprender a usar o Firebase App Distribution e o plug-in fastlane para distribuir um app iOS para testadores, coletar UDIDs de dispositivos de teste e registrá-los no perfil de provisionamento do app. Assim, você pode enviar builds ad hoc rapidamente para os testadores.
O que você vai aprender
- Como fazer upload e distribuir um app iOS de pré-lançamento (Ad Hoc) para testadores usando o App Distribution do Firebase e o fastlane.
- Como se inscrever como testador e fazer o download do app distribuído em um dispositivo de teste.
- Como registrar dispositivos de teste rapidamente exportando UDIDs do dispositivo de teste com o plug-in fastlane do App Distribution.
- Como atualizar o perfil de provisionamento do app e fazer o upload novamente para distribuição.
Pré-requisitos
- Uma Conta do Google
- Uma máquina Apple com o XCode 11.7 ou mais recente instalado
- Um app iOS de pré-lançamento ad hoc criado no Xcode
- Uma conta paga de desenvolvedor da Apple
- Um dispositivo iOS físico para testes.
O app simulador do iOS funciona para a maior parte do codelab, mas os simuladores não podem fazer o download de versões.
Para verificar se a configuração funcionou, confira se o botão "Download" aparece no app da Web do testador de distribuição de apps.
2. Primeiros passos
Configurar o fastlane
O App Distribution é integrado ao fastlane para permitir que você automatize a distribuição de builds de pré-lançamento do seu app. O App Distribution é integrado à configuração do fastlane.
- Instale e configure o fastlane.
- Execute
fastlane init
no diretório raiz do projeto durante a configuração e escolha "Configuração manual". Você vai encontrar um subdiretório chamadofastlane
, que contémFastfile
,Appfile
ePluginfile
, que serão usados para configurar a faixa rápida.
Instalar a CLI do Firebase
Você também vai precisar instalar a CLI do Firebase. Se estiver usando macOS ou Linux, você poderá executar o seguinte comando cURL:
curl -sL https://firebase.tools | bash
Se você estiver usando o Windows, leia as instruções de instalação para conseguir um binário independente ou instalar pelo npm
.
Depois de instalar a CLI, executar firebase --version
informará uma versão de 12.0.0
ou mais recente:
$ firebase --version 12.0.0
3. Criar seu app com o fastlane
Criar seu app
- Defina algumas variáveis globais para fastlane no seu
./fastlane/Appfile.
. Inclua o ID do app e seu ID Apple:
app_identifier("<your app's bundle identifier>")
apple_id("<your Apple id>")
- Crie sua primeira faixa e use a ação
build_app
da fastlane (também conhecida comogym
) para criar seu app adicionando o seguinte à./fastlane/Fastfile
:
default_platform(:ios)
lane :build do
build_app(export_method: "ad-hoc")
end
- Assine seu app para distribuição.
Neste codelab, você vai gerenciar sua própria certificação e seu perfil usando o get_certificates
(também conhecido como cert
), que gera certificados de assinatura localmente e armazena tudo no seu conjunto de chaves do macOS. No entanto, normalmente é recomendado usar o fastlane sync_code_signing action
(também conhecido como match
) para gerenciar com segurança os perfis e certificados de assinatura de código da sua equipe.
lane :build do
get_certificates()
build_app(export_method: "ad-hoc")
end
- Configure um perfil de provisionamento para o app usando a ação
get_provisioning_profile
(também conhecida comosigh
). Assim, você pode compartilhar o app com testadores.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
- [Opcional] Se você nunca executou o app, execute o comando a seguir para criar o app no console do desenvolvedor da Apple:
$ fastlane produce --skip_itc
- Por fim, execute a faixa para criar o app.
Você precisará informar seu ID Apple, sua senha (armazenada no seu Keychain) e o ID do pacote do seu app.
$ fastlane build
Se você tiver algum problema, consulte o guia de solução de problemas da fastlane.
4. Fazer upload do seu app no Firebase
Agora que você criou o app, está tudo pronto para fazer o upload dele para a distribuição de apps.
Criar e configurar um projeto do Firebase
- Faça login no Firebase.
- No Console do Firebase, crie ou adicione um novo projeto e nomeie-o como "UDID Export Codelab".
Você não precisa ativar o Google Analytics neste projeto.
- Clique em Criar projeto.
Adicionar o app iOS ao projeto
- Clique no ícone do iOS para criar um novo app iOS do Firebase e insira o ID do pacote do app.
- Pule as próximas etapas e clique em Continuar no console. Você vai adicionar SDKs ao app mais tarde.
Seu projeto e app agora estão disponíveis na página Visão geral do projeto.
Ativar o App Distribution
- Na seção "Lançamento e monitoramento", clique em Distribuição de apps.
- Depois de aceitar os termos, clique em "Começar". para ativar o App Distribution para seu app.
Configurar uma distribuição no fastlane
- Execute o comando abaixo na raiz do seu projeto iOS para adicionar o App Distribution à configuração do fastlane.
Se o comando solicitar uma opção, selecione Opção 3: RubyGems.org:
$ fastlane add_plugin firebase_app_distribution
- Confirme se o plug-in está instalado:
$ fastlane
A saída vai mostrar fastlane-plugin-firebase_app_distribution
na lista de plug-ins instalados.
- Depois de confirmar que o plug-in foi instalado, escolha a opção 0 para cancelar.
Autenticar seu projeto do Firebase
Para usar o plug-in fastlane, primeiro faça a autenticação do seu projeto do Firebase.
- Execute o seguinte comando para conectar a CLI à sua Conta do Google:
$ firebase login
- Quando o comando imprimir um link de autenticação, abra-o em um navegador.
- Quando solicitado, faça login na sua Conta do Google e conceda permissão para acessar seu projeto do Firebase.
Distribuir seu app
Agora está tudo pronto para distribuir o app.
- Na parte de cima do
./fastlane/Fastfile
, defina uma variável com o nomefirebase_app_id
. Substitua<your_app_id>
pelo ID do app do Firebase que você criou. Ele pode ser encontrado na página de configurações do projeto.
O Fastfile
é escrito em Ruby. Portanto, use a sintaxe do Ruby para definir variáveis.
firebase_app_id = "<your_app_id>"
- Adicione uma nova faixa chamada
distribute
, que chama a faixa de build e distribui o app usando a açãofirebase_app_distribution
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
- Execute a nova faixa para criar o app e uma distribuição.
$ fastlane distribute
Neste ponto, seu Fastfile vai ficar assim:
firebase_app_id = "<your Firebase app ID>"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
)
end
Depois de atualizar o Console do Firebase, você verá a nova versão do app.
5. Convidar testadores para fazer o download do app
Quando um testador aceita um convite para testar um build ad hoc, ele precisa permitir o compartilhamento do UDID. Se eles concordarem, o App Distribution vai coletar as informações do dispositivo e enviar uma notificação por e-mail. Nesta seção, você vai se adicionar como testador para fazer o download e testar o app que distribuiu.
Participar como testador da versão
- Em
firebase_app_id
, na parte de cima do Fastfile, crie uma variável para armazenar testadores e inclua seu próprio endereço de e-mail, bem como outros endereços de e-mail opcionais que você gostaria de testar.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
- Aplique o método Array#join do Ruby para transformar a matriz
app_testers
em uma string separada por vírgulas, esperada pelo parâmetrotesters
. Em seguida, transmita o resultado para o parâmetrotesters
defirebase_app_distribution.
.
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
Neste ponto, seu Fastfile vai ficar assim:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
- Execute a faixa novamente.
$ fastlane distribute
Depois que você executar a faixa, os testadores adicionados vão receber um e-mail de convite do App Distribution notificando a versão recém-disponível. No Console do Firebase, agora é possível conferir os testadores adicionados na versão do app.
Como você incluiu seu endereço de e-mail, vai receber um e-mail do Firebase App Distribution convidando você a testar o app. Você é o primeiro testador! Continue a seção abaixo para se preparar como um testador no dispositivo de teste.
Registrar o dispositivo de teste
Como testador, você precisará fazer login no Google no seu dispositivo de teste para acessar as versões de apps que foi convidado a testar. Como seu build de teste é uma versão ad hoc, você também precisará registrar seu dispositivo de teste instalando o perfil do Firebase. Depois disso, as versões disponíveis poderão ser acessadas no app da Web para testadores do App Distribution usando o clipe da Web adicionado à tela inicial do dispositivo.
- No dispositivo de teste iOS, abra o e-mail enviado pelo Firebase App Distribution e toque no link Vamos começar. Abra o link no Safari.
- Agora você está no app da Web do testador do App Distribution. Na página que aparece, faça login com sua Conta do Google e toque em Aceitar convite.
- Agora você pode ver os lançamentos para os quais recebeu convite. Toque em Registrar dispositivo em uma das versões.
- Quando solicitado, faça o download do perfil do Firebase e instale-o no app Configurações.
A instalação do perfil concede ao Firebase permissão para:
- Registre o dispositivo de teste coletando o ID exclusivo do dispositivo (UDID).
O Firebase envia um e-mail a todos os proprietários e editores do projeto do Firebase que inclui o UDID do dispositivo de teste.
- Instale um clipe da Web na tela inicial do dispositivo de teste. O clipe da Web abre o app da Web do testador do App Distribution, que permite instalar e acessar todos os apps de teste.
No app da Web do testador do App Distribution, seu dispositivo de teste agora está registrado para a versão do app.
Agora que você compartilhou o UDID do dispositivo de teste com o Firebase, pode retomar o desenvolvimento. Na guia Testadores do painel do App Distribution, as informações do testador agora aparecem abaixo da versão do app com o status "Aceito":
Na próxima seção, você adicionará o UDID do dispositivo ao perfil de provisionamento do seu app e, em seguida, criará uma versão do app que funcione com o dispositivo de teste.
Exportar os UDIDs do dispositivo de teste
Como desenvolvedor, você vai receber um e-mail do Firebase com o UDID do dispositivo de teste. Como opção, a App Distribution facilita a coleta de vários UDIDs de dispositivos novos de uma só vez, permitindo que você os exporte diretamente do Console do Firebase como um arquivo de texto bruto.
- Para exportar todos os UDIDs, abra a guia Testadores e grupos.
- Clique em Exportar UDIDs da Apple.
O arquivo precisa conter o UDID do dispositivo de teste.
Device ID Device Name Device Platform
1234567890 udid.codelab.tester@gmail.com - iPhone SE 2nd Gen ios
Os UDIDs também podem ser exportados pela linha de comando usando o fastlane. Isso será feito na próxima seção.
6. Atualizar e recriar o perfil de provisionamento do app
Agora, adicione o UDID do dispositivo de teste ao perfil de provisionamento do app, recrie uma versão do app que funcione no dispositivo e distribua a nova versão.
Adicionar lane de exportação de UDID
- Adicione outra variável na parte de cima do arquivo Fastfile e defina-a como um caminho de arquivo em que os UDIDs dos dispositivos dos testadores serão transferidos por download.
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
- Configure uma nova linha que use a ação de exportação de UDID do plug-in do App Distribution para fazer o download dos UDIDs do testador, assim como você fez no console.
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
- Execute a faixa a seguir para fazer o download dos UDIDs.
$ fastlane download_udids
- Imprima o arquivo transferido por download, que precisa conter os UDIDs do dispositivo de teste.
$ cat tester_udids.txt
Adicionar dispositivos ao console do desenvolvedor da Apple
- Crie a linha a seguir para adicionar os UDIDs à lista de dispositivos no Console para desenvolvedores da Apple e adicioná-los ao perfil de provisionamento usando a ação
register_devices
do fastlane :
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
- Em seguida, execute a faixa:
$ fastlane add_new_devices
Você verá os novos dispositivos na lista de dispositivos do console do desenvolvedor.
Adicionar dispositivos ao perfil de provisionamento
- Adicione o argumento
force
à etapa do perfil de provisionamento na linhabuild
para forçá-lo a escolher novos dispositivos sempre que você criar.
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
Executar a faixa novamente para criar e fazer upload
Agora, você vai atualizar a faixa distribute
com as novas faixas para adicionar os dispositivos ao perfil de provisionamento, recriar o app e distribuí-lo.
- Chame as novas faixas de
distribute
:
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: "1:123456789:ios:abcd1234",
release_notes: "Try out this app!"
testers: app_testers.join(","),
)
end
- Execute a faixa
distribute
:
$ fastlane distribute
Neste ponto, seu Fastfile vai ficar assim:
firebase_app_id = "<your Firebase app ID>"
app_testers = [
"your@email.com",
"another@email.com",
]
tester_udids_file = "tester_udids.txt"
default_platform(:ios)
lane :build do
get_certificates()
get_provisioning_profile(adhoc: true, force: true)
build_app(export_method: "ad-hoc")
end
lane :distribute do
download_udids
add_new_devices
build
firebase_app_distribution(
app: firebase_app_id,
release_notes: "Try out this app!",
testers: app_testers.join(","),
)
end
lane :download_udids do
firebase_app_distribution_get_udids(
app: firebase_app_id,
output_file: tester_udids_file,
)
end
lane :add_new_devices do
register_devices(devices_file: tester_udids_file)
end
Faça o download da versão no dispositivo de teste
Agora que o app inclui os UDIDs do dispositivo de teste, eles podem ser instalados nos dispositivos de teste.
- No dispositivo de teste, retorne ao app da Web do testador do App Distribution usando o link no e-mail ou o ícone na tela inicial do dispositivo.
Ao navegar até o app do codelab da UDID, você vai notar que a versão está pronta para download.
- Se você estiver usando um dispositivo físico, pressione "Download" e instale e execute o app.
7. Parabéns
Agora você configurou o App Distribution e o fastlane para automatizar o processo de teste de pré-lançamento. Agora, quando quiser convidar outros testadores ou adicionar os UDIDs deles ao app, você só vai precisar executar um comando: fastlane distribute
.
Não é mais necessário coletar UDIDs individualmente dos testadores nem acessar o Apple Developer Console para atualizar listas de dispositivos ou perfis de provisionamento. Você nem precisa abrir o XCode.
Esse fluxo de trabalho é fácil de configurar para execução a cada hora ou diariamente no seu ambiente de integração contínua.
Leitura adicional
- Conheça os recursos do Firebase App Distribution, incluindo o SDK no app para iOS.
- Saiba mais sobre o fastlane.
- Gerencie a assinatura de código da sua equipe com o
match
- Integrar o fastlane à sua CI