Estoy intentando firmar mi archivo apk. No sé cómo hacerlo. No puedo encontrar buenas direcciones detalladas. Tengo muy poca experiencia en programación, por lo que cualquier ayuda sería apreciada.
De acuerdo, una pequeña descripción general sin referencia o eclipse alrededor, así que deje algo de espacio para errores, pero funciona así
Abra su proyecto en eclipse
Presione el botón derecho del mouse -> herramientas (¿herramientas de Android?) -> exportar aplicación firmada (¿apk?)
Pasar por el asistente:
Haz una nueva tienda de llaves. recuerda esa contraseña
Firma tu aplicación
Guárdalo, etc.
Además, desde el enlace:
Compilar y firmar con Eclipse ADT
Si está utilizando Eclipse con el complemento ADT, puede utilizar el Asistente de exportación para exportar un .apk firmado (e incluso crear un nuevo almacén de claves, si es necesario). El Asistente de exportación realiza toda la interacción con Keytool y Jarsigner por usted, lo que le permite firmar el paquete utilizando una GUI en lugar de realizar los procedimientos manuales para compilar, firmar y alinear, como se discutió anteriormente. Una vez que el asistente haya compilado y firmado su paquete, también realizará la alineación del paquete con zip align. Debido a que el Asistente de exportación utiliza tanto Keytool como Jarsigner, debe asegurarse de que estén accesibles en su computadora, como se describe anteriormente en la Configuración básica para la firma.
Para crear un .apk firmado y alineado en Eclipse:
Seleccione el proyecto en el Explorador de paquetes y seleccione Archivo> Exportar.
Abra la carpeta de Android, seleccione Exportar aplicación de Android y haga clic en Siguiente.
Ahora se inicia el asistente Exportar aplicación de Android, que lo guiará a través del proceso de firma de su aplicación, incluidos los pasos para seleccionar la clave privada con la que firmar el .apk (o crear un nuevo almacén de claves y clave privada).
Complete el Asistente de exportación y su aplicación se compilará, firmará, alineará y estará lista para su distribución.
No entiendo cómo empezar. Estoy usando la versión de eclipse: Helios Service Release 1
chriss
2
pero por favor lea TODO. También hay algunos consejos al final para el eclipse
Nanne
1
en la creación de la clave, ¿qué debo ingresar para el alias?
chriss
9
¿Leíste el manual? -alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.Es solo un alias. Un nombre, por así decirlo. Sugeriría "primera tecla" :-)
Nanne
1
Lo siento, todavía no entiendo. ¿Cómo usaría este alias? ¿Cual es su propósito?
user462990
37
Aquí hay una guía sobre cómo firmar manualmente un APK. Incluye información sobre las novedades apk-signerintroducidas en build-tools 24.0.3(10/2016)
Proceso automatizado:
Utilice esta herramienta (utiliza el nuevo apksigner de Google):
Descargo de responsabilidad: soy el desarrollador :)
Proceso manual:
Paso 1: Genere el almacén de claves (solo una vez)
Necesita generar un almacén de claves una vez y usarlo para firmar su unsignedapk. Utilice el proporcionado por el JDK que se encuentra enkeytool%JAVA_HOME%/bin/
Nota: cuando utilice el antiguo jarsigner, deberá zipalign DESPUÉS de firmar. Cuando usa el nuevo apksignermétodo, lo hace ANTES de firmar (confuso, lo sé). Invocar zipalign antes de apksigner funciona bien porque apksigner conserva la alineación y la compresión del APK (a diferencia de jarsigner).
Puede verificar la alineación con
zipalign -c 4my-aligned.apk
Paso 3: Firmar y verificar
Uso de herramientas de compilación 24.0.2 y anteriores
Uso de herramientas de compilación 24.0.3 y posteriores
Android 7.0 presenta 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 alteraciones no autorizadas en archivos APK (consulte aquí y aquí para obtener más detalles). Por lo tanto, Google implementó su propio firmante de apk llamadoapksigner (¡duh!). El archivo de secuencia de comandos se puede encontrar en %ANDROID_HOME%/sdk/build-tools/24.0.3/(el .jar está en la /libsubcarpeta). Úselo así
Para los usuarios de IntelliJ IDEA o Android Studio, siga estos pasos:
* Desde el menú Build/Generate signed APK
* Necesita crear una ruta de almacenamiento de claves. En el cuadro de diálogo, haga clic en Create new. Creará un archivo jks que incluye sus claves. Seleccione carpeta, defina una contraseña. Entonces su almacén de claves está bien.
* Cree una nueva clave para su aplicación utilizando un alias, contraseña de clave, su nombre, etc.
* Haga clic en Siguiente.
* En el cuadro de diálogo, seleccione Proguard o no.
¡No te preocupes ...! Siga estos pasos a continuación y obtendrá su archivo .apk firmado. También estaba preocupado por eso, pero estos pasos me sacan de la frustración. Pasos para firmar su solicitud:
Exporta el paquete sin firmar:
Haga clic derecho en el proyecto en Eclipse -> Herramientas de Android -> Exportar paquete de aplicaciones sin firmar (como aquí exportamos nuestro GoogleDriveApp.apk al escritorio)
Firme la aplicación usando su almacén de claves y la herramienta jarsigner (siga los pasos a continuación):
Abra cmd -> cambie el directorio donde existe su "jarsigner.exe" (como aquí en mi sistema, existe en "C: \ Archivos de programa \ Java \ jdk1.6.0_17 \ bin"
Le pedirá que proporcione su contraseña: Introduzca la frase de contraseña para el almacén de claves: firmará su apk. Para verificar que la firma sea exitosa, puede ejecutar:
Si está utilizando eclipse con ADT, entonces es sencillo compilar, firmar, alinear y preparar el archivo para su distribución. Lo que tiene que hacer es seguir estos pasos.
Archivo> Exportar.
Exportar aplicación de Android
Examinar -> seleccione su proyecto
Siguiente -> Siguiente
Estos pasos compilarán, firmarán y alinearán en zip su proyecto y ahora está listo para distribuir su proyecto o cargarlo en la tienda Google Play.
Eso es exactamente lo que necesitaba, estaba usando una nueva herramienta de construcción en línea y tuve que usar mi almacén de claves anterior, no el recién generado. Lo único que me faltaba era ZIP ALIGNing el apk, así que si alguien tiene el mismo problema, vaya aquí stackoverflow.com/a/22682132/826194
Larzan
5
Proceso de firma de APK
Para firmar manualmente un archivo APK de Android, ejecute estos tres comandos:
contraseña del almacén de claves: yourApp @ 123
contraseña clave: yourApp @ 123
CMD O / P
D:\ru\SignedBuilds\MySignedApp>keytool -genkey -v -keystore id.keystore
-aliasMySignedApp-keyalg RSA -keysize 2048-validity 10000Enter keystore password:Re-enter new password:Whatis your first andlast name?[Unknown]:MySignedAppSampleWhatis the name of your organizational unit?[Unknown]:InformationTechnologyWhatis the name of your organization?[Unknown]:MySignedAppDemoWhatis the name of your CityorLocality?[Unknown]:MumbaiWhatis the name of your StateorProvince?[Unknown]:MaharashtraWhatis the two-letter country code forthis unit?[Unknown]: IN
Is CN=MySignedAppDemo, OU=InformationTechnology, O=MySignedAppDemo, L=Mumbai, ST=Maharashtra, C=IN corr
ect?[no]: y
Generating2,048 bit RSA key pair andself-signed certificate (SHA256withRSA)with a validity of10,000 days
for: CN=MySignedAppDemo, OU=InformationTechnology, O=MySignedAppDemo, L=Mumbai, ST=Maharashtra,
C=IN
Enter key password for<MySignedApp>(RETURN if same as keystore password):Re-enter new password:[Storing id.keystore]
D:\ru\SignedBuilds\MySignedApp>
PASO 2
Sign your app with your private keystore using jarsigner
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id
CMD O / P
D:\ru\SignedBuilds\MySignedApp>jarsigner -verbose -sigalg SHA1withRSA -
digestalg SHA1 -keystore D:\ru\SignedBuilds\MySignedApp\id.keystore D:\ru\SignedBuilds\MySignedApp\MySignedAppS1-release-unsigned.apk id ---
ect
EnterPassphrasefor keystore:
adding: META-INF/MANIFEST.MF
adding: META-INF/---.SF
adding: META-INF/---.RSA
signing:AndroidManifest.xml
.....
signing: classes.dex
signing: lib/commons-codec-1.6.jar
signing: lib/armeabi/libkonyjsvm.so
jar signed.Warning:No-tsa or-tsacert is provided andthis jar isnot timestamped.Without a timestamp, users may not
be able to validate this jar after the signer certificate's expiration date (2044-02-07) or after an
y future revocation date.
D:\ru\SignedBuilds\MySignedApp>
D:\ru\SignedBuilds\MySignedApp>jarsigner -verify -verbose -certs MySignedAppS1-release-unsigned.apk
s = signature was verified
m = entry is listed in manifest
k = at least one certificate was found in keystore
i = at least one certificate was found in identity scope
jar verified.Warning:This jar contains entries whose certificate chain isnot validated.This jar contains signatures that does not include a timestamp.Without a timestamp, users may not b
e able to validate this jar after the signer certificate's expiration date (2044-02-09) or after any
future revocation date.
D:\ru\SignedBuilds\MySignedApp>
Me encontré con este problema y lo resolví al verificar la versión min sdk en el manifiesto. Estaba configurado en 15 (ICS), pero mi teléfono funcionaba con 10 (Gingerbread)
Respuestas:
El manual es lo suficientemente claro. Especifique con qué parte se queda atascado después de trabajar en ella, sugeriría:
https://developer.android.com/studio/publish/app-signing.html
De acuerdo, una pequeña descripción general sin referencia o eclipse alrededor, así que deje algo de espacio para errores, pero funciona así
Además, desde el enlace:
fuente
-alias <alias_name> An alias for the key. Only the first 8 characters of the alias are used.
Es solo un alias. Un nombre, por así decirlo. Sugeriría "primera tecla" :-)Aquí hay una guía sobre cómo firmar manualmente un APK. Incluye información sobre las novedades
apk-signer
introducidas enbuild-tools 24.0.3
(10/2016)Proceso automatizado:
Utilice esta herramienta (utiliza el nuevo apksigner de Google):
https://github.com/patrickfav/uber-apk-signer
Descargo de responsabilidad: soy el desarrollador :)
Proceso manual:
Paso 1: Genere el almacén de claves (solo una vez)
Necesita generar un almacén de claves una vez y usarlo para firmar su
unsigned
apk. Utilice el proporcionado por el JDK que se encuentra enkeytool
%JAVA_HOME%/bin/
Paso 2 o 4: Zipalign
zipalign
que es una herramienta proporcionada por el SDK de Android que se encuentra en, por ejemplo,%ANDROID_HOME%/sdk/build-tools/24.0.2/
es un paso de optimización obligatorio si desea cargar el apk en Play Store.Nota: cuando utilice el antiguo
jarsigner
, deberá zipalign DESPUÉS de firmar. Cuando usa el nuevoapksigner
método, lo hace ANTES de firmar (confuso, lo sé). Invocar zipalign antes de apksigner funciona bien porque apksigner conserva la alineación y la compresión del APK (a diferencia de jarsigner).Puede verificar la alineación con
Paso 3: Firmar y verificar
Uso de herramientas de compilación 24.0.2 y anteriores
Use la
jarsigner
que, como la herramienta de teclas, viene con la distribución JDK que se encuentra en%JAVA_HOME%/bin/
y úsela así:y se puede verificar con
Uso de herramientas de compilación 24.0.3 y posteriores
Android 7.0 presenta 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 alteraciones no autorizadas en archivos APK (consulte aquí y aquí para obtener más detalles). Por lo tanto, Google implementó su propio firmante de apk llamado
apksigner
(¡duh!). El archivo de secuencia de comandos se puede encontrar en%ANDROID_HOME%/sdk/build-tools/24.0.3/
(el .jar está en la/lib
subcarpeta). Úselo asíy se puede verificar con
La documentación oficial se puede encontrar aquí.
fuente
Para los usuarios de IntelliJ IDEA o Android Studio, siga estos pasos:
* Desde el menú
Build/Generate signed APK
* Necesita crear una ruta de almacenamiento de claves. En el cuadro de diálogo, haga clic en
Create new
. Creará un archivo jks que incluye sus claves. Seleccione carpeta, defina una contraseña. Entonces su almacén de claves está bien.* Cree una nueva clave para su aplicación utilizando un alias, contraseña de clave, su nombre, etc.
* Haga clic en Siguiente.
* En el cuadro de diálogo, seleccione Proguard o no.
Su archivo APK firmado está listo.
Archivo de ayuda: https://www.jetbrains.com/idea/webhelp/generate-signed-apk-wizard.html
fuente
¡No te preocupes ...! Siga estos pasos a continuación y obtendrá su archivo .apk firmado. También estaba preocupado por eso, pero estos pasos me sacan de la frustración. Pasos para firmar su solicitud:
Haga clic derecho en el proyecto en Eclipse -> Herramientas de Android -> Exportar paquete de aplicaciones sin firmar (como aquí exportamos nuestro GoogleDriveApp.apk al escritorio)
Firme la aplicación usando su almacén de claves y la herramienta jarsigner (siga los pasos a continuación):
Abra cmd -> cambie el directorio donde existe su "jarsigner.exe" (como aquí en mi sistema, existe en "C: \ Archivos de programa \ Java \ jdk1.6.0_17 \ bin"
Ahora ingrese el comando belwo en cmd:
Le pedirá que proporcione su contraseña: Introduzca la frase de contraseña para el almacén de claves: firmará su apk. Para verificar que la firma sea exitosa, puede ejecutar:
Debería volver con: jar verificado.
Método 2
Si está utilizando eclipse con ADT, entonces es sencillo compilar, firmar, alinear y preparar el archivo para su distribución. Lo que tiene que hacer es seguir estos pasos.
Estos pasos compilarán, firmarán y alinearán en zip su proyecto y ahora está listo para distribuir su proyecto o cargarlo en la tienda Google Play.
fuente
Proceso de firma de APK
Para firmar manualmente un archivo APK de Android, ejecute estos tres comandos:
Generar archivo de almacén de claves
Firme su archivo APK usando
jarsigner
Alinear APK firmado usando la herramienta zipalign
PASO 1
Generate Keystore file
Ejemplo:
contraseña del almacén de claves: yourApp @ 123 contraseña clave: yourApp @ 123
CMD O / P
PASO 2
Sign your app with your private keystore using jarsigner
Ejemplo
CMD O / P
Verify that your APK is signed
Ejemplo
CMD O / P
PASO 3
Alinear el paquete APK final usando zipalign
Ejemplo
CMD O / P
Verify that your APK is Aligned successfully
Ejemplo
CMD O / P
Nota:
¡El comando de verificación es solo para verificar si el APK está construido y firmado correctamente!
Referencias
Espero que esto ayude a todos :)
fuente
Me encontré con este problema y lo resolví al verificar la versión min sdk en el manifiesto. Estaba configurado en 15 (ICS), pero mi teléfono funcionaba con 10 (Gingerbread)
fuente