android - una - play encrypt private key
¿Puedo volver a firmar una.apk con un certificado diferente de lo que vino? (7)
Firma del lanzamiento: $ 1.apk -> $ 1_release.apk "GeneralMills & GoogleApps # 2012 Paso 1: Eliminación de cualquier firma anterior Cambie la extensión de su .apk a .zip Abra y elimine la carpeta META-INF Cambie la extensión a .apk o Comando : • zip [originalapk] Ejemplo: • zip "$ 1" .apk -d
Paso 2: firma con release.keystore .. Comando: • jarsigner -verbose -keystore [keystorefile] -signedjar [unalignedapk] [originalapk] alias_name Ejemplo: • C: / Program Files / Java / jdk1.6.0_43 / bin> jarsigner - verbose -keystore release.keystore -signedjar "$ 1" _unaligned.apk "$ 1" .apk release
Paso 3: comando de alineación: • zipalign -f 4 [unalignedapk] [releaseapk] Ejemplo: • C: / Users / G535940 / Descargas / adt-bundle-windows-x86 / adt-bundle-windows-x86 / sdk / too ls> zipalign -f 4 "$ 1" _unaligned.apk "$ 1" _release.apk
Paso 4: Comando de limpieza: • rm 4 [unalignedapk] Ejemplo: • rm "$ 1" _unaligned.apk
Comandos adicionales pueden ayudar:
Para generar una nueva clave con keytool keytool -genkey -alias -keystore
Para listar las claves keytool -list -keystore
Comando para generar un keyhash para las características de Facebook
Comando: • keytool -exportcert -alias alias_name -keystore [keystorefile] | openssl sha1 -binary | openssl base64
Ejemplo: • C: / Archivos de programa / Java / jdk1.6.0_43 / bin> keytool -exportcert -alias release -keyst release release.keystore | opens l sha1 -binary | openssl base64
Nota: Para firmar nuestros apk, hemos degradado JDK de 1.7 a 1.6.0_43 actualización.
Motivo: A partir de JDK 7, el algoritmo de firma predeterminado ha cambiado, lo que requiere que especifique los algoritmos de firma y resumen (-sigalg y -digestalg) cuando firma un APK.
Comando: jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore [keystorefile] [originalapk] alias_name
Si tengo una aplicación, ¿puedo eliminar la firma actual y cómo volver a firmarla con un archivo .keystore diferente y aún así tener la instalación de la aplicación?
Actualización : Logré hacer que funcionara con la solución de Jorgesys y donde me equivoqué antes fue que descomprimí el archivo .apk y lo reescribí después de eliminar la carpeta META-INF y cambié la extensión de archivo a .apk. Lo que debería haber hecho es simplemente abrirlo con winzip y eliminar la carpeta dentro de winzip.
Si está buscando una solución rápida, puede usar el script de apk-resigner de código abierto o la herramienta apksigner de Google.
Script de apk-resigner de código abierto https://github.com/onbiron/apk-resigner
Todo lo que tienes que hacer es descargar el script y simplemente escribir:
./signapk.sh application.apk keystore key-pass alias
- Alternativamente, incluso una solución más simple, puede usar la herramienta de línea de comandos
apksigner
de Google, que está disponible en la revisión 24.0.3 y posteriores.
apksigner sign --ks release.jks application.apk
Puede encontrar más información sobre la herramienta apksigner en el sitio de desarrollador de Android.
https://developer.android.com/studio/command-line/apksigner.html
Suponiendo que sus claves están almacenadas en keys.keystore
, puede ejecutar:
$ keytool -list -keystore keys.keystore
Your keystore contains 1 entry
your_key_alias, Jan 3, 2013, PrivateKeyEntry,
Certificate fingerprint (SHA1): 8C:C3:6A:DC:7E:B6:12:F1:4C:D5:EE:F1:AE:17:FB:90:89:73:50:53
para determinar el alias de tu clave Entonces corre:
zip -d your_app.apk "META-INF/*"
jarsigner -verbose -keystore keys.keystore /
-sigalg MD5withRSA -digestalg SHA1 -sigfile CERT /
your_app.apk your_key_alias
para volver a firmar your_app.apk
con la clave llamada your_key_alias
.
La opción de -sigfile CERT
extra- -sigfile CERT
parece ser necesaria a partir de JDK 8.
Tenga en cuenta que si usa el esquema de firma v2 (que usará automáticamente si usa build-tools 24.0.3+ en AS), no puede simplemente eliminar la carpeta META-INF de APK, ya que v2 agrega sus datos de firma a un meta bloque de zip.
Sin https://developer.android.com/studio/command-line/apksigner.html Google introducido en build-tools 24.03 (Android 7) puede resignar APK. Simplemente puede repetir el comando de firma para firmar con un nuevo keystore / cert (los antiguos serán eliminados).
apksigner sign --ks keystore.jks signed_app.apk
Plug desvergonzado: si quieres una herramienta más fácil que pueda firmar múltiples aplicaciones y tenga una mejor salida de registro, utiliza: https://github.com/patrickfav/uber-apk-signer (usa el apksigner.jar de Google en el fondo)
Todas las soluciones anteriores funcionan. Solo una nota por qué no funcionó para usted cuando volvió a comprimir:
Algunos de los archivos dentro de .apk deben permanecer almacenados (compresión al 0%). Esto se debe a que Android utilizará la asignación de memoria (mmap) para leer los contenidos sin desempaquetarlos en la memoria. Dichos archivos son .ogg y algunos de los íconos.
prueba esto
1) Cambie la extensión de su archivo .apk a .zip
2) Abra y elimine la carpeta META-INF
3) Cambie la extensión a .apk
4) Usa jarsigner y zipalign con tu nuevo keystore.
Espero eso ayude
zip -d my_application.apk META-INF//*
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name
zipalign -v 4 your_project_name-unaligned.apk your_project_name.apk