Cómo firmar un APK ya compilado

He descodificado un APK con apktool (como el código fuente original se perdió) por lo que podría arreglar algunos problemas con los archivos xml de diseño. Lo he reconstruido de nuevo con apktool y cuando intenté instalarlo en mi dispositivo (usando adb: adb install appname.apk) me dio este error:

[INSTALL_PARSE_FAILED_NO_CERTIFICATES] 

El apk original sin embargo fue firmado por un keystore (en eclipse IDE), este no es, ¿cómo puedo firmarlo correctamente con su archivo de trama original fuera de Eclipse?

Crear una clave usando

 keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 

Luego firma el apk usando:

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore my_application.apk alias_name 

Marque aquí para más información

Proceso automatizado:

Utilice esta herramienta (utiliza el nuevo apksigner de Google):

https://github.com/patrickfav/uber-apk-signer

Exención de responsabilidad: Im the developer 🙂

Proceso manual:

Paso 1: Generar Keystore (sólo una vez)

Necesita generar un almacén de claves una vez y usarlo para firmar su apk unsigned . Utilice el keytool proporcionado por el JDK que se encuentra en %JAVA_HOME%/bin/

 keytool -genkey -v -keystore my.keystore -keyalg RSA -keysize 2048 -validity 10000 -alias app 

Paso 2 o 4: Zipalign

zipalign que es una herramienta proporcionada por el SDK de Android que se encuentra en %ANDROID_HOME%/sdk/build-tools/24.0.2/ es un paso de optimización obligatorio si desea cargar el apk en Play Store.

 zipalign 4 -p my.apk my-aligned.apk 

Nota: al usar el jarsigner viejo usted necesita zipalign DESPUÉS de firmar. Al usar el nuevo método de apksigner lo haces ANTES de firmar (confuso, lo sé). Invocando zipalign antes apksigner funciona bien porque apksigner preserva alineación y compresión APK (a diferencia de jarsigner).

Puede verificar la alineación con

 zipalign -c 4 my-aligned.apk 

Paso 3: firmar y verificar

Uso de build-tools 24.0.2 y anteriores

Use jarsigner que, al igual que el keytool, viene con la distribución JDK que se encuentra en %JAVA_HOME%/bin/ y lo usa de la siguiente manera:

 jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my.keystore my-app.apk my_alias_name 

Y se puede verificar con

 jarsigner -verify -verbose my_application.apk 

Uso de build-tools 24.0.3 y versiones posteriores

Android 7.0 introduce APK Signature Scheme v2, un nuevo esquema de firma de aplicaciones que ofrece tiempos de instalación de aplicaciones más rápidos y más protección contra las alteraciones no autorizadas a los archivos APK. (Véase aquí y aquí para más detalles). Por lo tanto, Google implementó su propio firmante apk llamado apksigner (duh!) El archivo de script se puede encontrar en %ANDROID_HOME%/sdk/build-tools/24.0.3/ (el .jar está en la subcarpeta /lib ). Úsalo así

 apksigner sign --ks my.keystore my-app.apk --ks-key-alias alias_name 

Y se puede verificar con

 apksigner verify my-app.apk 

La documentación oficial se puede encontrar aquí.

Usa jarsigner para firmar APK. No tiene que firmar con el almacén de claves original, simplemente genere uno nuevo. Lea los detalles: http://developer.android.com/guide/publishing/app-signing.html

La manera más rápida es firmando con el depurador keystore: jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore ~/.android/debug.keystore app.apk androiddebugkey -storepass android

Compruebe a apk-signer una buena manera de firmar su aplicación

Para aquellos de ustedes que no quieren crear un archivo de murciélagos para editar para cada proyecto, o no quieren recordar todos los comandos asociados con los keytools y los programas jarsigner y sólo quieren hacerlo en un proceso, utilicen este programa:

http://lukealderton.com/projects/programs/android-apk-signer-aligner.aspx

Lo construí porque estaba harto del largo proceso de tener que escribir todas las ubicaciones de los archivos cada vez.

Este programa puede guardar su configuración para que la próxima vez que lo inicie, solo tiene que pulsar Generar un archivo que lo manejará para usted. Eso es.

No requiere instalación, es totalmente portátil y guarda sus configuraciones en un CSV en la misma carpeta.

  • Crear apk separado para sabor independiente en android
  • Error: archivos duplicados durante el envasado de APK
  • Android - ¿Cómo descifrar y descompilar cualquier archivo APK?
  • Permiso Denial: Intención inicial de null (pid = 30992, uid = 2000) no exportada desde uid 10142
  • Eclipse: no inicia la aplicación después de instalar .apk (android)
  • Falso "Generar firmado APK - APK (s) generado correctamente" pop-up de mensaje cada vez que hago una compilación (después de generar un apk firmado una vez)
  • Error en la instalación del APK:
  • Fuente de instalación de Android
  • Cómo obtener información de la aplicación o del paquete desde el archivo apk en la aplicación android en el entorno de Android
  • El tamaño de la instalación de la aplicación es el mismo en diferentes tipos de dispositivos
  • Cómo eliminar fácilmente los recursos de localización innecesarios de bibliotecas añadidas en la versión APK
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.