Assinar seu aplicativo

O Android exige que todos os APKs sejam assinados digitalmente com um certificado antes de serem instalados em um dispositivo ou atualizados. Ao fazer um lançamento usando Android App Bundles, é necessário assinar seu pacote de app com uma chave de upload antes de fazer upload dele para o Play Console, e a Assinatura de apps do Google Play cuida do resto. Para distribuição de apps com APKs na Play Store ou em outras lojas, é necessário assinar os APKs manualmente para upload.

Esta página guia você por alguns conceitos importantes relacionados à assinatura e segurança de apps e mostra como assinar seu app para lançamento no Google Play usando o Android Studio e como configurar a Assinatura de apps do Google Play.

Veja a seguir uma visão geral de alto nível das etapas que você pode precisar seguir para assinar e publicar um novo app no Google Play:

  1. Gerar uma chave de upload e um keystore
  2. Assinar seu app com a chave de upload
  3. Configurar a Assinatura de apps do Google Play
  4. Fazer upload do seu app no Google Play
  5. Preparar e lançar seu app

Se, em vez disso, seu app já estiver publicado na Google Play Store com uma chave de assinatura ou se você quiser escolher a chave de um novo app em vez de permitir que o Google gere uma, siga estas etapas:

  1. Assine seu app com a chave de assinatura.
  2. Faça upload da chave de assinatura do app na Assinatura de apps do Google Play.
  3. (Recomendado) Gere e registre um certificado de upload para atualizações futuras do seu app.
  4. Fazer upload do seu app no Google Play
  5. Preparar e lançar seu app

Esta página também explora como gerenciar suas próprias chaves ao enviar seu app para outras app stores. Se você não usa o Android Studio ou prefere assinar seu app na linha de comando, saiba como usar o apksigner.

Assinatura de apps do Google Play

Com a Assinatura de apps do Google Play, o Google gerencia e protege a chave de assinatura do app e a utiliza para assinar seus APKs para distribuição. Como os pacotes de app adiam a criação e assinatura de APKs para a Google Play Store, é necessário configurar a Assinatura de Apps do Google Play antes de fazer upload do pacote de app. Isso tem os seguintes benefícios:

  • Use o Android App Bundle e adicione suporte aos modos de entrega avançados do Google Play. O Android App Bundle deixa seu app muito menor, simplifica as versões e possibilita usar módulos de recursos e oferecer experiências instantâneas.
  • Aumente a segurança da sua chave de assinatura e ofereça o uso de uma chave de upload diferente para assinar o pacote de app enviado ao Google Play.
  • O upgrade de chave permite mudar a chave de assinatura do app caso a atual seja comprometida ou você precise migrar para uma chave criptograficamente mais forte.

A Assinatura de apps do Google Play usa duas chaves: a chave de assinatura do app e a chave de upload, que são detalhadas na seção sobre Chaves e keystores. Guarde a chave de upload para assinar seus apps quando fizer o upload deles para a Google Play Store. O Google usa o certificado de upload para verificar sua identidade e assina os APKs com a chave de assinatura do app para distribuição, como mostrado na Figura 1. Dessa forma, você pode solicitar uma redefinição da chave de upload caso sua chave seja perdida ou comprometida.

Como comparação, para apps que não ativaram a Assinatura de apps do Google Play, se você perder a chave de assinatura do app, não poderá mais atualizá-lo.

Figura 1. Assinar um aplicativo com a Assinatura de apps do Google Play.

Suas chaves são armazenadas na mesma infraestrutura usada para armazenar as chaves do Google. Lá, elas são protegidas pelo serviço de gerenciamento de chaves do Google. Saiba mais sobre a infraestrutura técnica do Google na Documentação de segurança do Google Cloud (em inglês).

Se você perder sua chave de upload ao usar a Assinatura de aplicativos do Google Play ou se ela for comprometida, solicite a redefinição da chave de upload no Play Console. Como a chave de assinatura do seu app é protegida pelo Google, você pode continuar fazendo upload de novas versões do app como atualizações da versão original, mesmo que mude de chave de upload. Para saber mais, leia Redefinir uma chave de upload privada perdida ou comprometida.

A próxima seção descreve alguns termos e conceitos importantes relacionados à assinatura e segurança de apps. Se preferir avançar e aprender a preparar o app para upload na Google Play Store, acesse Assinar seu app para lançamento.

Keystores, chaves e certificados

Keystores Java (.jks ou .keystore) são arquivos binários que servem como repositórios de certificados e chaves privadas.

Um certificado de chave pública (arquivos .der ou .pem), também conhecido como certificado digital ou certificado de identidade, contém a chave pública de um par de chaves pública/privada, bem como alguns outros metadados (por exemplo, nome e local) que identificam o proprietário detentor da chave privada correspondente.

Veja a seguir os diferentes tipos de chaves que você precisa entender:

  • Chave de assinatura do app: chave usada para assinar APKs instalados no dispositivo de um usuário. Como parte do modelo de atualização segura do Android, a chave de assinatura nunca é alterada durante o ciclo de vida do app. A chave de assinatura do app é privada e precisa ser mantida em segredo. No entanto, é possível compartilhar o certificado gerado usando sua chave de assinatura do app.
  • Chave de upload: chave usada para assinar o pacote de apps ou o APK antes do envio para Assinatura de apps com o Google Play. A chave de upload precisa ser mantida em segredo. No entanto, é possível compartilhar o certificado gerado usando a chave de upload. É possível gerar uma chave de upload de uma das seguintes maneiras:

    • Se você solicitar que o Google gere a chave de assinatura do app no momento da ativação, a chave usada para assinar seu app no lançamento será definida como a chave de upload.
    • Se você fornecer a chave de assinatura do app ao Google quando ativar o recurso para um app novo ou existente, terá a opção de gerar uma nova chave de upload durante ou após a ativação para aumentar a segurança.
    • Se você não gerar uma nova chave de upload, continue usando a chave de assinatura do app como chave de upload para assinar cada versão.

    Dica: para proteger suas chaves, é importante que as chaves de upload e de assinatura do app sejam diferentes.

Como trabalhar com provedores de API

Você pode fazer o download do certificado para a chave de assinatura do app e para a chave de upload na página Versão > Configuração > Assinatura de apps no Play Console. O certificado é usado para registrar chaves públicas nos provedores de API. Ele precisa ser compartilhado, porque não contém sua chave privada.

Uma impressão digital do certificado é uma representação curta e exclusiva de um certificado que é solicitada frequentemente pelos provedores de API com o nome do pacote ao registrar um app para usar o respectivo serviço. As impressões digitais MD5, SHA-1 e SHA-256 dos certificados de upload e de assinatura de apps estão disponíveis na página de assinatura de apps do Play Console. Para acessar outras impressões digitais, faça o download do certificado original (.der) na mesma página.

Assinar o build de depuração

Durante a execução ou depuração do projeto no ambiente de desenvolvimento integrado, o Android Studio assina automaticamente o app com um certificado de depuração gerado pelas Ferramentas do SDK do Android. Na primeira vez em que um projeto é executado ou depurado no Android Studio, o ambiente de desenvolvimento integrado cria automaticamente o keystore e o certificado de depuração em $HOME/.android/debug.keystore e define as senhas do keystore e da chave.

Como o certificado de depuração é criado pelas ferramentas de build e não é seguro, a maioria das app stores (inclusive a Google Play Store) não aceita a publicação de aplicativos assinados com um certificado de depuração.

O Android Studio armazena automaticamente as informações de assinatura de depuração em uma configuração de assinatura, evitando que você tenha que inseri-las a cada depuração. A configuração de assinatura é um objeto que consiste em todas as informações necessárias para assinar o app, inclusive a localização e a senha do keystore e o nome e a senha da chave.

Para mais informações sobre como criar e executar apps para depuração, consulte Criar e executar seu app.

Expiração do certificado de depuração

O certificado autoassinado usado para assinar o app na depuração tem uma data de validade de 30 anos a partir da criação. Quando o certificado expira, um erro de compilação é gerado.

Para corrigir esse problema, basta excluir o arquivo debug.keystore armazenado em um dos seguintes locais:

  • ~/.android/ no OS X e Linux
  • C:\Documents and Settings\user\.android\ no Windows XP
  • C:\Users\user\.android\ no Windows Vista e Windows 7, 8, e 10

Na próxima vez que você criar e executar uma versão de depuração do seu app, o Android Studio criará um novo keystore e uma nova chave de depuração.

Assinar seu app para lançamento no Google Play

Quando estiver pronto para publicar seu app, você vai precisar assiná-lo e fazer upload dele para uma app store, como o Google Play. Ao publicar seu app no Google Play pela primeira vez, você também precisa configurar a Assinatura de apps do Google Play. Esse recurso é opcional para apps criados antes de agosto de 2021. Esta seção mostra como assinar seu app para lançamento e como configurar a Assinatura de apps do Google Play.

Gerar uma chave de upload e um keystore

Se você ainda não tiver uma chave de upload, que é útil na configuração da Assinatura de apps do Google Play, poderá gerar uma usando o Android Studio da seguinte maneira:

  1. Na barra de menus, clique em Build > Generate Signed Bundle/APK.
  2. Na caixa de diálogo Generate Signed Bundle or APK, selecione Android App Bundle ou APK e clique em Next.
  3. Abaixo do campo Key store path, clique em Create new.
  4. Na janela New Key Store, forneça a seguinte informação para seu keystore e sua chave, como mostra a figura 2.

    Figura 2. Criar uma nova chave de upload e keystore no Android Studio.

  5. Keystore

    • Key store path: selecione o local onde o keystore vai ser criado. Além disso, um nome de arquivo precisa ser adicionado ao final do caminho do local com a extensão .jks.
    • Password: crie e confirme uma senha segura para o keystore.
  6. Key

    • Alias: insira um nome de identificação para a chave.
    • Password: crie e confirme uma senha segura para a chave. Ela precisa ser a mesma senha do keystore. Consulte este problema conhecido para ver mais informações.
    • Validity (years): defina o período de validade da chave em anos. A chave precisa ser válida por 25 anos ou mais para que seja possível assinar atualizações de apps com a mesma chave durante a vida útil do app.
    • Certificate: insira algumas informações pessoais para o certificado. Essas informações não são exibidas no app, mas são incluídas no certificado como parte do APK.
  7. Após preencher o formulário, clique em OK.

  8. Se você quiser criar e assinar seu app com a chave de upload, prossiga para a seção sobre como Assinar seu app com a chave de upload. Se quiser gerar apenas a chave e o keystore, clique em Cancelar.

Assinar o app com sua chave

Se você já tiver uma chave de upload, use-a para assinar seu app. Se, em vez disso, o app já estiver assinado e publicado na Google Play Store com uma chave de assinatura, use-a para assiná-lo. Depois, você poderá gerar e registrar uma chave de upload separada no Google Play para assinar e fazer upload das próximas atualizações no app.

Para assinar seu app usando o Android Studio, siga estas etapas:

  1. Se a caixa de diálogo Generate Signed Bundle or APK não estiver aberta, clique em Build > Generate Signed Bundle/APK.
  2. Na caixa de diálogo Generate Signed Bundle or APK, selecione Android App Bundle ou APK e clique em Next.
  3. Selecione um módulo na lista suspensa.
  4. Especifique o caminho para seu keystore, o alias da chave e as senhas de ambos. Se você ainda não preparou uma chave e um keystore de upload, gere uma chave e um keystore de upload e volte para completar esta etapa.

    Figura 3. Assinar o app com a chave de upload.

  5. Clique em Próximo.

  6. Na janela seguinte (mostrada na Figura 4), selecione uma pasta de destino para o app assinado, selecione o tipo de build e escolha as variações do produto, se houver mais de uma.

  7. Se você estiver criando e assinando um APK, vai precisar selecionar quais Signature Versions quer que sejam compatíveis com seu app. Para saber mais, leia sobre esquemas de assinatura de apps

  8. Clique em Create.

Figura 5. Clique no link na janela pop-up para analisar ou localizar seu pacote de apps.

Depois que o Android Studio terminar de criar o app assinado, será possível localizar ou analisar o app clicando na opção adequada ("locate" ou "analyze", respectivamente) na notificação pop-up, como mostrado na figura 5.

Agora está tudo pronto para ativar a Assinatura de apps do Google Play e fazer upload do app para lançamento. Se você for novo no processo de publicação de apps, consulte a Visão geral de lançamento. Caso contrário, prossiga para a página sobre como Fazer upload do seu app para o Play Console.

Como usar a Assinatura de apps do Google Play

Conforme descrito anteriormente nesta página, é necessário configurar a Assinatura de apps do Google Play para assinar seu app para distribuição no Google Play, exceto no caso de apps criados antes de agosto de 2021, que podem continuar distribuindo APKs autoassinados. As etapas que você precisa seguir dependem do app ainda não ter sido publicado no Google Play ou já ter sido assinado e publicado antes de agosto de 2021 usando uma chave de assinatura existente.

Configurar um novo app

Para configurar a assinatura de um app que ainda não foi publicado no Google Play, faça o seguinte:

  1. Se você ainda não tiver feito isso, gere uma chave de upload e assine o app com ela.
  2. Faça login no Play Console.
  3. Siga as etapas em Preparar e lançar uma versão para criar uma nova versão.
  4. Depois de escolher a faixa de lançamento, configure a assinatura de apps na seção Assinatura de apps da seguinte maneira:
    • Para que o Google Play gere uma chave de assinatura do app e a utilize para assinar seu app, não é necessário fazer nada. A chave usada para assinar a primeira versão passará a ser a chave de upload, que será aplicada a versões futuras.
    • Para usar a mesma chave de outro app da sua conta de desenvolvedor, selecione Mudar a chave de assinatura do app > Usar a mesma chave de outro app desta conta, selecione um app e clique em Continuar.
    • Para fornecer sua chave de assinatura para o Google usar ao assinar seu app, selecione Mudar a chave de assinatura do app e selecione uma das opções de Exportação e upload que permite fazer upload de uma chave privada e do certificado público correspondente de maneira segura.

Na seção Pacotes de app, clique em Procurar arquivos para localizar e fazer upload do app assinado com a chave de upload. Para mais informações sobre como lançar seu app, consulte Preparar e lançar uma versão. Quando você lança seu app depois de configurar a Assinatura de apps do Google Play, o Google Play gera e gerencia a chave de assinatura do app, a menos que você faça upload de uma chave existente. Basta assinar atualizações subsequentes do seu app com a chave de upload antes de enviá-lo para o Google Play.

Se você precisar criar uma nova chave de upload para seu app, consulte a seção sobre como Redefinir uma chave de upload privada perdida ou comprometida.

Ativar um app existente

Se você estiver atualizando um app que já tiver sido publicado no Google Play com uma chave de assinatura já existente, ative a Assinatura de apps do Google Play desta maneira:

  1. Faça login no Play Console e navegue até seu app.
  2. No menu à esquerda, clique em Versão > Configuração > Assinatura de apps.
  3. Se necessário, leia os Termos de Serviço e selecione Aceitar.
  4. Selecione a opção que melhor descreve a chave de assinatura que você quer enviar para o Google Play e siga as instruções mostradas. Por exemplo, se você estiver usando um keystore Java para sua chave de assinatura, selecione Fazer upload de uma nova chave de assinatura do app de um keystore Java e siga as instruções para fazer o download e executar a ferramenta PEPK e para fazer upload do arquivo gerado com a chave criptografada.
  5. Clique em Inscrever-se.

Você verá uma página com os detalhes dos certificados de assinatura e upload do seu app. O Google Play vai assinar o app com a chave já existente ao implantá-lo para os usuários. No entanto, um dos benefícios mais importantes da Assinatura de apps do Google Play é a capacidade de separar a chave que você usou para assinar o artefato enviado ao Google Play da chave que o Google Play usa para assinar seu app para distribuição aos usuários. Então, considere seguir as etapas da próxima seção para gerar e registrar uma chave de upload separada.

Gerar e registrar um certificado de upload

Quando você publica um app não assinado por uma chave de upload, o Google Play Console oferece a opção de registrar uma chave para atualizações futuras do app. Essa é uma etapa opcional, mas recomendamos publicar o app com uma chave diferente daquela usada pelo Google Play para distribuir seu app aos usuários. Dessa forma, o Google mantém sua chave de assinatura segura e você tem a opção de redefinir uma chave de upload privada perdida ou comprometida. Esta seção descreve como criar uma chave de upload, gerar um certificado de upload a partir dela e registrar o certificado com o Google Play para atualizações futuras do app.

A seguir, descrevemos as situações em que você pode encontrar a opção de registrar um certificado de upload no Play Console:

  • Quando você publica um novo app assinado com uma chave de assinatura e ativa a Assinatura de Apps do Google Play nele.
  • Quando você está prestes a publicar um app que já tem a Assinatura de apps do Google Play ativada, mas ele está assinado com a própria chave de assinatura.

Se você não estiver publicando uma atualização para um app com a opção de Assinatura de apps do Google Play ativada e quiser registrar um certificado de upload, realize as etapas abaixo e prossiga para a seção sobre como redefinir uma chave de upload privada perdida ou comprometida

Se você ainda não tiver feito isso, gere um keystore e uma chave de upload.

Depois de criar o keystore e a chave de upload, gere um certificado público com a chave usando a keytool (link em inglês) com este comando:

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Agora que você tem um certificado de upload, registre-o no Google quando solicitado no Play Console ou ao redefinir sua chave de upload.

Atualizar a chave de assinatura do app

Em algumas circunstâncias, pode ser necessário alterar a chave de assinatura do seu app. Você pode querer uma chave criptograficamente mais forte, por exemplo, ou sua chave de assinatura pode ter sido comprometida. No entanto, como os usuários só poderão atualizar o app se a atualização for assinada com a mesma chave de assinatura, é difícil alterar a chave de um app já publicado.

Se você publicar o app no Google Play, poderá atualizar a chave de assinatura dele no Play Console. Sua nova chave será usada para assinar novas instalações e atualizações do app no Android 13 e versões mais recentes, enquanto a chave antiga será usada para assinar atualizações de usuários que instalaram o app em versões mais antigas do Android.

Para saber mais, leia Fazer upgrade da chave de assinatura do app.

Redefinir uma chave de upload privada perdida ou comprometida

Se você perder sua chave de upload privada ou se ela for comprometida, crie uma nova e solicite uma redefinição de chave de upload no Play Console.

Configurar o processo de compilação para assinatura automática do app

No Android Studio, é possível configurar o projeto para assinar automaticamente a versão de lançamento do app durante o processo de build criando uma configuração de assinatura e atribuindo-a ao tipo de build de lançamento. Uma configuração de assinatura consiste em um local de keystore, uma senha de keystore, um alias da chave e uma senha da chave. Para criar uma configuração de assinatura e atribuí-la ao tipo de build de lançamento usando o Android Studio, siga estas etapas:

  1. Na janela Project, clique com o botão direito do mouse no app e escolha Open Module Settings.
  2. Na janela Project Structure, em Modules no painel esquerdo, clique no módulo que você quer assinar.
  3. Clique na guia Signing e depois em Add .
  4. Selecione o arquivo do keystore, insira um nome para essa configuração de assinatura (é possível criar mais de uma) e insira as informações necessárias.

    Figura 7. Janela de criação de uma nova configuração de assinatura.

  5. Clique na guia Build Types.
  6. Clique no build release.
  7. Em Signing Config, selecione a configuração de assinatura que você acabou de criar.

    Figura 8. Selecione uma configuração de assinatura no Android Studio.

  8. Clique em OK.

Agora, toda vez que você criar um tipo de build de lançamento usando Build > Build Bundle(s) / APK(s) no Android Studio, o ambiente de desenvolvimento integrado assinará seu app automaticamente com a configuração de assinatura especificada. Localize seus APKs ou pacotes de apps assinados na pasta build/outputs/ dentro do diretório do projeto do módulo que você está criando.

Ao criar uma configuração de assinatura, as informações correspondentes serão incluídas em texto simples nos arquivos de build do Gradle. Se você trabalha em equipe ou compartilha publicamente seu código, remova as informações de assinatura dos arquivos de build e armazene-as separadamente para manter a segurança. Para saber mais sobre como remover informações de assinatura dos arquivos de build, consulte Remover informações de assinatura dos arquivos de build. Para saber mais sobre como manter as informações de assinatura seguras, consulte Proteger sua chave abaixo.

Assinar cada variação de produto de forma diferente

Se o app usa variações de produto e você quer assinar cada uma de forma diferente, é possível criar outras configurações de assinatura e atribuí-las a cada variação:

  1. Na janela Project, clique com o botão direito do mouse no app e escolha Open Module Settings.
  2. Na janela Project Structure, em Modules no painel esquerdo, clique no módulo que você quer assinar.
  3. Clique na guia Signing e depois em Add .
  4. Selecione o arquivo do keystore, insira um nome para essa configuração de assinatura (é possível criar mais de uma) e insira as informações necessárias.

    Figura 10. Janela de criação de uma nova configuração de assinatura.

  5. Repita as etapas 3 e 4 conforme necessário até criar todas as configurações de assinatura.
  6. Clique na guia Flavors.
  7. Clique na variação que você quer configurar e selecione a configuração de assinatura adequada no menu suspenso Signing Config.

    Figura 11. Definição de configurações de assinatura por variação de produto.

    Repita para configurar todas as outras variações de produto.

  8. Clique em OK.

Você também pode especificar as configurações de assinatura nos arquivos de configuração do Gradle. Para mais informações, consulte Definir configurações de assinatura.

Executar um relatório de assinatura

Para conferir informações de assinatura de cada uma das variantes do app, execute a tarefa signingReport do Gradle no Android Studio:

  1. Selecione View > Tool Windows > Gradle para abrir a janela de ferramentas do Gradle.
  2. Selecione YourApp > Tasks > android > signingReport para executar o relatório

Gerenciar sua própria chave de assinatura

Se você não quiser ativar a Assinatura de apps do Google Play (somente para apps criados antes de agosto de 2021), poderá gerenciar uma chave de assinatura do app e um keystore próprios. Você será responsável pela segurança da chave e do keystore. Além disso, seu app não vai oferecer suporte a Android App Bundles, ao Play Feature Delivery e ao Play Asset Delivery.

Quando estiver pronto para criar uma chave e um keystore próprios, escolha uma senha forte para o keystore e outra igualmente forte para cada chave privada armazenada nele. É necessário manter o keystore em um local seguro e protegido. Se você perder o acesso à chave de assinatura do app ou se ela for comprometida, o Google não vai conseguir recuperá-la, e não será possível lançar novas versões de seu app para os usuários como atualizações do aplicativo original. Para mais informações, consulte Proteger sua chave abaixo.

Se você gerenciar uma chave de assinatura do app e um keystore próprios, vai assinar o APK localmente usando sua chave de assinatura e vai fazer upload do APK assinado diretamente na Google Play Store para distribuição, como mostrado na Figura 12.

Figura 12. Assinatura de um app ao gerenciar sua própria chave de assinatura de app.

Quando você usa a Assinatura de apps do Google Play, o Google mantém sua chave de assinatura segura e garante que seus apps sejam assinados adequadamente e recebam atualizações durante toda a vida útil. No entanto, se você decidir gerenciar sua chave de assinatura por conta própria, tenha em mente algumas considerações.

Considerações sobre assinaturas

O app precisa ser assinado com o mesmo certificado durante toda a vida útil. Existem diversas razões para isso:

  • Upgrade do app: quando o sistema instala a atualização de um app, ele compara os certificados da nova versão com os da versão atual. Se os certificados corresponderem, o sistema permitirá a atualização. Se a nova versão for assinada com um certificado diferente, será preciso atribuir um nome de pacote diferente ao app. Nesse caso, o usuário instala a nova versão como um app completamente novo.
  • Modularidade do app: o Android permite que APKs assinados pelo mesmo certificado sejam executados no mesmo processo, se solicitado pelos apps, para que o sistema os considere um único app. Dessa forma, é possível implantar o app em módulos, e os usuários podem atualizar separadamente cada um dos módulos.
  • Compartilhamento de código/dados por permissões: o Android oferece a aplicação de permissões com base em assinatura para que um app possa expor funcionalidades a outro app assinado com um certificado especificado. A assinatura de vários APKs com o mesmo certificado e usando verificações de permissão com base em assinatura permite que os apps compartilhem códigos e dados com segurança.

Se você pretende oferecer compatibilidade com upgrades para um app, verifique se a chave de assinatura dele tem um período de validade que ultrapasse a vida útil. Recomenda-se um período de validade de 25 anos ou mais. Quando o período de validade da chave expira, os usuários não podem mais fazer upgrade do app para novas versões com facilidade.

Se você pretende publicar seus apps no Google Play, a chave usada para assiná-los precisa ter um período de validade posterior a 22 de outubro de 2033. O Google Play impõe esse requisito para garantir que os usuários possam fazer upgrade de apps com facilidade quando novas versões estiverem disponíveis.

Manter a chave protegida

Caso você escolha gerenciar e proteger a chave de assinatura do app e o keystore por conta própria em vez de usar a Assinatura de aplicativos do Google Play, a proteção da chave de assinatura do app é de extrema importância, tanto para você quanto para o usuário. Se você permitir que alguém use a chave ou deixar o keystore e as senhas em um local desprotegido, permitindo que terceiros encontrem e usem essas informações, sua identidade de autor e a confiança dos usuários ficarão comprometidas.

Se uma outra pessoa conseguir sua chave de assinatura do app sem seu conhecimento ou sua permissão, ela poderá assinar e distribuir apps que substituam ou corrompam seus apps autênticos com finalidades indevidas. Essa pessoa também poderá, usando sua identidade, assinar e distribuir apps que ataquem outros apps ou o próprio sistema, além de corromper e roubar dados dos usuários.

Sua chave privada será exigida para assinar todas as versões futuras do seu app. Se você perder ou não souber a localização da chave, não vai poder publicar atualizações para o app já existente. Não é possível gerar novamente uma chave que já foi gerada.

Sua reputação como entidade desenvolvedora depende da proteção adequada da chave de assinatura em todos os momentos até que ela expire. Veja a seguir algumas dicas para manter a chave protegida:

  • Escolha senhas fortes para o keystore e para a chave.
  • Não dê nem empreste a chave privada e não permita que pessoas não autorizadas saibam as senhas do keystore e da chave.
  • Mantenha o arquivo do keystore que contém a chave privada em um local seguro e protegido.

Em geral, se você tomar precauções com bom senso para gerar, usar e armazenar a chave, ela permanecerá segura.

Remover informações de assinatura dos arquivos de build

Quando você cria uma configuração de assinatura, o Android Studio adiciona essas informações em texto simples aos arquivos build.gradle do módulo. Se você está trabalhando com uma equipe ou terceirizando o desenvolvimento do código, mantenha essas informações confidenciais fora dos arquivos de compilação para que outras pessoas não possam acessá-las facilmente. Para isso, crie um arquivo de propriedades separado para armazenar informações seguras e faça referência a esse arquivo nos arquivos de compilação da seguinte forma:

  1. Crie uma configuração de assinatura e a atribua a um ou mais tipos de build. Estas instruções presumem que você tenha definido uma única configuração de assinatura para o tipo de build de lançamento, como descrito em Configurar o processo de build para assinatura automática do app.
  2. Crie um arquivo denominado keystore.properties no diretório raiz do projeto. Esse arquivo precisa conter as informações de assinatura da seguinte forma:
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. No arquivo build.gradle do módulo, adicione o código para carregar o arquivo keystore.properties antes do bloco android {}.

    Groovy

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Observação: você pode optar por armazenar o arquivo keystore.properties em outro local. Por exemplo, na pasta do módulo em vez da pasta raiz do projeto ou em um servidor de build se estiver usando uma ferramenta de integração contínua. Nesse caso, modifique o código acima para inicializar corretamente keystorePropertiesFile usando a localização real do arquivo keystore.properties.

  4. Você pode fazer referência às propriedades armazenadas em keystoreProperties usando a sintaxe keystoreProperties['propertyName']. Modifique o bloco signingConfigs do arquivo build.gradle do módulo para fazer referência às informações de assinatura armazenadas em keystoreProperties usando essa sintaxe.

    Groovy

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            create("config") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
        ...
      }
  5. Abra a janela de ferramentas Build Variants e verifique se o tipo de build de lançamento está selecionado.
  6. Selecione uma opção em Build > Build Bundle(s) / APK(s) para criar um APK ou um pacote de apps do build de lançamento. É importante verificar o resultado do build no diretório build/outputs/ do seu módulo.

Como os arquivos de build não contêm mais informações sensíveis, você pode incluí-los no controle de origem ou fazer upload deles em uma base de código compartilhada. Não deixe de manter o arquivo keystore.properties protegido. Para isso, pode ser necessário removê-lo do sistema de controle de origem.