Colección de citas famosas - Slogan de motivación - Explicación detallada de jarsigner y apksigner, herramientas de firma APK en Android

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) ,

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