Como habilitar o Google Play App Signing


113

Acho que muitos desenvolvedores estão tentando aprender mais sobre o novo recurso Google Play App Signing apresentado no Google I / O 2017.

A capacidade de armazenar o keystore para assinar os aplicativos dentro do Google Play economiza o esforço de armazenar o keystore com segurança e pode ajudar o sistema a otimizar os APKs servidos a cada dispositivo, com base no hardware e nas características do sistema operacional.

Você pode ler mais sobre esse tópico na documentação oficial aqui: https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .

Com a seguinte resposta, explicarei um pouco melhor as etapas que você precisa seguir para fazer o upload do seu armazenamento de chaves original e como criar o novo armazenamento de chaves de upload, que você precisará para assinar o seu APK a partir deste ponto.

Respostas:


189

Este guia é voltado para desenvolvedores que já possuem um aplicativo na Play Store. Se você está começando com um novo aplicativo o processo é muito mais fácil e você pode seguir as orientações do parágrafo "Novos aplicativos" a partir daqui

Pré-requisitos que 99% dos desenvolvedores já possuem :

  1. Android Studio

  2. JDK 8 e após a instalação, você precisa configurar uma variável de ambiente em seu espaço de usuário para simplificar os comandos do terminal. No Windows x64, você precisa adicionar isto: C:\Program Files\Java\{JDK_VERSION}\binà Pathvariável de ambiente. (Se você não sabe como fazer isso, pode ler meu guia para adicionar uma pasta à Pathvariável de ambiente do Windows 10 ).

Etapa 0 : Abra o console do desenvolvedor do Google Play e vá para Gerenciamento de versão -> Assinatura de aplicativo .

insira a descrição da imagem aqui

Aceite os TOS de assinatura de aplicativo.

insira a descrição da imagem aqui

Passo 1 : Baixe a Ferramenta PEPK clicando no botão idêntico à imagem abaixo

insira a descrição da imagem aqui

Etapa 2 : abra um terminal e digite:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OUTPUT_FILE --encryptionkey = GOOGLE_ENCRYPTION_KEY

Lenda:

  • PATH_TO_PEPK = Caminho para pepk.jar que você baixou na Etapa 1 , pode ser algo como C:\Users\YourName\Downloads\pepk.jarpara usuários do Windows.
  • PATH_TO_KEYSTORE = Caminho para o armazenamento de chaves que você usa para assinar seu APK de lançamento. Pode ser um arquivo do tipo * .keystore ou * .jks ou sem extensão. Algo como C:\Android\mykeystoreou C:\Android\mykeystore.keystoreetc ...
  • ALIAS_YOU_USE_TO_SIGN_APK = O nome do alias que você usa para assinar o APK de lançamento.
  • PATH_TO_OUTPUT_FILE = O caminho do arquivo de saída com extensão .pem, algo comoC:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Esta chave de criptografia deve ser sempre a mesma. Você pode encontrá-lo na página App Signing, copiá-lo e colá-lo. Deve estar neste formato:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Exemplo:

java -jar "C: \ Usuários \ SeuNome \ Downloads \ pepk.jar" --keystore = "C: \ Android \ mykeystore" --alias = myalias --output = "C: \ Android \ private_key.pem" - encryptionkey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cdb489de6

Pressione Enter e você precisará fornecer em ordem:

  1. A senha do keystore
  2. A senha do alias

Se tudo tiver corrido bem, agora você terá um arquivo chamado na pasta PATH_TO_OUTPUT_FILE private_key.pem.

Etapa 3 : Faça upload do arquivo private_key.pem clicando no botão idêntico à imagem abaixo

insira a descrição da imagem aqui

Etapa 4 : Crie um novo arquivo de armazenamento de chaves usando o Android Studio.

VOCÊ PRECISA DESTA KEYSTORE NO FUTURO PARA ASSINAR OS PRÓXIMOS LANÇAMENTOS DO SEU APP, NÃO ESQUEÇA AS SENHAS

Abra um de seus projetos Android (escolha um aleatoriamente). Vá para Build -> Generate Signed APK e pressione Create new .

insira a descrição da imagem aqui

Agora você deve preencher os campos obrigatórios.

O caminho do armazenamento de chaves representa o novo armazenamento de chaves que você criará, escolha uma pasta e um nome usando o ícone de 3 pontos à direita, eu C:\Android\upload_key.jksescolhi (a extensão .jks será adicionada automaticamente)

NOTA: Usei uploadcomo o novo nome de alias, mas se você já usou o mesmo keystore com diferentes aliases para assinar aplicativos diferentes, você deve escolher o mesmo nome de alias que tinha anteriormente no keystore original.

insira a descrição da imagem aqui

Pressione OK quando terminar e agora você terá um novo upload_key.jksarmazenamento de chaves. Você pode fechar o Android Studio agora.

Etapa 5 : precisamos extrair o certificado de upload do upload_key.jksarmazenamento de chaves recém-criado . Abra um terminal e digite:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -arquivo PATH_TO_OUTPUT_FILE

Lenda:

  • UPLOAD_KEYSTORE_PATH = O caminho do armazenamento de chaves de upload que você acabou de criar. Neste caso, foi C:\Android\upload_key.jks.
  • UPLOAD_KEYSTORE_ALIAS = O novo alias associado ao armazenamento de chaves de upload. Neste caso, foi upload.
  • PATH_TO_OUTPUT_FILE = O caminho para o arquivo de saída com extensão .pem. Algo parecido C:\Android\upload_key_public_certificate.pem.

Exemplo:

keytool -export -rfc -keystore "C: \ Android \ upload_key.jks" -alias upload -file "C: \ Android \ upload_key_public_certificate.pem"

Pressione Enter e você precisará fornecer a senha do keystore.

Agora se tudo tiver corrido bem, você terá um arquivo na pasta PATH_TO_OUTPUT_FILE chamado upload_key_public_certificate.pem .

Etapa 6 : Faça upload do upload_key_public_certificate.pemarquivo clicando no botão idêntico à imagem abaixo

insira a descrição da imagem aqui

Etapa 7 : Clique no botão INSCREVER-SE no final da página de assinatura de aplicativo.

insira a descrição da imagem aqui

Agora, cada novo APK de lançamento deve ser assinado com o upload_key.jksarmazenamento de chaves e aliases criados na Etapa 4 , antes de ser carregado no console do desenvolvedor do Google Play.

Mais recursos:

Q&A

P: Quando eu carrego o APK assinado com o novo upload_key keystore, o Google Play mostra um erro como: Você carregou um APK não assinado. Você precisa criar um APK assinado .

R: Marque para assinar o APK com ambas as assinaturas (V1 e V2) ao compilar o APK de lançamento. Leia aqui para mais detalhes.

ATUALIZADA

A etapa 4,5,6 é para criar uma chave de upload, que é opcional para aplicativos existentes

"Chave de upload (opcional para aplicativos existentes): uma nova chave que você gera durante sua inscrição no programa. Você usará a chave de upload para assinar todos os APKs futuros antes de enviá-los para o Play Console." https://support.google.com/googleplay/android-developer/answer/7384423


3
Seu passo a passo é muito útil! Eles devem colocá-lo no site oficial lol Os nomes dos caminhos para seus exemplos estão sem as aspas "_", o que gerará um erro no console W10
NukeouT

3
As aspas são necessárias apenas se você tiver pelo menos um espaço dentro de seus caminhos, mas é assim que todos os comandos do console funcionam. Portanto, você deve usar as aspas se o seu caminho for: "C:\My Path\MyName"mas não se o caminho for C:\MyPath\MyName. A propósito, obrigado :)
MatPag

1
@layth A criação do novo armazenamento de chaves é a Step 4do guia: D
MatPag

1
Fiz isso, mas quando recebi sua nova caixa de diálogo de armazenamento de chave, seus campos de caminho e senha de armazenamento de chave estavam em branco, então eu os apontei para o armazenamento de chave antigo e digitei sua senha antiga - btw atualmente preso em "keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS - arquivo PATH_TO_OUTPUT_FILE "continua reclamando que não sabe o que o keytool significa. Tentei adicionar "C: \ Arquivos de programas \ Java \ jdk1.8.0_25 \ bin \ keytool.exe" mas não funcionou, possivelmente porque não sei onde colocá-lo exatamente ..
NukeouT

9
Parece que o Google mudou o procedimento, porque não consigo mais encontrar a ferramenta PEPK.
Andrea Motto de

31

Existe uma solução muito mais simples que levará um minuto.

  1. No Google Play Console, selecione Gerenciamento de versão -> Assinatura de aplicativo
  2. Escolha a primeira opção, aquela com Gerar chave privada criptografada com Android Studio (ou algo parecido; não posso voltar para ver essa página mais)
  3. No Android Studio, gere seu Android App Bundle (arquivo .aap) em Build -> Generate Signed Bundle / APK ... , escolha a opção Android App Bundle e não se esqueça de marcar Exportar chave criptografada (necessária para inscrever seu aplicativo Google Play App opção de assinatura) . Se você não tiver um keystore gerado, gere um ad-hoc.
  4. Agora a parte "complicada". Depois que o .aap for gerado, o Android Studio exibirá uma notificação pop-up no canto inferior direito contendo um caminho para o local onde o arquivo .aap foi salvo. Na mesma notificação, se você a expandir, encontrará outro link para o caminho onde a chave privada foi salva (chamado private_key.pepk ). Se você perder esta notificação, não se preocupe, apenas abra a janela Log de eventos clicando no botão Log de eventos no canto inferior direito e você encontrará as mesmas informações. Abra esse local. Para mim, era C: \ Users \ yourUser \ .android

insira a descrição da imagem aqui

  1. Volte no navegador e pressione o botão APP SIGNING PRIVATE KEY e navegue até o local da chave privada em seu computador.

Feito!

Agora você pode fazer upload do seu release gerado anteriormente :) Boa sorte!


1
É a melhor e mais simples resposta
Simon

Economizei muito tempo e, mais importante, paz de espírito
Meenohara

Não estou recebendo esta opção Exportar chave criptografada (necessária para inscrever seu aplicativo no Google Play App Signing).
Jarvis

Eu realmente gostaria de uma explicação mais completa do ponto 5 - Não vejo este botão, onde está, talvez o layout tenha mudado nas atualizações recentes?
androidneil de

ok legal agora eu quero ficar curioso sobre isso na próxima atualização o que fazer ?? como se precisamos da chave .pepk novamente ou temos que assinar a versão 2 usando a mesma chave ou a nova chave privada .pepk por favor
Sunil Chaudhary

15

Ao migrar o arquivo do pacote do aplicativo Android (APK) para o Android App Bundle (AAB), publicando o aplicativo na Play Store, enfrentei esse problema e fui resolvido assim a seguir ...

Ao construir o .aabarquivo, você será solicitado a fornecer o local para armazenar o caminho de exportação da chave, conforme abaixo:

insira a descrição da imagem aqui
insira a descrição da imagem aqui Na segunda imagem, você encontra o caminho de exportação da chave criptografada Local onde nosso .pepk será armazenado na pasta específica ao gerar o arquivo .aab.

Depois de fazer login no Google Play Console com a credencial da Play Store: selecione seu projeto do lado esquerdo, escolha a opção de assinatura de aplicativo Gerenciamento de versão >> Assinatura de aplicativo insira a descrição da imagem aqui

você encontrará a janela de certificação do Google App Signing ACEITAR.

Depois disso, você encontrará três botões de opção, selecione **

Faça upload de uma chave exportada do botão de opção do Android Studio

**, irá expandir o botão APP SIGNING PRIVATE KEY como abaixo

insira a descrição da imagem aqui

clique no botão e escolha o .pepkarquivo (Armazenamos ao gerar.aab arquivo como acima)

Leia todas as outras opções e envie.

Assim que tiver sucesso, você pode voltar ao lançamento do aplicativo e navegar no arquivo .aab e concluir o RollOut ...

@Ambilpura


ok legal agora eu quero ficar curioso sobre isso na próxima atualização o que fazer ?? como se precisamos da chave .pepk novamente ou temos que assinar a versão 2 usando a mesma chave ou a nova chave privada .pepk por favor
Sunil Chaudhary

Pelo que entendi, não há necessidade de criar para a próxima vez, você pode usar a chave .pepk antiga ....
Ambilpura Sunil Kumar

Como você usa o .pepk para uma atualização? Usei com sucesso a assinatura do Google app ao enviar meu aplicativo, mas agora estou tentando forçar uma atualização e não sei como @AmbilpuraSunilKumar
nt95

O mesmo aqui. Acabei de enviar o abb para a Play Store e ignorar completamente o arquivo .pepk. Seria bom saber para que exatamente ele é bom e o que fazer ao atualizar o aplicativo.
Julian Eggers

4

Eu tive que fazer o seguinte:

  1. Crie um aplicativo no console do Google Play insira a descrição da imagem aqui

2. Vá para versões de aplicativos -> Gerenciar produção -> Criar versão

3. Clique em continuar no Google Play App Signing insira a descrição da imagem aqui

4.Crie o certificado de upload executando "keytool -genkey -v -keystore c: \ path \ to \ cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000"

5. Assine seu apk com o certificado gerado (c: \ path \ to \ cert.keystore)

6. Faça upload do apk assinado nas versões do aplicativo -> Gerenciar produção -> Editar versão

7.Ao fazer o upload do apk, o certificado gerado na etapa 4 foi adicionado aos certificados de assinatura de aplicativo e se tornou seu certificado de assinatura para todas as compilações futuras.


1
Fiz exatamente isso, mas o login do Google em meu aplicativo não funciona se eu instalar o aplicativo por meio da Google Play Store. * Mas * se eu baixar o apk da página de gerenciamento de versão e instalá-lo manualmente no meu emulador / dispositivo, ele funciona. Alguma ideia do que estou perdendo?
Raghudevan Shankar

Procurei em todos os lugares por cerca de 3 horas e você finalmente me salvou!
Oliver Dixon

3

Ao usar o Fabric para lançamentos beta públicos (assinado com a configuração do prod), NÃO USE o Google Play App Signing. Você deve depois de construir dois apks assinados!

Quando você distribui para mais lojas de jogos (samsung, amazon, xiaomi, ...) você deve construir novamente dois apks assinados.

Portanto, tenha muito cuidado com o Google Play App Signing.

Não é possível reverter: / e o Google Play não aceitou depois de apks assinados com chave de produção. Depois de ativar o Google Play App Signing, apenas a chave de upload é aceita ...

Isso realmente complica a distribuição de CI ...

Próximos problemas com atualização: https://issuetracker.google.com/issues/69285256


1
DON'T USEComentários com letras maiúsculas em negrito são perigosos. Você pode explicar o problema e a solução recomendada em detalhes? Não existe uma solução? É tão difícil assinar um APK duas vezes para o Fabric?
Gokhan Arik

1
Não é tão difícil assinar o APK duas vezes, mas como eu descrevo, você deve construir dois (ou mais) APKs que não sejam idênticos (então você está testando no Fabric Beta um arquivo diferente do que será publicado na Play Store). É ponto frouxo de construção de teste de produção em testadores beta ... você está testando outro arquivo :). É apenas um aviso para as pessoas que têm algum CI / CD complexo que devem alterá-lo ...
mtrakal

2
Observe que o Google Play agora aceita APKs assinados com a chave de produção, mesmo depois de se inscrever na assinatura do aplicativo.
Pierre de

2

Faça o seguinte :

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button

Depois disso, posso testar na compra de aplicativos e executar serviços como antes? Você teve alguma experiência a respeito disso? Porque mesmo eu não gosto de dar passos pesados.
Siddharth de

1
Não é realmente uma resposta apropriada para "Como ativar o Google Play App Signing" ...
Ben Madsen,

2
E o que você sugere como forma adequada de fazer isso?
Sterling Diaz
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.