He decodificado un APK con apktool (ya que se perdió el código fuente original) para poder solucionar algunos problemas con los archivos xml de diseño. Luego lo reconstruí con apktool y cuando intenté instalarlo en mi dispositivo (usando adb: adb install appname.apk) me dio este error:
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
Sin embargo, el apk original fue firmado por un almacén de claves (en el IDE de eclipse), este no lo es, ¿cómo puedo firmarlo correctamente con su archivo keystone original fuera de Eclipse?
android
android-install-apk
apk
svarog
fuente
fuente
Respuestas:
crear una clave usando
luego firme el apk usando:
Revisa aquí para mas información
fuente
jarsigner
yapksigner
? Uno requiere firmar y luego zipaligning y el otro zipaligning y luego firmarProceso automatizado:
Utilice esta herramienta (utiliza el nuevo apksigner de Google):
https://github.com/patrickfav/uber-apk-signer
Descargo de responsabilidad: soy el desarrollador :)
Proceso manual:
Paso 1: Genere el almacén de claves (solo una vez)
Necesita generar un almacén de claves una vez y usarlo para firmar su
unsigned
apk. Utilice el proporcionado por el JDK que se encuentra enkeytool
%JAVA_HOME%/bin/
Paso 2 o 4: Zipalign
zipalign
que es una herramienta proporcionada por el SDK de Android que se encuentra en, por ejemplo,%ANDROID_HOME%/sdk/build-tools/24.0.2/
es un paso de optimización obligatorio si desea cargar el apk en Play Store.Nota: cuando utilice el antiguo
jarsigner
, deberá zipalign DESPUÉS de firmar. Cuando usa el nuevoapksigner
método, lo hace ANTES de firmar (confuso, lo sé). Invocar zipalign antes de apksigner funciona bien porque apksigner conserva la alineación y la compresión del APK (a diferencia de jarsigner).Puede verificar la alineación con
Paso 3: Firmar y verificar
Uso de herramientas de compilación 24.0.2 y anteriores
Use
jarsigner
que, como la herramienta de teclas, viene con la distribución JDK que se encuentra en%JAVA_HOME%/bin/
y úsela así:y se puede verificar con
Uso de herramientas de compilación 24.0.3 y posteriores
Android 7.0 presenta APK Signature Scheme v2, un nuevo esquema de firma de aplicaciones que ofrece tiempos de instalación de aplicaciones más rápidos y más protección contra alteraciones no autorizadas en archivos APK (consulte aquí y aquí para obtener más detalles). Por lo tanto, Google implementó su propio firmante de apk llamado
apksigner
(¡duh!). El archivo de script se puede encontrar en%ANDROID_HOME%/sdk/build-tools/24.0.3/
(el .jar está en la/lib
subcarpeta). Úselo asíy se puede verificar con
La documentación oficial se puede encontrar aquí.
fuente
[INSTALL_PARSE_FAILED_NO_CERTIFICATES]
). Verificar con uber-apk-signer me dio más informaciónsignature 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]]
. Sí, ¿Android 4.2.2, SHA256 no está ahí? ideas?La forma más rápida es firmar con el almacén de claves de depuración:
o en Windows:
fuente
Utiliza jarsigner para firmar APK. No tiene que firmar con el almacén de claves original, simplemente genere uno nuevo. Lea los detalles: http://developer.android.com/guide/publishing/app-signing.html
fuente
Para aquellos de ustedes que no quieren crear un archivo bat para editar para cada proyecto, o no quieren recordar todos los comandos asociados con los programas keytools y jarsigner y solo quieren hacerlo en un proceso, use este programa:
http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx
Lo construí porque estaba harto del largo proceso de tener que escribir todas las ubicaciones de los archivos cada vez.
Este programa puede guardar su configuración, por lo que la próxima vez que lo inicie, solo necesita presionar Generar y lo manejará por usted. Eso es.
No requiere instalación, es completamente portátil y guarda sus configuraciones en un CSV en la misma carpeta.
fuente
Respuesta actualizada
Compruebe https://shatter-box.com/knowledgebase/android-apk-signing-tool-apk-signer/
Respuesta antigua
compruebe apk-signer una buena forma de firmar su aplicación
fuente