Jarsigner: incapaz de firmar jar: java.util.zip.ZipException: entrada no válida tamaño comprimido (esperado 463 pero tiene 465 bytes)

Cuando estoy firmando el apk, me sale "jarsigner: incapaz de firmar jar: java.util.zip.ZipException: entrada no válida tamaño comprimido (esperado 463 pero tiene 465 bytes)" este mensaje de error. El tamaño de apk es casi 1 MB. Cuando reduzco el tamaño a 500KB, firmando éxito. ¿Por qué esto así? .. Cualquier idea?

Está intentando firmar un .apk ya firmado. Necesita exportar un archivo .apk sin firmar y luego firmarlo con jarsigner .

Definitivamente puede firmar un apk firmado varias veces utilizando diferentes claves :

Tenga en cuenta que puede firmar un APK varias veces con claves diferentes.

Por ejemplo, logré firmar un Debug-Apk con la clave de liberación para poder probar las actualizaciones de las versiones liberadas. Además, pude firmar un apk ya lanzado con la clave de depuración para reproducir errores.

Esto es lo que debes hacer

  1. Cambie el nombre del archivo .apk a .zip
  2. Descomprima el archivo .zip y quite la carpeta META-INF
  3. Cierre la carpeta nuevamente y cambie el nombre a .apk
  4. Firmar el apk:
  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 Firmar en modo de depuración .

Esta es la versión 1 Liner / 1 Step de la respuesta de @ Joerg arriba:

 zip -d foo.apk META-INF/\* 

Que utiliza el construido en "eliminar de archivos existentes" funcionalidad del comando zip . Cuando ejecutes 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. Eliminarlos le permite firmar de nuevo.

También quisiera 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

De acuerdo con los documentos googles puede firmar un apk varias veces http://developer.android.com/guide/publishing/app-signing.html#signapp . Si no puede obtener una versión sin firmar, sólo puede inflar el apk y luego volver a hacerlo, entonces podrá firmarlo.

Por lo que he enfrentado a este error, se produce cuando intenta firmar un archivo .apk zipaligned.
Parece que jarsigner no puede soportar algunos de los cambios zipalign. Esto no ocurre con frecuencia.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.