cuando estoy firmando el apk, aparece "jarsigner: no puedo firmar jar: java.util.zip.ZipException: entrada inválida tamaño comprimido (se esperaba 463 pero obtuve 465 bytes)" este mensaje de error. El tamaño de la apk es de casi 1 MB. Cuando reduzco el tamaño a 500 KB, firma con éxito. ¿Por qué esto así? ... ¿Alguna idea?
78
Respuestas:
Estás intentando firmar un
.apk
. Necesita exportar un.apk
archivo sin firmar y luego firmarlo conjarsigner
.fuente
Definitivamente puede firmar un apk ya firmado varias veces usando diferentes claves :
Por ejemplo, logré firmar un Debug-Apk con la clave de lanzamiento para poder probar las actualizaciones de las versiones publicadas. Además, pude firmar un apk ya publicado con la clave de depuración para reproducir errores.
Esto es lo que debes hacer
.apk
archivo a.zip
.zip
archivo y elimine laMETA-INF
carpeta.apk
Para la clave de depuración, el alias debe ser
androiddebugkey
y la contraseñaandroid
. El almacén de claves de depuración es predeterminado$HOME/.android/debug.keystore
. Consulte también Iniciar sesión en modo de depuración .fuente
Esta es la versión de 1 línea / 1 paso de la respuesta de @ Joerg anterior:
zip -d foo.apk META-INF/\*
Eso usa la funcionalidad incorporada de "eliminar del archivo existente" del
zip
comando. Cuando ejecuta ese comando, debería ver:deleting: META-INF/MANIFEST.MF deleting: META-INF/CERT.SF deleting: META-INF/CERT.RSA
... como salida. Esos archivos son la firma existente. Eliminarlos le permite volver a firmarlo.
También me gustaría reiterar que debe asegurarse de pasar los argumentos
-sigalg SHA1withRSA
y-digestalg SHA1
aljarsigner
para evitar este problema: https://code.google.com/p/android/issues/detail?id=19567fuente
Según 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, solo puede inflar la apk y luego volver a abrirla, podrá firmarla.
fuente
Por lo que me enfrenté a este error, ocurre cuando intenta firmar un archivo .apk alineado con zipa.
Parece que jarsigner no puede soportar algunos de los cambios de zipalign. Esto no ocurre con frecuencia.
fuente
Encontré esto al firmar mi archivo .aab. La eliminación de la firma duplicada (una vez como parte de la agrupación, una vez manualmente) la solucionó. Esto fue parte del andamio predeterminado de la aplicación nativa de reacción.
El
app/build.gradle
archivo incluye una secciónandroid/buildTypes/release
que tenía susigningConfig
clave establecida. Al generar archivos apk parecía ser ignorado, pero cuando se cambia a formato .aab parece que hizo aplicar esa firma. Cuando hice mi propia firma en CI, se quejó porque ya estaba firmada.fuente