Eu decodifiquei um APK com apktool (como o código-fonte original foi perdido) para que eu pudesse corrigir alguns problemas com os arquivos xml de layout. Em seguida, reconstruí-o novamente com o apktool e quando tentei instalá-lo no meu dispositivo (usando adb: adb install appname.apk), ele me deu este erro:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
o apk original, entretanto, foi assinado por um keystore (no eclipse IDE), este não é, como posso assiná-lo corretamente com seu arquivo keystone original fora do Eclipse !?
android
android-install-apk
apk
svarog
fonte
fonte
Respostas:
crie uma chave usando
em seguida, assine o apk usando:
verifique aqui para mais informações
fonte
jarsigner
eapksigner
? Um requer a assinatura e então o zipaligning e o outro o zipaligning e então a assinaturaProcesso automatizado:
Use esta ferramenta (usa o novo apksigner do Google):
https://github.com/patrickfav/uber-apk-signer
Isenção de responsabilidade: eu sou o desenvolvedor :)
Processo Manual:
Etapa 1: gerar keystore (apenas uma vez)
Você precisa gerar um keystore uma vez e usá-lo para assinar seu
unsigned
apk. Use o fornecido pelo JDK encontrado emkeytool
%JAVA_HOME%/bin/
Etapa 2 ou 4: Zipalign
zipalign
que é uma ferramenta fornecida pelo Android SDK encontrada em, por exemplo,%ANDROID_HOME%/sdk/build-tools/24.0.2/
é uma etapa de otimização obrigatória se você deseja fazer o upload do apk para a Play Store.Nota: ao usar o antigo,
jarsigner
você precisa zipalign APÓS a assinatura. Ao usar o novoapksigner
método, você o faz ANTES de assinar (confuso, eu sei). Invocar o zipalign antes do apksigner funciona bem porque o apksigner preserva o alinhamento e a compactação do APK (ao contrário do jarsigner).Você pode verificar o alinhamento com
Etapa 3: assinar e verificar
Usando ferramentas de compilação 24.0.2 e anteriores
Use o
jarsigner
qual, como o keytool, vem com a distribuição JDK encontrada em%JAVA_HOME%/bin/
e use-o assim:e pode ser verificado com
Usando ferramentas de compilação 24.0.3 e mais recentes
O Android 7.0 apresenta o APK Signature Scheme v2, um novo esquema de assinatura de app que oferece tempos de instalação de app mais rápidos e mais proteção contra alterações não autorizadas em arquivos APK (veja aqui e aqui para mais detalhes). Portanto, o Google implementou seu próprio assinante apk chamado
apksigner
(duh!) O arquivo de script pode ser encontrado em%ANDROID_HOME%/sdk/build-tools/24.0.3/
(o .jar está na/lib
subpasta). Use assime pode ser verificado com
A documentação oficial pode ser encontrada aqui.
fonte
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
). Verificar com o uber-apk-signer me deu mais algumas dicassignature VERIFY FAILED
[...]ERROR: JAR signer CERT.RSA: JAR signature META-INF/CERT.RSA uses digest algorithm 2.16.840.1.101.3.4.2.1 and signature algorithm 1.2.840.113549.1.1.1 which is not supported on API Levels [[15, 17]]
. Sim, android 4.2.2, SHA256 não está lá? Ideias?maneira mais rápida é assinando com o keystore de depuração:
ou no Windows:
fonte
Você usa o jarsigner para assinar APKs. Você não precisa assinar com o keystore original, apenas gere um novo. Leia sobre os detalhes: http://developer.android.com/guide/publishing/app-signing.html
fonte
Para aqueles de vocês que não desejam criar um arquivo bat para editar em todos os projetos, ou não desejam se lembrar de todos os comandos associados aos programas keytools e jarsigner e apenas desejam executá-lo em um processo, use este programa:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
Eu o construí porque estava farto do longo processo de ter que digitar todos os locais dos arquivos todas as vezes.
Este programa pode salvar sua configuração, portanto, da próxima vez que você iniciá-lo, você só precisa clicar em Gerar e ele cuidará disso para você. É isso aí.
Não requer instalação, é totalmente portátil e salva suas configurações em um arquivo CSV na mesma pasta.
fonte
Resposta atualizada
Verifique https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
Resposta antiga
verifique o assinante do apk uma boa maneira de assinar seu aplicativo
fonte