Eu havia carregado meu aplicativo no Google Play (quando era chamado de Android Market) há algum tempo.
Hoje atualizei o aplicativo, mas excluí o keystore anterior e criei um novo.
Ao fazer o upload, ele diz que o APK deve ser assinado com os mesmos certificados da versão anterior:
Falha no upload
Você enviou um APK assinado com um certificado diferente para os APKs anteriores. Você deve usar o mesmo certificado.
Seus APKs existentes são assinados com os certificados com impressões digitais:
[SHA1: 89: 2F: 11: FE: CE: D6: CC: DF: 65: E7: 76: 3E: DD: A7: 96: 4F: 84: DD: BA: 33]
e os certificados usados para assinar o APK que você enviou têm impressões digitais:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]
Mas não tenho esse certificado e não quero excluir e republicar o aplicativo, porque ele possui usuários ativos.
O que posso fazer para assinar meu aplicativo com novo certificado?
fonte
Respostas:
Nada. Leia a documentação: Publicando atualizações no Android Market
fonte
Você assinou com a chave de depuração por engano?
O Google Play não permite que você publique um aplicativo assinado com seu keystore de depuração. Se você tentar fazer o upload de um APK desse tipo, o Google Play falhará com a mensagem "Você enviou um APK assinado no modo de depuração. Você precisa assinar o APK no modo de liberação".
No entanto, se você tentar carregar uma atualização assinada com o keystore de depuração, você não verá esta mensagem; O Google Play exibirá a mensagem mostrada na pergunta, referindo-se às impressões digitais SHA1.
Então, primeiro, verifique se você assinou o aplicativo com sua chave de depuração por engano.
Como verifico quais chaves de assinatura foram usadas?
Reúna as informações do APK
Você pode verificar com quais certificados o APK original e o APK de atualização foram assinados usando estes comandos, usando o Java
keytool
:Isso mostra informações detalhadas sobre como um APK foi assinado, por exemplo:
As partes importantes a serem observadas aqui - para cada APK - são o valor da impressão digital SHA1 , o valor da identidade do proprietário e as datas válidas de / até .
Se esse
keytool
comando não funcionar (a-jarfile
opção requer Java 7), você pode obter informações mais básicas através dojarsigner
comando:Infelizmente, isso não mostra a impressão digital SHA1, mas mostra a identidade do proprietário X.509, juntamente com as datas de validade do certificado. Por exemplo:
Você pode ignorar qualquer mensagem "CertPath não validado", juntamente com avisos sobre cadeias de certificados ou registros de data e hora; eles não são relevantes neste caso.
Compare os valores Proprietário, SHA1 e Expiração entre os APKs
Se o valor da identidade Proprietário / X.509 for
CN=Android Debug, O=Android, C=US
, você assinou o APK com sua chave de depuração , não a chave de versão originalSe o valor da impressão digital SHA1 for diferente entre os APKs originais e de atualização, você não utilizou a mesma chave de assinatura nos dois APKs
Se os valores de identidade do Proprietário / X.509 forem diferentes ou as datas de validade do certificado diferirem entre os dois APKs, você não utilizou a mesma chave de assinatura nos dois APKs
Observe que, mesmo que os valores de Proprietário / X.509 sejam idênticos entre os dois certificados, isso não significa que os certificados sejam idênticos - se alguma outra coisa não corresponder - como os valores da impressão digital -, os certificados serão diferentes.
Pesquise o keystore original, verifique os backups
Se os dois APKs tiverem informações de certificado diferentes, você deverá encontrar o keystore original, ou seja, o arquivo com o primeiro valor de impressão digital SHA1 que o Google Play (ou
keytool
informado pelo ).Pesquise todos os arquivos de keystore que você pode encontrar no seu computador e em todos os backups que você possui, até encontrar o com a impressão digital SHA1 correta:
Basta pressionar Enterse for solicitada a senha - você não precisa necessariamente inseri-la se quiser verificar rapidamente o valor SHA1.
Não consigo encontrar o keystore original em nenhum lugar
Se você não conseguir encontrar o keystore original, nunca poderá publicar nenhuma atualização neste aplicativo específico.
O Android menciona isso explicitamente na página Como assinar seu aplicativo :
Após o primeiro lançamento de um APK, todos os lançamentos subsequentes devem ser assinados com a mesma chave exata.
Posso extrair a chave de assinatura original do APK original?
Não. Isso não é possível. O APK contém apenas informações públicas e não suas informações de chave privada.
Posso migrar para uma nova chave de assinatura?
Não. Mesmo se você encontrar o original, não poderá assinar um APK com a chave A, assinar a próxima atualização com as duas teclas A e B e assinar a próxima atualização depois com apenas a tecla B.
É tecnicamente possível assinar um APK (ou qualquer arquivo JAR) com várias chaves , mas o Google Play não aceita mais APKs com várias assinaturas.
Tentar fazer isso resultará na mensagem "Seu APK foi assinado com vários certificados. Assine apenas com um certificado e faça o upload novamente".
O que eu posso fazer?
Você precisará criar seu aplicativo com um novo ID de aplicativo (por exemplo, alterar de "com.example.myapp" para "com.example.myapp2") e criar uma nova listagem no Google Play.
Possivelmente, você também precisará alterar seu código para que as pessoas possam instalar o novo aplicativo, mesmo que tenham o aplicativo antigo instalado, por exemplo, você precisa garantir que não tenha provedores de conteúdo conflitantes.
Você perderá sua base de instalação existente, revisões etc. e precisará encontrar uma maneira de fazer com que seus clientes existentes desinstale o aplicativo antigo e instale a nova versão.
Novamente, verifique se você possui backups seguros do keystore e das senhas que você usa para esta versão.
fonte
[CertPath not validated: Path does not chain with any of the trust anchors]
, não é um problema? Eu vejo meu nome na posiçãoCN
, então acho que assinou adequadamente, ele :)Nada - o Google diz claramente que o aplicativo é identificado pelas chaves usadas para assiná-lo. Conseqüentemente, se você perdeu as chaves, precisará criar um novo aplicativo.
fonte
Hoje eu enfrentei o mesmo problema, infelizmente, eu estava tendo dois apelidos no meu arquivo keystore.
fonte
Acabei de fazer isso acontecer do nada. Eu realmente não acho que mudei nada.
No entanto,
Build => Clean Project
consertou.fonte
Aqui eu recebo a resposta para essa pergunta. Depois de procurar por muito tempo, finalmente eu consegui decifrar a chave e a senha para isso. Eu esqueço minha chave e alias também o arquivo jks, mas felizmente eu sei o monte de senha que eu coloquei nele. mas encontrar combinações corretas para essa foi a tarefa mais difícil para mim.
Solução - Faça o download - Plug-in Keytool IUI versão 2.4.1
a janela irá aparecer agora, mostrando o nome alternativo ..se o arquivo jks estiver correto .. clique com o botão direito do mouse no alias e clique em "ver cadeia de certificados" .. mostrará a chave SHA1 .. combine essa chave com a chave que você obtiver enquanto você carregava o apk na google app store ...
se corresponder, você estará com o arquivo jks e o alias corretos ..
agora sorte eu tenho monte de senha para combinar ..
agora vá para este scrren coloque o mesmo caminho jks .. e a senha (entre a senha que você possui) coloque qualquer caminho no "arquivo de certificado"
se a tela mostrar algum erro, a senha não será correspondente. se não mostrar nenhum erro, significa que você está com o arquivo jks correto. alias e senha corretos () agora com isso você pode enviar seu apk na play store :)
fonte
Se você tiver um arquivo apk anterior com você (backup), use o jarSigner para extrair o certificado daquele apk, use essa chave ou use keytool para clonar esse certificado, pois isso pode ajudar ... Links úteis são documentos do jarsigner e documentos do keytools .
fonte
Eu recomendo o Keystore Explorer ( https://keystore-explorer.org/ ), que permite acessar seu keystore sem precisar carregá-lo no Google Play. Dessa forma, você pode solucionar se está digitando sua senha incorretamente.
fonte
Você pode usar o novo recurso de assinatura do aplicativo Google play para gerar um novo arquivo de chave.
Depois de maio de 2017, a Google Play Store adiciona um novo recurso à Play Store e às Boas Notícias para Desenvolvedores Android. Com esse recurso, o desenvolvedor pode atualizar seu aplicativo ou Apk que perderam um arquivo do KeyStore. você precisa ativar a assinatura do aplicativo Google Play no console da Play Store.
https://support.google.com/googleplay/android-developer/answer/7384423?hl=en
http://www.geekcodehub.com/2018/05/23/keystore-lost-in-android/
fonte
Eu enfrentei esse problema recentemente, depois de tentar maneiras diferentes de fazer login, como ativar a V1 ou V2, fazer login alterando o nome do alias e a última vez que soube que estou usando o arquivo de armazenamento de chaves errado
fonte
Meu erro [bobo] foi que eu usei o arquivo app-debug.apk em vez do arquivo app-release.apk. Você precisa escolher "release" no quadro "Build Variants" ao gerar APK assinado. O arquivo app-release.apk deve estar localizado na pasta "app \ release" na raiz do seu projeto.
fonte