Cómo firmar aplicaciones Android (APK y App Bundle)

- Andrés Cruz

EN In english

Cómo firmar aplicaciones Android (APK y App Bundle)

La finalidad de programar aplicaciones es colocarlas en producción; en Android esto significa publicarlas en la tienda oficial. Para subir una app a Google Play, es obligatorio firmar el binario. Pero, ¿qué significa esto exactamente?

¿Qué es y para que firmamos nuestra aplicación?

Android requiere que todas las aplicaciones estén firmadas digitalmente para que puedan ser instalados en un dispositivo con Android; como veremos más adelante en esta entrada, el proceso de firmar una aplicación no es más que dar una clave privada generada por el desarrollador y con esto se logra indicar quien es el responsable de la aplicación; en resumen, firmamos nuestras aplicaciones:

  • Para resolver un requisito para poder subir nuestra aplicación a la Google Play.
  • Para poder instalarla en otros dispositivos, distribuirlas sin problema alguno.
  • Como medida de seguridad.
  • Para que de esta forma solo el desarrollador pueda actualizarla.

Cuando queremos desarrollar una aplicación Android (por no decir cualquier sistema en general) primero concibes la aplicación, se diseña, se prueba en emuladores y dispositivos físicos, se corrigen los errores, se termina de desarrollar el resto de las funcionalidades y se vuelve a probar la aplicación (repites este ciclo n veces en donde n tiende al infinito...) y luego intentas subir la apk de Debug a tu cuenta en la Google Play y ves un error como el siguiente:

Error Apk Google play

Esta es una situación que puede ser regular para las personas que estén iniciando en el desarrollo con Android; para subir una apk a la Google Play es necesario que esté firmada a través de un certificado digital muy fácil de generar con Android Studio

La apk que empleamos generalmente, es un archivo que podemos emplear para hacer pruebas en dispositivos físicos y virtuales, pero nada más, no podemos emplearla para subirla a la Google Play por razones de seguridad (imagina que con tan solo obtener la apk de aplicaciones tan famosas como Twitter o Facebook podamos subirla tranquilamente a una cuenta en la Google Play...).

En esta entrada explicaremos cómo generar una apk firmada de manera automática al momento de compilar nuestro proyecto en Android Studio; esto tiene una gran importancia al momento de estar empleando servicios de terceros en los cuales suministramos el certificado SHA1 de nuestro aplicación, servicios como la autenticación o uso de servicios, o cualquier servicio que esté en Firebase o la Google Console.

Cómo generar una apk firmada en Android Studio para la Google Play (incluye keystore)

Generando la apk firmada en Android Studio

Cómo se ha explicado, la apk firmada es la misma apk debug pero esta cuenta con un certificado digital, de esta manera se garantiza la autoría de la misma; es decir, que la apk a subir en la Google Play es la persona que la desarrolló, es decir que cuenta con el fuente de la aplicación.

La Google Play de Google exige que todas las APKs que están almacenadas en su repositorio de aplicaciones deben de estar firmadas digitalmente, y lo podemos hacer perfectamente desde Android Studio empleando la keystore que es un archivo para almacenar repositorios de claves primarias.

Conociendo los certificados y los keystores

Los certificados digitales no es algo nuevo, lo empleamos en infinidad de elementos, por ejemplo en las notificaciones tipo PUSH, en las cuales se emplean los certificados digitales que constan de una clave pública y otra privada que está guardada y restringida, es como una pareja de usuario y contraseña, generalmente se guarda data o metadata de estos certificados para tener información del propietario, cosas como el nombre, apellido, ubicación, descripción son elementos comunes; estas llaves son un instrumento para proteger tus aplicaciones, es para dejar tu "huella" que es única y al ser digital se le conoce como huella digital y de esta forma tu aplicación Android estará en buen resguardo y permite a Google mediante la Google Play saber de quién es la APK de quien se está cargando y actuar en consecuencia en caso de que existe un certificado diferente al cargado inicialmente.

La Keystore para almacenar las claves

Te podrás preguntar en donde entra el keystore en todo esto, el keystore son archivos que como su nombre indica contienen claves, es como una tienda de claves o un repositorio de claves; aquí se encuentra tu llave privada que no debes compartir con nadie que no deba tener acceso a tu aplicación; cuando creemos un poco más adelante nuestra aplicación Android firmada verás que Android Studio nos pregunta mediante un formulario donde esta el repositorio de claves o keystore.

Enfoque Moderno: Android App Bundle (.aab) y Play Integrity

Para aplicaciones modernas desarrolladas con Jetpack Compose, Google Play ahora exige el formato Android App Bundle (.aab) en lugar del APK tradicional.

A diferencia del APK, el App Bundle permite a Google Play generar versiones optimizadas para cada dispositivo, reduciendo el tamaño de descarga. Además, hoy en día se utiliza Play App Signing, donde Google gestiona la clave de firma final por ti, aunque tú sigas necesitando una "Upload Key" para subir el archivo.

Generando el Bundle firmado en Android Studio

Para generar el archivo moderno, ve a Build > Generate Signed Bundle / APK..., selecciona Android App Bundle y sigue los pasos del asistente para crear o usar tu Keystore.

Cómo obtener el certificado SHA1 desde Android Studio

Muchos servicios modernos (como Firebase o Google Maps) solicitan tu huella digital SHA1. Para obtenerla sin usar comandos externos:

  1. Abre el panel de Gradle (esquina superior derecha).
  2. Navega a: app > Tasks > android > signingReport.
  3. Ejecuta la tarea y revisa la consola Run en la parte inferior.

¡Importante! Guarda tu archivo Keystore (.jks) y sus contraseñas en un lugar seguro. Si pierdes este archivo, no podrás actualizar tu aplicación en Google Play bajo el mismo identificador.

¿Qué es y para qué firmamos nuestra aplicación?

Android requiere que todas las aplicaciones estén firmadas digitalmente para ser instaladas. El proceso consiste en aplicar una clave privada generada por el desarrollador para identificar al responsable de la aplicación.

  • Requisito obligatorio para Google Play Store.
  • Garantiza la autoría y seguridad del software.
  • Permite que solo el desarrollador original pueda subir actualizaciones.

Enfoque Legacy: Generar un APK firmado

Si estás trabajando con el sistema tradicional de vistas (XML), el resultado final suele ser un archivo .apk. Para generarlo de forma automática al compilar, puedes configurar el proceso en Android Studio:

  1. Haz clic derecho en el módulo app y selecciona Open Module Settings.
  2. En la sección Signing Configs, crea una nueva configuración y selecciona tu archivo .jks (Keystore).
  3. En la pestaña Build Types, asigna esta configuración al modo release.
// Ejemplo de configuración en build.gradle.kts android { signingConfigs { create("release") { storeFile = file("mi_llave.jks") storePassword = "password" keyAlias = "mi_alias" keyPassword = "password" } } }

Cómo es posiblemente la primera vez que estás exportando la apk de esta forma, tendremos que ingresar un path, un par de claves y un alias como veremos a continuación en la siguiente ventana:

Generar Apk formulario

Si no tienes un Key Store ya creado, debes de presionar el botón de "Create new..." y rellenar el formulario.

¿Dónde se encuentra el APK firmada?

Si no modificaste la ubicación anterior, la apk firmada se encontrará exportada en:

Nombre_de_tu_app > App > app-release.apk.

Carpeta Apk release

Le ponemos el nombre que queramos y esto es todo, podemos emplear esta apk para subirla a la Google Play; no importa qué nombre le coloques al archivo, solo importa que el procedimiento anterior no les de algún tipo de error.

Estos tipos de procedimientos se pueden generar mediante líneas de comando o la consola de Windows, Linux, Mac o donde sea que ejecutes tu ambiente de desarrollo para Android, en esta entrada le mostramos la forma más directa y sencilla que consiste en rellenar unos sencillos formularios como vimos anteriormente; si necesitas tener el certificado SHA1 desde android studio:

Descubre cómo firmar digitalmente tus apps Android para Google Play. Aprende las diferencias entre el APK Legacy y el nuevo Android App Bundle (.aab), además de cómo obtener el certificado SHA1 directamente desde Android Studio

Acepto recibir anuncios de interes sobre este Blog.

Andrés Cruz

EN In english