Generar keystore Android: paso a paso en Android Studio y con keytool
Tu primera versión para Google Play necesita un keystore. Aprende a generarlo en Android Studio o con keytool, conectarlo a Gradle sin dejar contraseñas en el código, evitar los errores típicos y respaldarlo bien.

Antes de subir tu primera versión a Google Play necesitas firmarla, y para firmarla necesitas un almacén de claves. En esta guía verás cómo generar un keystore Android en Android Studio en un par de minutos, cómo crearlo con keytool si prefieres la terminal, cómo conectarlo a Gradle sin dejar contraseñas en el código y qué hacer con los errores más comunes. Es el paso que muchos hacen con prisa y luego lamentan, así que vale la pena hacerlo bien una sola vez.
Qué es un keystore (archivo .jks) y para qué sirve
Según la guía oficial Cómo firmar tu app, los almacenes de claves de Java (.jks o .keystore) son archivos binarios que guardan certificados y claves privadas. Con la clave que hay dentro firmas el Android App Bundle que subes a Play Console.
No lo confundas con el sistema Android Keystore, que es otra cosa: una API del teléfono para guardar claves criptográficas de tu app en el dispositivo. Cuando alguien busca «qué es el keystore de Android» para publicar, casi siempre se refiere al archivo .jks.
En la práctica tu app usa tres claves distintas:
| Clave | Dónde vive | Para qué sirve |
|---|---|---|
| Debug | ~/.android/debug.keystore, la crea Android Studio | Firmar lo que ejecutas desde el IDE |
| Clave de carga (upload key) | Tu .jks, la generas tú | Firmar el .aab que subes a Play Console |
| Clave de firma de la app | Servidores de Google (firma de apps de Play) | Firmar los APK que instalan los usuarios |
Este artículo trata de la segunda. Si quieres entender bien la relación entre clave de carga y clave de firma, lee la guía de firma de apps de Google Play.
Antes de empezar: decide estos cuatro datos
Anótalos en un gestor de contraseñas antes de abrir el asistente:
- Ruta y nombre del archivo, por ejemplo
upload-keystore.jks. Guárdalo fuera de la carpeta del proyecto. - Contraseña del almacén larga y única.
- Alias de la clave, por ejemplo
upload. Lo necesitarás cada vez que firmes. - Validez: la documentación pide al menos 25 años, para firmar todas las actualizaciones con la misma clave.
Sobre la contraseña de la clave: Android Studio indica que debe ser la misma que la del almacén (lo llama «problema conocido»). Usar la misma te evita errores más adelante.
Opción 1: generar keystore en Android Studio
Es el camino más corto y el que recomienda la documentación oficial:
- En la barra de menú, abre Build › Generate Signed Bundle / APK.
- Elige Android App Bundle y pulsa Next.
- Debajo de Key store path, pulsa Create new…
- En la ventana New Key Store completa:
- Key store path: carpeta y nombre del archivo terminado en
.jks. - Password y Confirm del almacén.
- Alias de la clave.
- Password de la clave (la misma del almacén).
- Validity (years): 25 o más.
- Certificate: nombre, organización, ciudad y código de país. No se muestra en la tienda, pero queda dentro del certificado.
- Key store path: carpeta y nombre del archivo terminado en
- Pulsa OK. Si solo querías crear el keystore, puedes cancelar el asistente; el archivo ya quedó creado.
- Si quieres firmar de una vez, continúa con Next, elige la variante
releasey pulsa Create. El.aabfirmado queda enapp/release/o en la ruta que indique Android Studio.
¿No sabes qué es exactamente ese .aab? Lo explicamos en qué es un AAB.
Opción 2: crear el keystore con keytool
keytool viene con el JDK y con el JBR que trae Android Studio. Este es el comando de la documentación de Android, con nombres más claros:
keytool -genkey -v -keystore upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
Te pedirá la contraseña del almacén y los datos del certificado (nombre, organización, ciudad, país). -validity 10000 son días, unos 27 años.
«keytool no se reconoce como un comando interno o externo»
Es el error más buscado en Windows y significa que keytool no está en el PATH. Tienes dos salidas:
- Usar la ruta completa del JBR de Android Studio (ajusta si lo instalaste en otra carpeta):
"C:\Program Files\Android\Android Studio\jbr\bin\keytool.exe" -genkey -v -keystore %USERPROFILE%\upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias upload
- O agregar
C:\Program Files\Android\Android Studio\jbr\bina la variable PATH y abrir una consola nueva.
En macOS, el keytool del JBR suele estar en /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/. Si usas Flutter, flutter doctor -v muestra la ruta de Java que usa tu instalación. Para Flutter tenemos los pasos completos en publicar una app Flutter en Play Store.
Configura la firma en Gradle sin exponer contraseñas
La documentación oficial advierte que, si pones las contraseñas directamente en build.gradle, quedan en texto plano. Lo recomendado es un archivo aparte. Crea keystore.properties en la raíz del proyecto:
storePassword=TU_CONTRASEÑA
keyPassword=TU_CONTRASEÑA
keyAlias=upload
storeFile=/ruta/absoluta/upload-keystore.jks
Y en app/build.gradle.kts:
import java.util.Properties
import java.io.FileInputStream
val keystoreProperties = Properties().apply {
val f = rootProject.file("keystore.properties")
if (f.exists()) load(FileInputStream(f))
}
android {
signingConfigs {
create("release") {
storeFile = file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
}
}
}
Agrega al .gitignore:
keystore.properties
*.jks
*.keystore
Luego genera el bundle firmado con ./gradlew bundleRelease.
Sube el primer AAB y registra tu clave de carga
En una app nueva, Play Console usa la firma de apps de Play: Google genera y guarda la clave de firma de la app, y la clave con la que firmaste tu primer .aab queda registrada como clave de carga. Desde ahí, cada actualización debe ir firmada con ese mismo keystore.
Si vas a conectar Firebase, Google Sign-In o Maps, después de subir necesitarás las huellas: te explicamos cuál registrar en cómo obtener el SHA-1 en Android Studio.
Errores comunes al generar o usar el keystore
| Mensaje o síntoma | Causa probable | Solución |
|---|---|---|
keytool no se reconoce | No está en el PATH | Usa la ruta del JBR o agrégala al PATH |
Keystore was tampered with, or password was incorrect | Contraseña del almacén equivocada | Revisa mayúsculas y la distribución del teclado; prueba con keytool -list -keystore |
Different store and key passwords not supported for PKCS12 KeyStores | Los keystores PKCS12 (formato predeterminado de keytool en JDK recientes) no admiten contraseñas distintas | Usa la misma contraseña para almacén y clave |
Keystore file ... not found | Ruta relativa o mal escrita en Gradle | Usa la ruta absoluta; en Windows, barras dobles o / |
| Play Console dice que el bundle está firmado con otra clave | Firmaste con un keystore distinto al registrado | Busca el .jks original o pide restablecer la clave de carga |
Respaldo: lo que nadie te dice hasta que pierdes el archivo
- Guarda el
.jksen dos lugares cifrados (por ejemplo, gestor de contraseñas y un disco o nube privada). - Documenta alias, contraseñas y fecha de creación junto al archivo.
- No lo envíes por chat ni lo subas al repositorio.
- Si pierdes la clave de carga y usas firma de apps de Play, puedes solicitar un restablecimiento en Play Console; mientras se aplica, no podrás publicar con la clave nueva. Si gestionas tú la clave de firma y la pierdes, no podrás actualizar esa app.
Preguntas frecuentes
¿Qué es un archivo keystore?
Un archivo .jks o .keystore protegido con contraseña que guarda tu clave privada y su certificado. Con él firmas las versiones que subes a Google Play.
¿Es mejor .jks o .keystore?
Es solo la extensión. Android Studio sugiere .jks; lo importante es el contenido, la contraseña y el alias.
¿Puedo usar el mismo keystore para varias apps?
Técnicamente sí, pero una clave de carga por app limita el daño si una se filtra y facilita transferir una app a otra cuenta sin compartir la clave de las demás.
¿Qué pasa si olvido la contraseña del keystore?
No hay forma de recuperarla desde el archivo. Si la app usa firma de apps de Play, genera un keystore nuevo y pide el restablecimiento de la clave de carga.
¿Cuánto debe durar la clave?
Al menos 25 años, según Android. Con -validity 10000 (días) cumples ese mínimo.
Lista tu app para Google Play con AppConsol
Con el keystore listo, lo que falta para publicar es la ficha: icono de 512 × 512, gráfico de funciones, capturas y política de privacidad. En AppConsol puedes crearlos gratis, por ejemplo con el generador de iconos para Google Play y el generador de screenshots. Pruébalo hoy y sube tu primera versión firmada con todo en orden.
Sigue aprendiendo

21 de octubre de 2026
Nombre de paquete Android: qué es, cómo verlo y cómo elegirlo

19 de octubre de 2026
Cómo publicar una app Flutter en Play Store paso a paso (2026)

22 de octubre de 2026
Cómo obtener el SHA-1 en Android Studio: debug, release y Play Console

19 de octubre de 2026
Cómo actualizar mi app en Google Play Console paso a paso (2026)

20 de octubre de 2026
Declaración de ID de publicidad en Play Console: cómo completarla sin errores