Cómo habilitar la firma de aplicaciones de Google Play

113

Creo que muchos desarrolladores están tratando de aprender más sobre la nueva función de firma de aplicaciones de Google Play presentada en Google I / O 2017.

La capacidad de almacenar el almacén de claves para firmar las aplicaciones dentro de Google Play le ahorra el esfuerzo de almacenar de forma segura el almacén de claves y puede ayudar al sistema a optimizar los APK servidos en cada dispositivo, según las características del hardware y del sistema operativo.

Puede leer más sobre este tema en la documentación oficial aquí: https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .

Con la siguiente respuesta, explicaré un poco mejor los pasos que debe seguir para cargar su almacén de claves original y cómo crear el nuevo almacén de claves de carga, que deberá firmar su APK a partir de este punto.

MatPag
fuente

Respuestas:

189

Esta guía está dirigida a desarrolladores que ya tienen una aplicación en Play Store. Si está comenzando con una nueva aplicación, el proceso es mucho más fácil y puede seguir las pautas del párrafo "Nuevas aplicaciones" desde aquí.

Requisitos previos que el 99% de los desarrolladores ya tienen :

  1. Estudio de Android

  2. JDK 8 y después de la instalación, debe configurar una variable de entorno en su espacio de usuario para simplificar los comandos de la terminal. En Windows x64, debe agregar esto: C:\Program Files\Java\{JDK_VERSION}\bina la Pathvariable de entorno. (Si no sabe cómo hacer esto, puede leer mi guía para agregar una carpeta a la Pathvariable de entorno de Windows 10 ).

Paso 0 : Abra la consola de desarrollador de Google Play, luego vaya a Administración de versiones -> Firma de aplicaciones .

ingrese la descripción de la imagen aquí

Acepte los TOS de firma de aplicaciones.

ingrese la descripción de la imagen aquí

Paso 1 : Descargue la herramienta PEPK haciendo clic en el botón idéntico a la imagen de abajo

ingrese la descripción de la imagen aquí

Paso 2 : Abra una terminal y escriba:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OUTPUT_FILE --encryptionkey = GOOGLE_ENCRYPTION_KEY

Leyenda:

  • PATH_TO_PEPK = La ruta al pepk.jar que descargó en el Paso 1 , podría ser algo así C:\Users\YourName\Downloads\pepk.jarpara los usuarios de Windows.
  • PATH_TO_KEYSTORE = Ruta al almacén de claves que usa para firmar su APK de lanzamiento. Podría ser un archivo de tipo * .keystore o * .jks o sin extensión. Algo como C:\Android\mykeystoreo C:\Android\mykeystore.keystoreetc ...
  • ALIAS_YOU_USE_TO_SIGN_APK = El nombre del alias que usa para firmar la versión APK.
  • PATH_TO_OUTPUT_FILE = La ruta del archivo de salida con extensión .pem, algo así comoC:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Esta clave de cifrado debe ser siempre la misma. Puede encontrarlo en la página Firma de aplicaciones, copiarlo y pegarlo. Debería estar en esta forma:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Ejemplo:

java -jar "C: \ Users \ YourName \ Downloads \ pepk.jar" --keystore = "C: \ Android \ mykeystore" --alias = myalias --output = "C: \ Android \ private_key.pem" - clave de cifrado = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb8339de656acd

Presione Enter y deberá proporcionar en orden:

  1. La contraseña del almacén de claves
  2. La contraseña de alias

Si todo ha ido bien, ahora tendrá un archivo en la carpeta PATH_TO_OUTPUT_FILE llamado private_key.pem.

Paso 3 : Cargue el archivo private_key.pem haciendo clic en el botón idéntico a la imagen de abajo

ingrese la descripción de la imagen aquí

Paso 4 : Cree un nuevo archivo de almacén de claves con Android Studio.

NECESITARÁ ESTE KEYSTORE EN EL FUTURO PARA FIRMAR LOS PRÓXIMOS LANZAMIENTOS DE SU APLICACIÓN, NO OLVIDE LAS CONTRASEÑAS

Abra uno de sus proyectos de Android (elija uno al azar). Vaya a Compilar -> Generar APK firmado y presione Crear nuevo .

ingrese la descripción de la imagen aquí

Ahora debe completar los campos obligatorios.

La ruta del almacén de claves representa el nuevo almacén de claves que creará, elija una carpeta y un nombre usando el icono de 3 puntos a la derecha, C:\Android\upload_key.jkselegí (la extensión .jks se agregará automáticamente)

NOTA: Lo usé uploadcomo el nuevo nombre de alias, pero si anteriormente usó el mismo almacén de claves con diferentes alias para firmar diferentes aplicaciones, debe elegir el mismo nombre de alias que tenía anteriormente en el almacén de claves original.

ingrese la descripción de la imagen aquí

Presione OK cuando termine, y ahora tendrá un nuevo upload_key.jksalmacén de claves. Puede cerrar Android Studio ahora.

Paso 5 : Necesitamos extraer el certificado de carga del upload_key.jksalmacén de claves recién creado . Abra una terminal y escriba:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -file PATH_TO_OUTPUT_FILE

Leyenda:

  • UPLOAD_KEYSTORE_PATH = La ruta del almacén de claves de carga que acaba de crear. En este caso fue C:\Android\upload_key.jks.
  • UPLOAD_KEYSTORE_ALIAS = El nuevo alias asociado con el almacén de claves de carga. En este caso fue upload.
  • PATH_TO_OUTPUT_FILE = La ruta al archivo de salida con extensión .pem. Algo como C:\Android\upload_key_public_certificate.pem.

Ejemplo:

keytool -export -rfc -keystore "C: \ Android \ upload_key.jks" -alias upload -file "C: \ Android \ upload_key_public_certificate.pem"

Presione Entrar y deberá proporcionar la contraseña del almacén de claves.

Ahora, si todo ha ido bien, tendrá un archivo en la carpeta PATH_TO_OUTPUT_FILE llamado upload_key_public_certificate.pem.

Paso 6 : Cargue el upload_key_public_certificate.pemarchivo haciendo clic en el botón idéntico a la imagen de abajo

ingrese la descripción de la imagen aquí

Paso 7 : Haga clic en el botón INSCRIBIRSE al final de la página de firma de la aplicación.

ingrese la descripción de la imagen aquí

Ahora, cada nueva versión de APK debe firmarse con el upload_key.jksalmacén de claves y los alias creados en el paso 4 , antes de cargarse en la consola de desarrollador de Google Play.

Más recursos:

Preguntas y respuestas

P: Cuando subo el APK firmado con el nuevo almacén de claves upload_key, Google Play muestra un error como: Subiste un APK sin firmar. Debes crear un APK firmado .

R: Marque para firmar el APK con ambas firmas (V1 y V2) mientras crea el APK de lanzamiento. Lea aquí para obtener más detalles.

ACTUALIZADO

El paso 4, 5, 6 es crear una clave de carga que es opcional para las aplicaciones existentes

"Clave de carga (opcional para aplicaciones existentes): una clave nueva que genera durante su inscripción en el programa. Utilizará la clave de carga para firmar todos los APK futuros antes de cargarlos en Play Console". https://support.google.com/googleplay/android-developer/answer/7384423

MatPag
fuente
3
¡Tu tutorial es muy útil! Deberían ponerlo en el sitio web oficial jajaja. A los nombres de ruta de sus ejemplos les faltan comillas "_", lo que arrojará un error en la consola W10
NukeouT
3
Las comillas son necesarias solo si tiene al menos un espacio dentro de sus rutas, pero esta es la forma en que funcionan todos los comandos de la consola. Por lo tanto, debe usar las comillas si su ruta es: "C:\My Path\MyName"pero no si la ruta es C:\MyPath\MyName. Por cierto, gracias :)
MatPag
1
@layth La creación del nuevo almacén de claves es la Step 4de la guía: D
MatPag
1
Hice eso, pero cuando recibí el cuadro de diálogo de su nuevo almacén de claves, la ruta del almacén de claves y los campos de contraseña estaban en blanco, así que los apunté al almacén de claves antiguo e ingresé su contraseña anterior, por cierto, actualmente está atascado en "keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS - file PATH_TO_OUTPUT_FILE "sigue quejándose de que no sabe qué significa keytool. Intenté agregar "C: \ Archivos de programa \ Java \ jdk1.8.0_25 \ bin \ keytool.exe" pero no funcionó, posiblemente porque no sé dónde ponerlo exactamente ..
NukeouT
9
Parece que Google cambió el procedimiento porque ya no puedo encontrar la herramienta PEPK.
Andrea Motto
31

Hay una solución mucho más simple que tomará un minuto.

  1. En la consola de Google Play, seleccione Gestión de versiones -> Firma de aplicaciones
  2. Elija la primera opción, la que tiene Generar clave privada cifrada con Android Studio (o algo así; ya no puedo volver para ver esa página)
  3. En Android Studio, genere su Android App Bundle (archivo .aap) desde Build -> Generate Signed Bundle / APK ... , elija la opción Android App Bundle y no olvide marcar Exportar clave cifrada (necesaria para inscribir su aplicación Google Play App firma) opción. Si no tiene un almacén de claves generado, genere uno ad-hoc.
  4. Ahora la parte "complicada". Una vez que se genera el .aap, Android Studio mostrará una notificación en la esquina inferior derecha que contiene una ruta a la ubicación donde se guarda el archivo .aap. En la misma notificación, si la expande, encontrará otro enlace a la ruta donde se guardó la clave privada (llamada private_key.pepk ). Si pierde esta notificación, no se preocupe, simplemente abra la ventana Registro de eventos haciendo clic en el botón Registro de eventos en la parte inferior derecha y encontrará la misma información. Abra esa ubicación Para mí era C: \ Users \ yourUser \ .android

ingrese la descripción de la imagen aquí

  1. Regrese al navegador y presione el botón APLICACIÓN FIRMANDO LLAVE PRIVADA y busque la ubicación de la clave privada en su computadora.

¡Hecho!

Ahora puede cargar su versión que generó anteriormente :) ¡Buena suerte!

Marius Tanasoiu
fuente
1
Es la mejor y más simple respuesta
Simon
Me ahorró mucho tiempo y, lo que es más importante, paz mental
Meenohara
No obtengo esta opción Exportar clave cifrada (necesaria para inscribir su aplicación de firma de la aplicación Google Play).
Jarvis
Realmente agradecería una explicación más completa del punto 5: no veo este botón, ¿dónde está? ¿Quizás el diseño ha cambiado en las actualizaciones recientes?
androidneil
ok bien ahora quiero tener curiosidad sobre eso en la próxima actualización ¿qué hacer? como si necesitamos la clave .pepk nuevamente o tenemos que firmar la versión 2 usando la misma clave o la nueva clave privada .pepk por favor ayude
Sunil Chaudhary
15

Al migrar el archivo del paquete de aplicaciones de Android (APK) a Android App Bundle (AAB), al publicar la aplicación en Play Store, enfrenté este problema y lo resolví así a continuación ...

Al crear un .aabarchivo, se le solicita la ubicación para almacenar la ruta de exportación de la clave como se muestra a continuación:

ingrese la descripción de la imagen aquí
ingrese la descripción de la imagen aquí En la segunda imagen, encontrará la ruta de exportación de clave cifrada Ubicación donde nuestro .pepk se almacenará en la carpeta específica mientras genera el archivo .aab.

Una vez que inicie sesión en Google Play Console con la credencial de Play Store: seleccione su proyecto en el lado izquierdo, elija la opción Firma de aplicaciones, Administración de versiones >> Firma de aplicaciones ingrese la descripción de la imagen aquí

encontrará la ventana Certificación de firma de aplicaciones de Google ACEPTARLA.

Después de eso, encontrará tres botones de opción seleccionar **

Cargar una clave exportada desde el botón de opción de Android Studio

**, expandirá el botón de LLAVE PRIVADA DE FIRMA DE APLICACIÓN como se muestra a continuación

ingrese la descripción de la imagen aquí

haga clic en el botón y elija el .pepkarchivo (almacenamos mientras generamos.aab archivo como se muestra arriba)

Lea todas las demás opciones y envíelas.

Una vez con éxito, puede volver a la versión de la aplicación y examinar el archivo .aab y completar RollOut ...

@Ambilpura

Ambilpura Sunil Kumar
fuente
ok bien ahora quiero tener curiosidad sobre eso en la próxima actualización ¿qué hacer? como si necesitamos la clave .pepk nuevamente o tenemos que firmar la versión 2 usando la misma clave o la nueva clave privada .pepk por favor ayude
Sunil Chaudhary
Según tengo entendido, no es necesario crear para la próxima vez, puede usar la clave .pepk antigua ...
Ambilpura Sunil Kumar
¿Cómo se usa el .pepk para una actualización? Utilicé con éxito la firma de aplicaciones de Google al cargar mi aplicación, pero ahora estoy tratando de enviar una actualización y no sé cómo @AmbilpuraSunilKumar
nt95
Igual que aquí. Simplemente subo el abb a la tienda de juegos e ignoro por completo el archivo .pepk. Sería bueno saber exactamente para qué sirve y qué hacer al actualizar la aplicación.
Julian Eggers
4

Tuve que hacer lo siguiente:

  1. Crea una aplicación en la consola de Google Play ingrese la descripción de la imagen aquí

2.Vaya a Lanzamientos de aplicaciones -> Administrar producción -> Crear lanzamiento

3.Haga clic en Continuar en Firma de aplicaciones de Google Play. ingrese la descripción de la imagen aquí

4. Cree un certificado de carga ejecutando "keytool -genkey -v -keystore c: \ path \ to \ cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000"

5.Firme su apk con el certificado generado (c: \ ruta \ a \ cert.keystore)

6.Cargue el apk firmado en las versiones de la aplicación -> Administrar producción -> Editar versión

7.Al cargar apk, el certificado generado en el paso 4 se agregó a los certificados de firma de aplicaciones y se convirtió en su certificado de firma para todas las compilaciones futuras.

es falso
fuente
1
Hice exactamente esto, pero el inicio de sesión de Google desde mi aplicación no funciona si instalo la aplicación a través de Google Play Store. * Pero * si descargo el apk de la página de administración de versiones y lo instalo manualmente en mi emulador / dispositivo, funciona. ¿Alguna idea de lo que me estoy perdiendo?
Raghudevan Shankar
¡Busqué por todas partes durante aproximadamente 3 horas y finalmente me salvaste!
Oliver Dixon
3

Cuando use Fabric para lanzamientos beta públicos (firmado con prod config), NO USE Google Play App Signing. ¡Deberá después de construir dos apks firmados!

Cuando distribuya a más tiendas de juegos (samsung, amazon, xiaomi, ...) deberá volver a crear dos apks firmados.

Así que tenga mucho cuidado con la firma de aplicaciones de Google Play.

No es posible revertirlo: / y Google Play no aceptó los apks firmados con la clave de producción. Después de habilitar la firma de aplicaciones de Google Play, solo se acepta la clave de carga ...

Realmente complica la distribución de CI ...

Próximos problemas con la actualización: https://issuetracker.google.com/issues/69285256

mtrakal
fuente
1
Los DON'T USEcomentarios con mayúsculas en negrita son peligrosos. ¿Puede explicar el problema y la solución recomendada en detalle? ¿No hay ninguna solución? ¿Es tan difícil firmar un APK dos veces para Fabric?
Gokhan Arik
1
No es tan difícil firmar el APK dos veces, pero como describo, debe crear dos (o más) APK que no sean idénticos (por lo que está probando en un archivo Fabric Beta diferente al que se publicará en Play Store). Pierde el punto de probar la compilación de producción en probadores beta ... está probando otro archivo :). Es solo una advertencia para las personas que tienen algún CI / CD complejo de que deben cambiarlo ...
mtrakal
2
Tenga en cuenta que Google Play ahora acepta APK firmados con la clave de producción incluso después de inscribirse en la firma de la aplicación.
Pierre
2

Haz lo siguiente :

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button
Sterling Diaz
fuente
Después de esto, ¿puedo probar los servicios de compra y reproducción de aplicaciones como antes? ¿Obtuviste alguna experiencia al respecto? Porque ni siquiera a mí me gusta dar pasos pesados.
Siddharth
1
No es realmente una respuesta adecuada para "Cómo habilitar la firma de aplicaciones de Google Play" ...
Ben Madsen
2
¿Y qué sugieres como forma adecuada de hacerlo?
Sterling Diaz