Conceitos do Android (para desenvolvedores da Web)

Peter Conn
Peter Conn
Joyce Toh
Joyce Toh

Se você é um desenvolvedor Web que está começando a usar o Android e o Google Play, veja alguns detalhes que você deve que você precisa conhecer. Já existem vários recursos e documentações para isso (graças à biblioteca mas aqui vamos destacar alguns conceitos importantes e como eles se relacionam com o Bubblewrap.

Chave de upload versus chave de assinatura

Se você planeja usar o Bubblewrap para gerar um Android App Bundle (AAB). Observação: a partir de agosto o Google Play exigirá que todos os novos apps usem o formato Android App Bundle) ou APK para fazer upload e publicar no Google Play, será preciso assinar o app com uma chave de assinatura. Google O Google Play oferece duas opções para você lidar com isso:

  • Assinatura de apps do Google Play (altamente recomendado): o Google vai gerenciar e proteger a chave de assinatura do app. para você. Ele é usado para assinar seus APKs para distribuição. A Assinatura de apps do Google Play usa duas chaves. O aplicativo chave de assinatura" que o Google vai gerenciar para você e a "chave de upload" que você guarda e deve permanecer privados para você. A chave de upload é usada para assinar o app antes de fazer upload no Play Console. Isso sistema permite redefinir a chave de upload caso ela seja perdida ou comprometida, entrar em contato com a equipe de suporte do Google Play. Atualmente, o Google Play permite fazer upload do app como um AAB ou APK:
    • Android App Bundle (AAB): quando você fizer upload de um AAB para o Play Console, adiar a criação e a geração de APKs para o Google Play Store Quando um usuário faz o download e instala seu app, o Google Play o distribui como um APK assinado. Portanto, a assinatura dos APKs também precisará ser feita Google Play Por padrão, se você fizer upload do seu app como um AAB no Play Console, ele vai exigem o uso da Assinatura de apps do Google Play.
    • APK: com os APKs, você pode ativar a Assinatura de apps do Google Play. Ativando o app Google Play A assinatura é altamente recomendada porque aumenta a segurança da sua chave de assinatura. Conforme observado antes, o Google Play em breve vai exigir que todos os novos apps sejam enviados no formato AAB. recomendamos fazer isso em vez de fazer o upload de APKs.
  • Gerenciar sua própria chave de assinatura: se você optar por gerenciar sua própria chave e não ativar o app do Google Play Assinatura, você é totalmente responsável pela chave de assinatura do seu app. Ao contrário da Assinatura de apps do Google Play, não será possível redefini-la em caso de perda da chave. Portanto, perder a chave de assinatura do app significa também não poderá mais atualizar o app.

Durante a configuração do bubblewrap init, quando você chegar à parte "Informações da chave de assinatura (5/5)", você precisará inserir um "Local do repositório de chaves" e "Nome da chave" ou usar os padrões. A o local padrão do repositório de chaves é o arquivo android.keystore no diretório do projeto e o nome da chave é android. Se o Bubblewrap não encontrar um keystore existente com o nome dessa chave no local, ele criará uma conta e solicitará senhas. Anote as senhas que você inseriu porque vai precisar deles durante o processo de build (bubblewrap build), em que vai usar o para assinar seu app. Se você ativar a Assinatura de apps do Google Play, a chave de assinatura do Bubblewrap gerada e usada para assinar seu app se torna a "chave de upload". Se você optar por usar Chave gerada pelo Bubble wrap como chave de assinatura ou de upload. Proteja e mantenha a chave privada. Não recomendamos a confirmação do controle de versões. Em vez disso, limite o número de indivíduos com acesso a ele.

Os Links de recursos digitais são necessários para declarar a relação entre seu site e o Android app. Para garantir que seu app Android gerado pelo Bubblewrap seja verificado corretamente e seja iniciado como um Atividade confiável na Web (em vez de uma guia personalizada do Chrome), será necessário adicionar a chave adequada a seu arquivo assetlinks.json. Em seguida, faça o upload dele no seu site em .well-known/assetlinks.json (relativo à raiz). Seu arquivo assetlinks.json precisa seguir este formato:

[{
 "relation": ["delegate_permission/common.handle_all_urls"],
 "target": {
   "namespace": "android_app",
   "package_name": "com.your.package_name",
   "sha256_cert_fingerprints": [
     "XX:XX:XX:..."
   ]
 }
}]

Receber a impressão digital do certificado SHA256

Para criar o arquivo assetlinks.json, você precisa da impressão digital do certificado SHA 256 associada pela chave de assinatura do app. É importante observar que as impressões digitais associadas suas chaves de assinatura e upload serão diferentes. É importante manter essa distinção em mente, especialmente se você observar seu aplicativo sendo iniciado como uma guia personalizada do Google Chrome (com a barra do navegador visível). Então, é provável que seu arquivo assetlinks.json não tenha a que corresponda à chave adequada.

É útil ter a impressão digital do certificado de assinatura e de upload no arquivo assetlinks.json para depurar seu aplicativo localmente com mais facilidade. Consulte Como adicionar mais chaves abaixo para mais informações sobre como ter as duas chaves no arquivo assetlinks.json.

Existem algumas maneiras diferentes de obter a impressão digital, que serão detalhadas nas próximas seções. Todos eles devem fornecer as mesmas impressões digitais, então fique à vontade para escolher o método que for mais conveniente.

Pelo Play Console

Se você ativar ou não a Assinatura de apps do Google Play, poderá ter uma ou duas chaves. Para recuperar a impressão digital SHA256 apropriada para cada chave:

  1. Acesse o Play Console.
  2. Selecione o app do seu interesse
  3. No menu de navegação à esquerda, em Versão, acesse Configuração -> Integridade do app.
  4. Copie o SHA256 para a chave apropriada:

Recuperar a impressão digital do certificado SHA256 apropriada para sua chave de upload ou assinatura

  • Chave de assinatura: copie a impressão digital SHA256 do Certificado da chave de assinatura do app. Isso corresponderá ao seu aplicativo se você fizer o download na Google Play Store, já que O Google Play distribui seu app assinado com a chave de assinatura.

  • Chave de upload: copie a impressão digital SHA256 do Certificado da chave de upload. Isso corresponderá ao seu aplicativo se você instalá-lo localmente (via ADB via USB para exemplo). Esse APK (na sua máquina local) foi criado pela Bubblewrap e, portanto, assinado pela a chave que ele criou para você também (durante a configuração do init). Lembre-se de que esta pode ser chave de assinatura do app instalado localmente, mas ela se torna a "chave de upload" uma vez até que você publique seu app no Google Play.

Via keytool

keytool é uma chave e uma ferramenta de gerenciamento de certificados. Você pode usar o keytool para extrair a impressão digital SHA 256 associada à o APK ou Bubblewrap do AAB gerado. Observe que essa impressão digital é para a chave de assinatura local e se você fizer upload do app no Google Play e ativar a Assinatura de apps do Google Play, essa chave se tornará a "chave de upload".

keytool -printcert -jarfile [path to APK or AAB] | grep SHA256

Outra maneira de fazer o download do arquivo Digital Asset Links correto para o app é usar a Asset Link Tool:

  1. Instale a Asset Link Tool pela Play Store.
  2. No mesmo dispositivo, faça o download do app na Google Play Store ou instale-o localmente.
  3. Abra o aplicativo da ferramenta de link de ativo para exibir uma lista de todos os aplicativos instalados no seu dispositivo pelo nome do pacote. Filtrar a lista pelo ID do aplicativo que você escolheu anteriormente bubblewrap init e clique nessa entrada.
  4. Você verá uma página listando a assinatura do seu app e um Digital Asset Link gerado. Clique no dos botões "Copiar" ou "Compartilhar" na parte de baixo para exportar como quiser (por exemplo, salvar no Google Keep, envie por e-mail para si mesmo).

A mesma ideia se aplica de antes com as chaves de assinatura ou de upload. Se você instalou seu app do Na Google Play Store, a ferramenta de vinculação de recursos receberá a impressão digital da chave de assinatura do app. Se instalou o app diretamente da máquina local, a impressão digital será da chave; Balão gerado.

Agora que você fez o upload, verifique se consegue acessar o arquivo do link de recurso em um navegador. Verifique se https://example.com/.well-known/assetlinks.json é resolvido para o arquivo que você acabou de enviar.

Sites baseados em Jekyll

Se o site for gerado pelo Jekyll (como páginas do GitHub), será preciso adicionar uma linha de código para que o diretório .well-known seja incluído na saída. A ajuda do GitHub traz mais informações sobre esse tópico (link em inglês). Crie um arquivo chamado _config.yml na raiz do seu site (ou adicione-o se já existir). insira:

# Folders with dotfiles are ignored by default.
include: [.well-known]

Como adicionar mais chaves

Um arquivo do Digital Asset Link pode conter mais de um app e, para cada app, ele pode conter mais de uma chave. Por exemplo, para adicionar uma segunda chave, basta usar o Asset Link Tool para determinar a chave e adicioná-la como uma segunda entrada. O código no Chrome que analisa esse JSON é bastante rigoroso. Por isso, não adicione acidentalmente um vírgula extra no final da lista.

[{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
},{
  "relation": ["delegate_permission/common.handle_all_urls"],
  "target": {
    "namespace": "android_app",
    "package_name": "com.your.package_name",
    "sha256_cert_fingerprints": [
      "XX:XX:XX:..."
    ]
  }
}]

Solução de problemas

O Chrome registra o motivo da falha na verificação do Digital Asset Links, e é possível consultar os registros Dispositivo Android com adb logcat. Se você estiver desenvolvendo em Linux/Mac, poderá ver os registros relevantes de um dispositivo conectado por:

> adb logcat -v brief | grep -e OriginVerifier -e digital_asset_links

Por exemplo, se aparecer a mensagem Statement failure matching fingerprint., use o A ferramenta de vinculação de recursos para conferir a assinatura do app e verificar se ela corresponde à assinatura do assetlinks.json .