
[TECH] Firma con apksigner y APK Signature Scheme v2
En la publicación anterior (FIRMA DE APLICACIONES ANDROID Y ZIPALIGN) discutimos cómo firmar con jarsigner en archivos apk y aab usando APK Signature Scheme v1.
En esta publicación, discutiremos sobre la firma de archivos apk usando apksigner.
Quizás te preguntes por qué necesitamos saber sobre la firma usando apksigner cuando podemos usar jarsigner.
APK Signature Scheme v2 se introdujo en Android 7.0 para proteger los archivos apk de manera más vital.
Después de eso, APK Signature Scheme v3 se introdujo en Android 9.0 y APK Signature Scheme v4 se introdujo en Android 11.0.
Antes de APK Signature Scheme v2, la firma se basaba en JAR firmados mediante jarsigner, y desde v2 se empezó a basar en apksigner.
Entonces, ¿en qué casos firmamos utilizando apksigner?
1) En caso de que se haya seleccionado la opción Signature Versions v2 al crear una aplicación. (APK Signature Scheme v2)
2) En caso de que targetSdkVersion se haya establecido en un valor superior a 30 al crear una aplicación
En los casos anteriores, la firma debe realizarse mediante apksigner.
No existen problemas importantes para que una aplicación se instale y ejecute al firmar con jarsigner, pero puede producirse un error al cargar la aplicación en Google Play Console.
Cómo comprobar la versión del esquema de firma de una aplicación
Es la versión V2 en caso de que esté marcada la opción "V2 (firma APK completa)" en "Generar paquete firmado o APK"

java -jar [apksigner.jar Path] verify -v --print-certs [Apk’s Path before applying LIAPP]
Si Verificado usando el esquema v2 (Esquema de firma APK v2) es verdadero, entonces es V2; si es falso, entonces es V1.
zipalign
Por lo tanto, solo debe realizar la alineación zip antes de firmar el APK.
zipalign -f -v 4 "Ruta del archivo apk que necesita la alineación zip" "Ruta del archivo apk que se guardará después de la alineación zip"

Firma con apksigner
[ Windows ]
java -jar [APKSIGNER_PATH] sign -v --out [SAVED_APK_PATH] --ks [KEYSTORE_PATH] --ks-key-alias [ALIAS_NAME] [APK_FILE_PATH]
[ MAC ]
[APKSIGNER_PATH] sign -v --out [SAVED_APK_PATH] --ks [KEYSTORE_PATH] --ks-key-alias [ALIAS_NAME] [APK_FILE_PATH]
La herramienta apksigner, disponible en la revisión 24.0.3 y posteriores de las herramientas de compilación del SDK de Android, puede consultarla como se muestra a continuación.
1) Verifique la ruta del SDK en Android Studio
Menú de herramientas => Administrador de SDK => Verificar la ruta de ubicación del SDK de Android
2) Verifique el archivo Apksigner en el directorio del SDK
Directorio del SDK => directorio build-tools => directorio buildToolsVersion => directorio lib => verifique el archivo apksigner.jar
En el caso de MAC, verifique el archivo apksigner en el directorio buildToolsVersion
Contraseña del almacén de claves para el firmante n.° 1:
Al escribir la contraseña del almacén de claves, los caracteres de la contraseña no se mostrarán en la pantalla, pero se ingresarán.
Una vez que se haya ingresado la contraseña correcta del almacén de claves, puede continuar con el siguiente paso.
Si la contraseña del almacén de claves y la contraseña de la clave son idénticas, la firma se realizará de inmediato.
Si la contraseña del almacén de claves y la contraseña de la clave son diferentes, se le solicitará que ingrese la contraseña de la clave.
Contraseña de la clave "KEY_NAME" para el firmante n.° 1:
Una vez que se haya ingresado la contraseña de la clave correcta, se procederá a la firma y se mostrará "Firmado" cuando se complete la firma.

Si usa esta opción, no se mostrará el mensaje para ingresar la contraseña, solo se ingresará automáticamente.
[ Windows ]
java -jar [APKSIGNER_PATH] sign -v --out [SAVED_APK_PATH] --ks [KEYSTORE_PATH] --ks-pass pass:"keystore_password" --key-pass pass:"key_password" --ks-key-alias [ALIAS_NAME] [APP_FILE_PATH]
[ MAC ]
[APKSIGNER_PATH] sign -v --out [SAVED_APK_PATH] --ks [KEYSTORE_PATH] --ks-pass pass:"keystore_password" --key-pass pass:"key_password" --ks-key-alias [ALIAS_NAME] [APP_FILE_PATH]
Verificar firma
[ Windows ]
java -jar [APKSIGNER_PATH] verify -v --print-certs [APP_FILE_PATH]
[ MAC ]
[APKSIGNER_PATH] verify -v --print-certs [APP_FILE_PATH]
Si la firma funciona correctamente, puede marcar "Verificado usando v2
esquema (Esquema de firma APK v2): verdadero" como se muestra a continuación.

zipalign y firma con archivo de script
Para continuar con este proceso fácilmente, compartimos el archivo de script.
[ Archivo Bat para usuarios de Windows ]
[ [Archivo Sh para usuarios de MAC ]
Después de descargar el archivo, ábralo con el bloc de notas o un editor de texto. Guárdelo después de editar el contenido a continuación.
KeyStorePath="Ruta del almacén de claves"
ALIAS_NAME="Nombre de alias"
STORE_PASS="Contraseña del almacén de claves"
KEY_PASS="Contraseña de clave"
ZIP_ALIGN="ruta del archivo zipalign"
APKSIGNER_PATH="ruta del archivo apksigner"
Los archivos zipalign y apksigner se encuentran en build-tools en la ruta donde está instalado Android SDK.
Si desea ingresar su propia contraseña sin guardarla, se deben eliminar las opciones relacionadas con --ks-pass y --key-pass.
Los usuarios de Windows pueden arrastrar la aplicación archivo que se firmará en el archivo LIAPP_sign_window.bat y se ejecutará inmediatamente.
Los usuarios de MAC pueden ejecutar un programa de terminal arrastrando los archivos de script y de aplicación en orden o ingresando las rutas como se muestra a continuación.
Por ejemplo, /Users/username/Downloads/LIAPP_apksign_mac.sh /Users/username/AndroidStudioProjects/MyApplication/app/release/app-release.apk
Por ejemplo, chmod +x /Users/username/Downloads/LIAPP_apksign_mac.sh
Una vez que se ejecute correctamente, primero se realizará zipalign y luego se realizará la firma.
Si se confirmó el mensaje "Firmado" sin ningún problema durante el proceso de firma, presione cualquier tecla para continuar con la firma.
El archivo completo se guarda con _signed después del nombre del archivo.
Para obtener más información sobre la firma con apksigner y el esquema de firma APK, consulte la siguiente URL.
apksigner : https://developer.android.com/studio/command-line/apksigner
app-signing : https://developer.android.com/studio/publish/app-signing
APK Signature Scheme : https://source.android.com/security/apksigning
LIAPP, ofrecemos el mejor servicio posible.
#seguridad_de_aplicaciones_android #seguridad_de_aplicaciones_ios #seguridad_de_aplicaciones_ios #reforzamiento_del_código_fuente #paquete_de_aplicaciones_android #AAB #APK #Paquete_de_aplicaciones_Android #seguridad_de_aplicaciones_móviles #seguridad_de_juegos_móviles #seguridad_del_código_fuente #Antimanipulación #anti_volcado_de_memoria #anti_malware #detección_de_herramientas_de_piratería #anti_reempaquetado