¿Cómo puedo crear un almacén de claves?

538

¿Cuáles son los pasos para crear un almacén de claves para Android?

Necesito usar Google Maps en mi aplicación y no sé qué pasos me perdí. Proporcione los pasos detallados específicos (no lo entendí de las guías).

usuario482762
fuente
¿Ya has hecho algo o estás buscando recomendaciones para comenzar?
atk
2
Esos son los siguientes pasos que hice: 1-instalar eclipse 2- instalar jdk 3- instalar sdk 4- instalar el complemento de Android. no logré ejecutar el comando en win cmd, el comando: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (que genera una clave privada). gracias
user482762
@ user482762: ¿le funcionó la respuesta de CommonsWare? ¿Por qué no lograste ejecutar el cmd win?
atk
La respuesta de CommonsWare no funciona para mí. Cuando intento ejecutar los comandos en el cmd, recibo un mensaje de error: "$ no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes". gracias por su ayuda
user482762
Ah! No desea escribir realmente el $. En Windows, cuando usa la línea de comando (la aplicación cmd), el indicador de entrada generalmente se ve como DRIVE: / DIRECTORY>, como "c: \". En Unix, el mensaje a menudo se ve como "$" o simplemente ">". El "$" en el comando está destinado a representar la solicitud de entrada, no es parte del comando. Intente ejecutar keytool con todos los argumentos, sin el $.
atk

Respuestas:

545

Para responder la pregunta en el título, cree un almacén de claves con la utilidad Java Keytool que viene con cualquier distribución JDK estándar y se puede ubicar en %JAVA_HOME%\bin. En Windows esto normalmente sería C:\Program Files\Java\jre7\bin.

Entonces, en Windows, abra una ventana de comandos y cambie a ese directorio e ingrese un comando como este

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

Keytool le solicita que proporcione contraseñas para el almacén de claves, proporcione los campos de Nombre distinguido y luego la contraseña de su clave. Luego genera el almacén de claves como un archivo llamado my-release-key.keystore en el directorio en el que se encuentra. El almacén de claves y la clave están protegidos por las contraseñas que ingresó. El almacén de claves contiene una única clave, válida por 10000 días. El alias es un nombre que usted usará más adelante para referirse a este almacén de claves cuando firme su aplicación.

Para obtener más información sobre Keytool, consulte la documentación en: http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

y para obtener más información sobre la firma de aplicaciones de Android, vaya a: http://developer.android.com/tools/publishing/app-signing.html

georgiecasey
fuente
66
Buen saludo para definir -keysize 2048 en lugar del predeterminado 1024 personalmente, ahora estoy usando 4096
scottyab
99
para obtener información, en mi caso, necesito abrir la ventana de comandos con derechos de administrador
Intuitisoft
Esto me da: E / TokenRequestor: tiene configuraciones relacionadas con OAuth2 incorrectas, por favor verifique. Error detallado: UNREGISSTEM_ON_API_CONSOLE Ya he creado una credencial al ingresar mi SHA1 en la consola API.
Rohan Taneja
Enlace directo a la documentación sobre la generación manual del almacén de claves: developer.android.com/studio/publish/…
methodignature
He usado este comando que establece las 2 contraseñas para que se salta algunas de las indicaciones: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Luego, para generar el SHA-1 que debe poner en Firebase, haga:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo el
158

Firmando su aplicación en Android Studio

Para firmar su aplicación en modo de lanzamiento en Android Studio, siga estos pasos:

1- En la barra de menú, haz clic en Crear> Generar APK firmado.


2-En la ventana Asistente para generar APK firmado, haga clic en Crear nuevo para crear un nuevo almacén de claves. Si ya tiene un almacén de claves, vaya al paso 4.


3- En la ventana Nuevo almacén de claves, proporcione la información requerida como se muestra en la figura Su clave debe ser válida por al menos 25 años, para que pueda firmar actualizaciones de la aplicación con la misma clave durante toda la vida útil de su aplicación.

ingrese la descripción de la imagen aquí

4- En la ventana Asistente para generar APK firmado, seleccione un almacén de claves, una clave privada e ingrese las contraseñas para ambos. Luego haga clic en Siguiente.ingrese la descripción de la imagen aquí

5- En la siguiente ventana, seleccione un destino para el APK firmado y haga clic en Finalizar. ingrese la descripción de la imagen aquí

referencia

http://developer.android.com/tools/publishing/app-signing.html

desarrollador de Android
fuente
2
Si bien esta respuesta es correcta, solo es conveniente si ya tiene instalado Android Studio.
Seph Reed
98

Estaba loco buscando cómo generar un .keystore usando en el shell un comando de una sola línea , para poder ejecutarlo desde otra aplicación. Esta es la forma:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname es un identificador único para la aplicación en el .keystore

    • cn el nombre completo de la persona u organización que genera el .keystore
    • La unidad organizativa que crea el proyecto, es una subdivisión de la organización que lo crea. Ex. android.google.com
    • o Organización propietaria de todo el proyecto. Es un alcance mayor que ou . Ej .: google.com
    • c El código corto del país. Ej: Para Estados Unidos es "EE. UU."
  • alias Identificador de la aplicación como una entidad única dentro del .keystore (puede tener muchos)

  • keypass contraseña para la protección específica que alias.
  • keytore Ruta donde se creará el archivo .keystore (la extensión estándar es en realidad .ks)
  • storepass Contraseña para proteger todo el contenido de .keystore .
  • validez En unos días la aplicación será válida con este .keystore

Funcionó realmente bien para mí, no pide nada más en la consola, solo crea el archivo. Para obtener más información, consulte keytool: herramienta de administración de claves y certificados .

EliuX
fuente
Nunca he tenido ese tipo de error, pero intente tocarlo /path/file.keystorey señalarlo con el parámetro storepass.
EliuX
¡Funciona genial! mi único cambio es que uso la extensión .jks para Android
Adam Mendoza
2
jkses la extensión oficial del almacén de claves para java en general, pero keystorees la recomendada para las aplicaciones de Android .
EliuX
1
@eliasbagley eso se debe a que el comando -storepass como se escribió anteriormente comenzó en otra línea. Escribe todo en una sola línea y estará bien.
tormuto
82

Crear archivo de almacén de claves desde la línea de comandos:

  1. Abrir línea de comando:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
    
  2. Intro> Le pedirá la contraseña> ingrese la contraseña (será invisible)

    Enter keystore password:
    Re-enter new password:
    
  3. Ingrese> Le pedirá sus detalles.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
    
  4. Enter> Enter Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
    
  5. Ingresar> Ingresar contraseña nuevamente.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:
    

[Almacenamiento de C: /index.keystore]

  1. ¡Y estás HECHO!

Exportar en Eclipse:

Exporte su paquete de Android a .apk con su archivo de almacén de claves creado

  1. Haga clic derecho en el paquete que desea exportar y seleccione exportar ingrese la descripción de la imagen aquí

  2. Seleccione Exportar aplicación de Android> Siguiente ingrese la descripción de la imagen aquí

  3. próximo
    ingrese la descripción de la imagen aquí

  4. Seleccione Usar el almacén de claves existente> Buscar archivo .keystore> ingrese la contraseña> Siguiente ingrese la descripción de la imagen aquí

  5. Seleccione Alias> ingrese contraseña> Siguiente ingrese la descripción de la imagen aquí

  6. Buscar APK Destino> Finalizar ingrese la descripción de la imagen aquí

En Android Studio:

Crear almacén [.keystore/.jks]de claves en estudio ...

  1. Haga clic en Compilar (ALT + B) > Generar APK firmado ...
    ingrese la descripción de la imagen aquí

  2. Haga clic en Crear nuevo .. (ALT + C)
    ingrese la descripción de la imagen aquí

  3. Examinar la ruta del almacén de claves (MAYÚS + ENTRAR)> Seleccionar ruta> Introducir nombre> Aceptar ingrese la descripción de la imagen aquí

  4. Rellene los detalles sobre su .jks/keystorearchivo ingrese la descripción de la imagen aquí

  5. próximo
    ingrese la descripción de la imagen aquí

  6. Tu archivo
    ingrese la descripción de la imagen aquí

  7. Ingrese la contraseña maestra de Studio (puede RESTABLECER si no lo sabe) > Aceptar ingrese la descripción de la imagen aquí

  8. Seleccione * Carpeta de destino *> Tipo de compilación

    release : for publish on app store
    debug : for debugging your application
    

    Haga clic en Finalizar

    ingrese la descripción de la imagen aquí

Hecho !!!

Iamat8
fuente
28

Este tutorial:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

fue muy útil para mí la primera vez que tuve que crear un almacén de claves. Es simple, pero las instrucciones en developer.android.com son demasiado breves.

La parte de la que no estaba seguro era dónde guardar y qué nombre asignarle al archivo de almacén de claves .

Parece que no importa dónde lo coloques, solo asegúrate de mantenerlo seguro y de realizar una serie de copias de seguridad. Solo lo puse en mi directorio de aplicaciones

Nombra el archivo "something.keystore" donde algo puede ser lo que quieras. Solía app_name.keystore , donde nombre_apl era el nombre de mi aplicación.

La siguiente parte fue cómo nombrar el alias. Una vez más, no parece importar, así que nuevamente utilicé el nombre_aplicación nuevamente. Mantenga las contraseñas igual que las que usó antes. Rellene el resto de los campos y ya está.

hombre pájaro
fuente
13

Seguí esta guía para crear el almacén de claves de depuración.

El comando es:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
Davide Pastore
fuente
11

Use este comando para crear debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"
Aravin
fuente
5

Lo primero que debe saber es si está en modo de depuración o versión. Desde el sitio del desarrollador "Hay dos modos de compilación: modo de depuración y modo de lanzamiento. Usas el modo de depuración cuando estás desarrollando y probando tu aplicación. Usas el modo de lanzamiento cuando quieres construir una versión de lanzamiento de tu aplicación que puedes distribuir directamente a los usuarios o publicar en un mercado de aplicaciones como Google Play ".

Si está en modo de depuración, haga lo siguiente ...
A. Abra la terminal y escriba:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

Nota: Para Eclipse, el almacén de claves de depuración generalmente se encuentra en ~ / .android / debug.keystore ...

B. cuando se le solicite una contraseña, simplemente ingrese "android" ...

C. Si está en modo Release, siga las instrucciones en ...

http://developer.android.com/tools/publishing/app-signing.html <- este enlace explica prácticamente todo lo que necesita saber.

Muestra amor
fuente
2

Puede crear su almacén de claves exportando un APK firmado. Cuando intente exportar / compilar un APK firmado, le pedirá un almacén de claves.

Puede elegir su almacén de claves existente o puede crear fácilmente uno nuevo haciendo clic en crear nuevo almacén de claves

Aquí un enlace muy útil y bien explicado sobre cómo crear su almacén de claves y generar un APK firmado

Este enlace explica cómo hacerlo con Android Studio, pero si mal no recuerdo, es bastante similar en Eclipse

CUIDADO

Una vez que genere su almacén de claves, guárdelo en un lugar seguro porque lo necesitará para regenerar un nuevo APK firmado.

¿Cómo exporto un proyecto en el estudio de Android?

Hugo
fuente
2

Me gustaría sugerir forma automática solo con gradle

** Definir también al menos un parámetro adicional para el almacén de claves en el último comando, por ejemplo, país '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

Esto generará un almacén de claves en la sincronización y compilación del proyecto

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE
Vlad
fuente
-4

Si no quiere o no puede usar Android Studio, puede usar la herramienta NPM create-android-keystore:

$ create-android-keystore quick

Lo que da como resultado un almacén de claves recién generado en el directorio actual.

Más información: https://www.npmjs.com/package/create-android-keystore

Kaspi
fuente