Explicación detallada de jarsigner y apksigner, herramientas de firma APK en Android
Reimpreso de blogs.com/slysky/p/9780015.html
1. Introducción a la herramienta
jarsigner es una herramienta general proporcionada por JDK para la firma de paquetes jar.
Ubicado en JDK/bin/jarsigner.exe
apksigner es una herramienta especial proporcionada oficialmente por Google para la firma y verificación de apk de Android
Ubicado en Android. SDK/build -tools/SDK version/apksigner.bat
Ya sea un paquete apk o un paquete jar, son esencialmente paquetes comprimidos en formato zip, por lo que sus procesos de firma son similares (solo firma V1) , p>
Las dos herramientas anteriores pueden firmar paquetes apk de Android
1. La diferencia entre firmas V1 y V2
Haga clic en el menú Construir->Generar. en Android Studio firmado apk... La firma del paquete tiene dos opciones de firma V1 (Firma Jar) V2 (Firma APK completa),
A partir de Android 7.0, Google ha agregado un nuevo esquema de firma V2 Esquema (Firma APK );
p>
Sin embargo, para versiones inferiores a Android 7.0, solo se puede utilizar el antiguo esquema de firma V1 (firma JAR)
Firma V1:
Firma V2:
Las ventajas de la firma V2 son obvias:
Nota: la herramienta apksigner utiliza firmas V1 y V2 de forma predeterminada para ser compatible con versiones inferiores a Android 7.0
2. zipalign y firma V2
Ubicado en Android SDK/build-tools/SDK version/zipalign.exe
zipalign es una herramienta para alinear paquetes zip, para que los datos sin comprimir en el paquete APK se organicen de manera ordenada, reduciendo así el consumo de memoria en tiempo de ejecución de la aplicación
zipalign -v 4 in.apk out.apk //Optimización de alineación de 4 bytes
zipalign -c -v 4 in.apk //Compruebe si el APK está alineado
zipalign se puede ejecutar después de la firma V1
Pero zipalign no se puede ejecutar después de la firma V2 ¡Solo se puede ejecutar antes de la firma V2! ! !
2. Pasos para la firma
1. Generar par de claves (el almacén de claves ya existe, se puede ignorar)
Android Studio firma la aplicación durante la depuración. Se creará un almacén de claves predeterminado. ser utilizado:
1. Generar par de claves
Ingrese JDK/bin e ingrese el comando
Parámetros:
Consejo: Puede reutilice este comando para crear varios pares de claves en el mismo almacén de claves
Por ejemplo: agregue un nuevo par de claves en debug.keystore, el alias es lanzamiento
keytool -genkeypair -keystore debug .keystore -alias release -validity 30000
2. Ver el almacén de claves
Ingrese JDK/bin e ingrese el comando
keytool -list -v -keystore key
Nombre de la biblioteca
Parámetros:
Por ejemplo:
keytool -list -v -keystore debug.keystore
Ahora clave debug.keystore Hay dos pares de claves en la biblioteca, los alias son androiddebugkey release
2. Firma
1. Método 1 (jarsigner, solo admite firma V1)
Ingrese JDK/bin, ingrese el comando
A partir de JDK7, el algoritmo predeterminado de jarsigner es SHA256, pero Android 4.2 y versiones anteriores no admiten este algoritmo,
Por lo tanto, necesita para modificar el algoritmo y agregar el parámetro -digestalg SHA1 - sigalg SHA1withRSA
Parámetros:
Por ejemplo:
Firmado con JDK7 y superior jarsigner, no admite Android 4.2 o inferior
jarsigner -keystore debug .keystore MyApp.apk androiddebugkey
Firmado con JDK7 y superior jarsigner, compatible con Android 4.2 y inferior
jarsigner - keystore debug.keystore -digestalg SHA1 -sigalg SHA1withRSA MyApp.apk androiddebugkey
2. Método 2 (apksigner, usa firmas V1 y V2 de forma predeterminada)
Ingrese el SDK/compilación de Android -tools/SDK version e ingrese el comando
Si el almacén de claves tiene varios pares de claves, debe especificar un alias de clave
Deshabilitar la firma V2
apksigner sign --v2-signing-enabled false --ks Nombre del almacén de claves xxx apk
Parámetros:
Por ejemplo:
Solo hay un par de claves en el almacén de claves debug.keystore
apksigner sign --ks debug.keystore MyApp.apk
Hay varios pares de claves en el almacén de claves debug.keystore, por lo que se debe especificar el alias de clave
apksigner sign --ks debug.keystore - -ks-key-alias androiddebugkey MyApp.apk
3. Verificación de firma
1. Método 1 (keytool , solo admite verificación de firma V1)
Ingrese JDK/bin, ingrese el comando
keytool -printcert -jarfile MyApp.apk (muestra información del certificado de firma)
Parámetros:
2. Método 2 (apksigner, admite verificación de firma V1 y V2)
Ingrese la versión del SDK/build-tools/SDK de Android e ingrese el comando
apksigner verificar -v --print-certs xxx.apk
Parámetros:
Por ejemplo:
apksigner verificar -v MiAplicación.apk