android - una - jarsigner apk
jarsigner: no se puede firmar jar: java.util.zip.ZipException: tamaño comprimido de entrada no válida(se espera 463 pero tiene 465 bytes) (5)
De acuerdo con los documentos de Google, puede firmar un apk varias veces http://developer.android.com/guide/publishing/app-signing.html#signapp . Si no puede obtener una compilación sin firmar, puede inflar la apk y luego reorganizarla, y luego podrá firmarla.
cuando firmo el apk, aparece "jarsigner: no se puede firmar jar: java.util.zip.ZipException: tamaño comprimido de entrada no válida (se espera 463 pero tiene 465 bytes)" este mensaje de error. El tamaño de la aplicación es de casi 1 MB. Cuando reduzco el tamaño a 500 KB, firmo el éxito. ¿Por qué esto es así? ... ¿Alguna idea?
Definitivamente puede firmar una aplicación ya firmada varias veces usando diferentes claves :
Tenga en cuenta que puede firmar un APK varias veces con diferentes claves.
Por ejemplo, logré firmar una Debug-Apk con la clave de liberación para poder probar las actualizaciones de las versiones lanzadas. Además, pude firmar una aplicación ya lanzada con la clave de depuración para reproducir errores.
Esto es lo que deberías hacer
- Cambie el nombre del archivo
.apk
a.zip
- Descomprime el archivo
.zip
y elimina la carpetaMETA-INF
- Comprime la carpeta de nuevo y
.apk
nombre a.apk
- Firme la aplicación:
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 /
-keystore my-release-key.keystore my_application.apk alias_name
Para la clave de depuración, el alias debe ser androiddebugkey
y la contraseña android
. El almacén de claves de depuración es por defecto $HOME/.android/debug.keystore
. Consulte también Iniciar sesión en el modo de depuración .
En lo que respecta a este error, ocurre cuando intentas firmar un archivo .apk zipaligned.
Parece que jarsigner no puede soportar algunos de los cambios zipalign. Esto no ocurre a menudo.
Esta es la versión de 1 Liner / 1 Step de la respuesta de @Jerg anterior:
zip -d foo.apk META-INF//*
Eso usa la funcionalidad integrada "eliminar del archivo existente" del comando zip
. Cuando ejecutas ese comando deberías ver:
deleting: META-INF/MANIFEST.MF
deleting: META-INF/CERT.SF
deleting: META-INF/CERT.RSA
... como la salida. Esos archivos son la firma existente. Al eliminarlos, puede volver a firmarlo.
También me gustaría reiterar que debe asegurarse de pasar los -sigalg SHA1withRSA
y -digestalg SHA1
al jarsigner
para evitar este problema: https://code.google.com/p/android/issues/detail?id=19567
Está intentando firmar un .apk
ya firmado. Necesita exportar un archivo .apk
sin firmar y luego firmarlo con jarsigner
.