top of page
Writer's picturetwitmisrekercigado

Você enviou um apk que está assinado com um certificado diferente dos seus apks anteriores - Como re



O que é um APK e por que ele precisa ser assinado?




Um APK (Android Package Kit) é um formato de arquivo que contém todos os componentes de um aplicativo Android, como código, recursos, ativos e manifesto. Um APK é usado para distribuir e instalar aplicativos Android em dispositivos.


Antes de publicar seu aplicativo no Google Play ou em outras lojas de aplicativos, você precisa assinar seu APK com um certificado digital. Assinar seu APK garante que:




you uploaded an apk that is signed with a different certificate to your previous apks



  • Seu aplicativo é autêntico e vem de você, o desenvolvedor original.



  • Seu aplicativo não foi adulterado ou modificado por mais ninguém.



  • Seu aplicativo pode ser atualizado de forma segura e consistente.



  • Seu aplicativo pode acessar determinados recursos e APIs que exigem assinatura de aplicativo, como Google Play App Signing, Google Play Licensing, Google Play Protect e Google Play Instant.



O que é um certificado de assinatura de APK?




Um certificado de assinatura de APK é um certificado de chave pública que contém informações sobre você e seu aplicativo, como seu nome, organização e nome do pacote do aplicativo. O certificado também contém uma chave pública que corresponde a uma chave privada à qual somente você tem acesso.


Ao assinar um APK, você usa sua chave privada para criar uma assinatura digital para o APK. A assinatura é anexada ao APK e pode ser verificado por qualquer pessoa usando sua chave pública, que está incorporada no certificado. O processo de verificação garante que o APK não foi alterado e que vem de você.


Um certificado de assinatura de APK também é conhecido como keystore, chave ou alias. Você pode gerar um certificado de assinatura de APK usando várias ferramentas, como Android Studio, keytool ou apksigner.


Quais são os benefícios de assinar seu APK?




Assinar seu APK traz vários benefícios para você e seus usuários, como:


  • Segurança: assinar seu APK evita modificações não autorizadas ou injeções de malware que podem comprometer seu aplicativo ou prejudicar seus usuários.Ele também protege seu aplicativo de ser representado por outros desenvolvedores que podem tentar usar a identidade ou a reputação de seu aplicativo.



  • Atualizações: assinar seu APK permite que você atualize seu aplicativo de maneira contínua e consistente. Os dispositivos Android aceitam apenas atualizações de aplicativos assinadas com o mesmo certificado do aplicativo instalado. Isso impede que outra pessoa publique uma atualização para seu aplicativo que possa prejudicar seus usuários ou roubar seus dados.



  • Compatibilidade: assinar seu APK permite que você use determinados recursos e APIs que exigem assinatura de aplicativo, como Google Play App Signing, Google Play Licensing, Google Play Protect e Google Play Instant. Esses recursos e APIs ajudam você a distribuir seu aplicativo com mais eficiência, protegê-lo contra pirataria, aprimorar a segurança e o desempenho de seu aplicativo e entregá-lo aos usuários instantaneamente sem instalação.



O que acontece quando você carrega um APK assinado com um certificado diferente dos seus APKs anteriores?




Se você tentar carregar um APK assinado com um certificado diferente dos seus APKs anteriores, encontrará uma mensagem de erro que diz algo como isto:


"Falha no upload. Você carregou um APK assinado com um certificado diferente para seus APKs anteriores. Você deve usar o mesmo certificado. Seus APKs existentes são assinados com o(s) certificado(s) com impressão digital(s): [SHA1: 12:34:56:78:90:AB:CD:EF:12:34:56:78:90:AB:CD:EF:12:34:56:78] e o(s) certificado(s) usado(s) para assinar o APK que você carregou tem impressões digitais: [SHA1: 23:45:67:89:01:BC:DE:F0:23:45:67:89:01:BC:DE:F0:23:45:67:89]"


Este erro significa que o Android detectou uma incompatibilidade entre os certificados de assinatura de seus APKs novos e antigos. Isso impede que você carregue o novo APK no Google Play ou em outras lojas de aplicativos. uma redefinição de sua chave de assinatura do aplicativo, se você atender às seguintes condições: - Você está inscrito no Google Play App Signing, que é um serviço que permite que o Google gerencie e proteja sua chave de assinatura do aplicativo para você.- Você tem a chave de assinatura do aplicativo original que usou para assinar o primeiro APK que carregou no Google Play. - Você ainda não publicou seu aplicativo em nenhuma faixa nem o liberou para nenhum usuário. Se você atender a essas condições, poderá seguir estas etapas para solicitar uma redefinição de sua chave de assinatura do aplicativo: - Crie uma nova chave e armazenamento de chave que deseja usar como sua nova chave de assinatura do aplicativo. Certifique-se de que seja diferente de qualquer chave anterior que você tenha usado. - Assine um APK com a nova chave e keystore, usando o mesmo nome de pacote e código de versão do último APK que você carregou no Google Play. - Preencha e envie o [formulário de contato] para o suporte do Google Play e anexe o APK assinado com a nova chave, a chave de assinatura do app original e o certificado de upload da chave de assinatura do app original. O certificado de upload é um certificado de chave pública que identifica sua chave de upload, que é a chave que você usa para assinar APKs antes de carregá-los no Google Play. Você pode obter seu certificado de upload usando a página [App Signing by Google Play] no Play Console ou usando o recurso [PEM export] do keytool ou apksigner. - Aguarde o suporte do Google Play analisar sua solicitação e entrar em contato com você com as próximas etapas. Esta opção permitirá que você mantenha seu aplicativo e usuários existentes, mas pode levar algum tempo e esforço para ser concluído. Você deve usar essa opção apenas como último recurso e somente se tiver certeza de que possui a chave de assinatura do aplicativo original.


Como assinar seu APK corretamente usando o Android Studio?




O Android Studio é a ferramenta recomendada para criar e assinar aplicativos Android. Ele fornece uma interface amigável e um processo simplificado para gerar e gerenciar suas chaves de assinatura e keystores, bem como assinar seus APKs.


Aqui estão as etapas para assinar seu APK corretamente usando o Android Studio:


Como gerar uma chave de assinatura e keystore?




Você pode gerar uma chave de assinatura e armazenamento de chaves usando um dos seguintes métodos:


  • Usando o comando keytool: É possível usar a ferramenta de linha de comandos keytool fornecida com o Java Development Kit (JDK) para gerar uma chave de assinatura e um keystore. A sintaxe do comando é a seguinte:



keytool -genkey -v -keystore .jks -alias -keyalg RSA -keysize 2048 -validade


O comando solicitará que você insira uma senha para o keystore e o alias, bem como algumas informações sobre você e seu aplicativo, como seu nome, organização e nome do pacote do aplicativo. O comando também gerará um arquivo .jks que contém seu keystore, que você deve armazenar em um local seguro e acessível.


  • Usando a caixa de diálogo Generate Signed Bundle/APK: você pode usar a caixa de diálogo Generate Signed Bundle/APK no Android Studio para gerar uma chave de assinatura e um keystore. A caixa de diálogo pode ser acessada selecionando Build > Generate Signed Bundle / APK na barra de menus. A caixa de diálogo o guiará pelas seguintes etapas:



  • Selecione se deseja gerar um Android App Bundle (AAB) assinado ou um APK assinado. Um AAB é um formato de arquivo que contém todos os componentes do seu aplicativo, mas permite que o Google Play otimize e entregue apenas as partes necessárias para cada dispositivo. Um AAB é recomendado para publicar seu aplicativo no Google Play, enquanto um APK é recomendado para testar ou distribuir seu aplicativo fora do Google Play.



  • Selecione o módulo que deseja assinar, que geralmente é o módulo app.



  • Crie uma nova chave de assinatura e keystore ou escolha um existente. Se você criar um novo, terá que inserir uma senha para o keystore e o alias, bem como algumas informações sobre você e seu aplicativo, como seu nome, organização e nome do pacote do aplicativo. Você também terá que especificar um local para armazenar seu arquivo de armazenamento de chaves.



  • Selecione se deseja assinar seu aplicativo usando o APK Signature Scheme v2 ou v3. Esses são esquemas de assinatura que melhoram a segurança e o desempenho do seu aplicativo, verificando-o no momento da instalação.O APK Signature Scheme v3 é recomendado para aplicativos direcionados ao Android 9 (API de nível 28) ou superior, enquanto o APK Signature Scheme v2 é recomendado para aplicativos direcionados a níveis de API mais baixos.



  • Selecione se deseja executar o ProGuard em seu aplicativo. O ProGuard é uma ferramenta que reduz, otimiza e ofusca seu código, tornando-o menor, mais rápido e mais difícil de fazer engenharia reversa. O ProGuard é recomendado para aplicativos que contêm código confidencial ou proprietário, ou que precisam reduzir seu tamanho ou melhorar seu desempenho.



  • Selecione a pasta de destino para seu aplicativo assinado e clique em Concluir. O Android Studio gerará um arquivo AAB ou APK assinado que você pode enviar para o Google Play ou outras lojas de aplicativos.



Como assinar seu APK usando a chave de assinatura e o armazenamento de chaves?




Depois de gerar uma chave de assinatura e armazenamento de chave, você pode usá-los para assinar seu APK usando um dos seguintes métodos:


  • Usando a caixa de diálogo Generate Signed Bundle/APK: você pode usar a caixa de diálogo Generate Signed Bundle/APK no Android Studio para assinar seu APK usando a chave de assinatura e o keystore que você criou ou selecionou na etapa anterior. A caixa de diálogo pode ser acessada selecionando Build > Generate Signed Bundle / APK na barra de menus. A caixa de diálogo o guiará pelas mesmas etapas de antes, exceto que você terá que escolher uma chave de assinatura e armazenamento de chaves existentes em vez de criar um novo.



  • Usando a opção de menu Build > Generate Signed APK: você pode usar a opção de menu Build > Generate Signed APK no Android Studio para assinar seu APK usando a chave de assinatura e o keystore que você criou ou selecionou na etapa anterior. Essa opção é semelhante à caixa de diálogo Generate Signed Bundle/APK, mas gera apenas um APK assinado, não um AAB assinado. Você terá que escolher uma chave de assinatura e um armazenamento de chaves existentes em vez de criar um novo.



Como verificar a assinatura do seu APK?




Depois de assinar seu APK, você pode verificar a assinatura de seu APK usando uma das seguintes ferramentas:


  • Usando a ferramenta apksigner: você pode usar a ferramenta de linha de comando apksigner que vem com as Android SDK Build Tools para verificar a assinatura do seu APK. A sintaxe do comando é a seguinte:



apksigner verificar --verbose .apk


O comando produzirá informações sobre a assinatura do seu APK, como o certificado do assinante, o esquema de assinatura e o algoritmo de resumo. Você também pode usar a opção --print-certs para imprimir os certificados dos signatários.


  • Usando a ferramenta jarsigner: você pode usar a ferramenta de linha de comando jarsigner que vem com o Java Development Kit (JDK) para verificar a assinatura do seu APK. A sintaxe do comando é a seguinte:



jarsigner -verify -verbose -certs .apk


O comando produzirá informações sobre a assinatura do seu APK, como o certificado do assinante, o esquema de assinatura e o algoritmo de resumo.


Como assinar seu APK corretamente usando outras ferramentas?




Se preferir não usar o Android Studio, você também pode assinar seu APK corretamente usando outras ferramentas, como Gradle, apksigner ou jarsigner. Essas ferramentas exigem configuração e execução mais manuais, mas oferecem mais flexibilidade e controle sobre o processo e as opções de assinatura. Aqui estão as etapas para assinar seu APK corretamente usando outras ferramentas: Como assinar seu APK usando Gradle?




Gradle é uma ferramenta de automação de compilação que pode ser usada para assinar seu APK usando um arquivo de configuração chamado build.gradle. Esse arquivo contém instruções e parâmetros para criar e assinar seu aplicativo, como a chave de assinatura e o armazenamento de chaves, o esquema de assinatura e as configurações do ProGuard.


Para assinar seu APK usando Gradle, você precisa fazer o seguinte:


  • Crie uma chave de assinatura e um armazenamento de chaves: você pode criar uma chave de assinatura e um armazenamento de chaves usando o comando keytool ou a caixa de diálogo Generate Signed Bundle/APK no Android Studio, conforme explicado na seção anterior.



  • Configure os blocos signatureConfigs e buildTypes no arquivo build.gradle de seu aplicativo: você precisa configurar o bloco signatureConfigs para especificar as propriedades de sua chave de assinatura e keystore, como o local do arquivo, as senhas e o alias. Você também precisa configurar o bloco buildTypes para especificar as propriedades das variantes de compilação do seu aplicativo, como as versões de depuração e lançamento. Você também pode ativar ou desativar o ProGuard e o APK Signature Scheme v2 ou v3 neste bloco. Por exemplo, o arquivo build.gradle do seu aplicativo pode ter a seguinte aparência:



android ... signatureConfigs release storeFile file("my-release-key.jks") storePassword "password" keyAlias "my-alias" keyPassword "password" buildTypes release minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signatureConfig signatureConfigs.release v2SigningEnabled true v3SigningEnabled true ...


  • Crie e assine seu APK usando o comando Gradle: você pode criar e assinar seu APK usando a ferramenta de linha de comando Gradle que vem com o Android Studio. A sintaxe do comando é a seguinte:



gradlew montar


O parâmetro é o nome da variante de construção que você deseja construir e assinar, como lançamento ou depuração. O comando irá gerar um arquivo APK assinado no diretório app/build/outputs/apk/ do seu projeto.


Como assinar seu APK usando apksigner?




apksigner é uma ferramenta de linha de comando que pode ser usada para assinar seu APK usando uma chave de assinatura e armazenamento de chaves. Essa ferramenta faz parte do Android SDK Build Tools e oferece mais opções e recursos do que o jarsigner, como suporte para APK Signature Scheme v2 e v3, verificação de assinaturas, alinhamento de entradas ZIP e otimização de arquivos APK.


Para assinar seu APK usando apksigner, você precisa fazer o seguinte:


  • Crie uma chave de assinatura e um armazenamento de chaves: você pode criar uma chave de assinatura e um armazenamento de chaves usando o comando keytool ou a caixa de diálogo Generate Signed Bundle/APK no Android Studio, conforme explicado na seção anterior.



  • Assine seu APK usando o comando apksigner sign: você pode assinar seu APK usando a ferramenta de linha de comando apksigner sign que vem com as Android SDK Build Tools. A sintaxe do comando é a seguinte:



sinal apksigner --ks .jks --out .apk .apk


O comando solicitará que você insira a senha para o keystore e o alias e gere um arquivo APK assinado com o nome de saída especificado. Você também pode usar outras opções com este comando, como --ks-key-alias para especificar o nome do alias, --v2-signing-enabled ou --v3-signing-enabled para habilitar ou desabilitar o Esquema de Assinatura APK v2 ou v3, ou --key e --cert para especificar arquivos separados para a chave privada e o certificado público em vez de um keystore.


Como assinar seu APK usando jarsigner?




jarsigner é uma ferramenta de linha de comando que pode ser usada para assinar seu APK usando uma chave de assinatura e armazenamento de chaves. Essa ferramenta faz parte do Java Development Kit (JDK) e oferece funcionalidade básica para assinar seu APK, como suporte para APK Signature Scheme v1 e verificação de assinaturas. No entanto, essa ferramenta não é recomendada para assinar seu APK, pois não oferece suporte ao APK Signature Scheme v2 ou v3, que são necessários para aplicativos destinados ao Android 7.0 (API de nível 24) ou superior.


Para assinar seu APK usando jarsigner, você precisa fazer o seguinte:


  • Crie uma chave de assinatura e um armazenamento de chaves: você pode criar uma chave de assinatura e um armazenamento de chaves usando o comando keytool ou a caixa de diálogo Generate Signed Bundle/APK no Android Studio, conforme explicado na seção anterior.



  • Assine seu APK usando o comando jarsigner: você pode assinar seu APK usando a ferramenta de linha de comando jarsigner que acompanha o Java Development Kit (JDK). A sintaxe do comando é a seguinte:



jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore .jks .apk


O comando solicitará que você insira a senha para o keystore e o alias e, em seguida, gere um arquivo APK assinado com o mesmo nome do APK de entrada. Você também pode usar outras opções com este comando, como -storetype para especificar o tipo de keystore, como JKS ou PKCS12.


Conclusão




Assinar seu APK é uma etapa essencial para publicar seu aplicativo no Google Play ou em outras lojas de aplicativos. Ele garante que seu aplicativo seja autêntico, seguro e compatível com vários recursos e APIs. Para assinar seu APK corretamente, você deve usar a mesma chave de assinatura e keystore para todas as versões do seu aplicativo e mantê-los seguros e consistentes. Você também deve usar o Android Studio ou outras ferramentas compatíveis com APK Signature Scheme v2 ou v3, que são necessárias para aplicativos destinados ao Android 7.0 (API de nível 24) ou superior.


Esperamos que este artigo tenha ajudado você a entender como assinar seu APK corretamente e evitar erros comuns. Se você tiver alguma dúvida ou feedback, informe-nos nos comentários abaixo.


perguntas frequentes




Qual é a diferença entre o esquema de assinatura de APK v1, v2 e v3?




APK Signature Scheme v1 é o esquema de assinatura original que assina todo o arquivo APK, incluindo as entradas ZIP e o alinhamento. Este esquema é suportado por todas as versões do Android, mas tem algumas limitações, como ser vulnerável a ataques de arquivos ZIP e exigir tempo e memória extra de verificação.


APK Signature Scheme v2 é um novo esquema de assinatura que assina apenas o conteúdo do arquivo APK, excluindo os metadados ZIP e o alinhamento. Esse esquema é suportado pelo Android 7.0 (API de nível 24) ou superior e tem algumas vantagens, como ser imune a ataques de arquivo ZIP, permitir verificação mais rápida e oferecer suporte à rotação de chaves.


APK Signature Scheme v3 é uma extensão do APK Signature Scheme v2 que adiciona suporte para rotação de chaves sem exigir um novo nome de pacote ou um novo certificado de assinatura.Esse esquema é compatível com o Android 9 (API de nível 28) ou superior e permite que os desenvolvedores alterem a chave de assinatura sem perder o acesso aos dados ou à funcionalidade do aplicativo.


Como posso verificar qual esquema de assinatura meu APK usa?




Você pode verificar qual esquema de assinatura seu APK usa usando a ferramenta apksigner ou jarsigner, conforme explicado na seção anterior. Por exemplo, você pode usar o seguinte comando para verificar qual esquema de assinatura seu APK usa:


apksigner verificar --verbose .apk


O comando produzirá informações sobre o esquema de assinatura do seu APK, como "Verificado usando o esquema v1 (assinatura JAR): verdadeiro" ou "Verificado usando o esquema v2 (Esquema de assinatura APK v2): verdadeiro".


Como posso alterar o nome do pacote do meu aplicativo?




Você pode alterar o nome do pacote do seu aplicativo modificando o atributo applicationId no arquivo build.gradle do seu aplicativo. Por exemplo, você pode alterar o nome do pacote do seu aplicativo de "com.example.myapp" para "com.example.myapp2" alterando a seguinte linha no arquivo build.gradle do seu aplicativo:


applicationId "com.example.myapp"


para


applicationId "com.example.myapp2"


Você também deve atualizar todas as referências ao nome do pacote do seu aplicativo em seu arquivo de manifesto, código, recursos e outros arquivos.


Como posso entrar em contato com o suporte do Google Play?




Você pode entrar em contato com o suporte do Google Play preenchendo e enviando o [formulário de contato] para desenvolvedores do Google Play. Você também pode acessar esse formulário selecionando Ajuda e feedback > Entre em contato no Play Console. Você deve fornecer o máximo de informações possível sobre seu problema, como nome do aplicativo, nome do pacote, código da versão, chave de assinatura e mensagem de erro. Você também deve anexar todos os arquivos relevantes, como seu APK, sua chave de assinatura do aplicativo original e seu certificado de upload.


Como posso otimizar o tamanho e o desempenho do meu APK?




Você pode otimizar o tamanho e o desempenho do seu APK usando várias ferramentas e técnicas, como:


  • Usando o Android App Bundle: o Android App Bundle é um formato de arquivo que permite que o Google Play otimize e forneça apenas as partes necessárias do seu aplicativo para cada dispositivo. Isso reduz o tamanho do seu aplicativo e melhora seu desempenho. Você pode gerar um Android App Bundle usando o Android Studio ou Gradle, conforme explicado na seção anterior.



  • Usando o ProGuard: O ProGuard é uma ferramenta que reduz, otimiza e ofusca seu código, tornando-o menor, mais rápido e mais difícil de fazer engenharia reversa. Você pode habilitar o ProGuard no arquivo build.gradle do seu aplicativo, conforme explicado na seção anterior.



  • Usando drawables vetoriais: Drawables vetoriais são imagens definidas por arquivos XML em vez de arquivos bitmap. Os drawables vetoriais podem ser dimensionados para qualquer tamanho e resolução sem perder a qualidade ou aumentar o tamanho. Você pode usar drawables vetoriais em seu aplicativo usando o Vector Asset Studio no Android Studio ou adicionando a dependência da biblioteca de suporte ao arquivo build.gradle de seu aplicativo.



  • Usando imagens WebP: WebP é um formato de imagem que oferece melhor compactação do que imagens PNG ou JPEG. As imagens WebP podem reduzir o tamanho do seu aplicativo e melhorar sua velocidade de carregamento. Você pode usar imagens WebP em seu aplicativo convertendo suas imagens existentes em WebP usando o Android Studio ou usando a ferramenta de linha de comando cwebp.



0517a86e26


0 views0 comments

Recent Posts

See All

Comments


bottom of page