Android Studio: depurar almacén de claves


107

¿Android Studio firma las compilaciones de depuración? Si es así, ¿dónde está el almacén de claves que utiliza para hacerlo?


1
De todos modos se firma porque solo se pueden instalar compilaciones firmadas.
Alexander Kulyakhtin

3
Creo que esta es una pregunta de programación válida. Se relaciona directamente con la cadena de herramientas utilizada al desarrollar aplicaciones de Android.
Austyn Mahoney


@Prachi, ¿cómo puede ser esto un duplicado de una pregunta formulada más de 3 años después? Tal vez sea el otro un duplicado de este.
fasteque

Respuestas:


179

Está en la misma ubicación: ~/.android/debug.keystore


5
¿No está en ~ / .android en su lugar?
Eugene Mymrin

14
keytool -list -v -keystore ~ ​​/ .android / debug.keystore
jturolla

5
Esta es la versión de Windows del comando keytool: keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ <User> \ .android \ debug.keystore -list -v
Simon

12
La contraseña predeterminada es "android" y el alias de la clave es "androiddebugkey".
naXa

1
Y la contraseña predeterminada para androiddebugkey también es "android".
kibitzerCZ

64

Si usa Windows, probablemente la ubicación sea así:

C: \ Usuario \ YourUser \ .android \ debug.keystore


30

Puede especificar su propio almacén de claves de depuración si lo desea. Esta solución también le brinda la posibilidad de almacenar sus claves fuera del directorio del proyecto, así como disfrutar de la automatización en el proceso de firma. Sí, puede ir File -> Project Structurey asignar firmas de almacenes de claves y contraseñas en la Signingpestaña, pero eso colocará entradas de texto sin formato en su archivo gradle.build, lo que significa que sus secretos pueden ser revelados (especialmente en las confirmaciones del repositorio). Con esta solución, obtiene el control de usar su propio almacén de claves y la magia de la automatización durante las compilaciones de depuración y lanzamiento.

1) Cree un gradle.properties (si aún no tiene uno).

La ubicación de este archivo depende de su sistema operativo:

   /home/<username>/.gradle/ (Linux)
   /Users/<username>/.gradle/ (Mac)
   C:\Users\<username>\.gradle (Windows)

2) Agregue una entrada que apunte al yourprojectname.propertiesarchivo. (ejemplo para Windows)

yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties

3) Cree el yourprojectname.propertiesarchivo en la ubicación que especificó en el Paso 2 con la siguiente información:

keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password

4) Modifique su gradle.build archivo para que apunte al yourprojectname.propertiesarchivo para usar las variables.

if(project.hasProperty("yourprojectname.properties")
        && new File(project.property("yourprojectname.properties")).exists()) {

    Properties props = new Properties()
    props.load(new FileInputStream(file(project.property("yourprojectname.properties"))))

    android {
        signingConfigs {
            release {
                keyAlias 'release'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
            debug {
                keyAlias 'debug'
                keyPassword props['keystore.password']
                storeFile file(props['keystore'])
                storePassword props['keystore.password']
            }
        }
        compileSdkVersion 19
        buildToolsVersion "20.0.0"
        defaultConfig {
            applicationId "your.project.app"
            minSdkVersion 16
            targetSdkVersion 17
        }
        buildTypes {
            release {
            }
        }
    }

}

dependencies {
    ...
}

5) ¡Disfruta! Ahora todas sus claves estarán fuera de la raíz del directorio y, sin embargo, todavía tendrá el placer de la automatización para cada compilación.

Si obtiene un error en su archivo gradle.build sobre la variable "props" es porque no está ejecutando el bloque "android {}" dentro de la primera ifcondición donde propsse asigna la variable, así que simplemente mueva todo el android {... } sección en la condición en la que se asigna la variable props y vuelva a intentarlo.

Reuní estos pasos a partir de la información que se encuentra aquí y aquí .


1
Respecto a "2) Agregar una entrada ...". ¿Agregar una entrada a dónde?
VikingGlen

Me encanta la idea de la automatización de compilación
Khurram Shehzad

Gracias, esta es una excelente manera de mantener las contraseñas de producción fuera del control de la fuente (por lo que no están disponibles para todos los desarrolladores).
farsa

15

La ruta del archivo debug.keystore de Android Studio depende de la variable de entorno ANDROID_SDK_HOME.

Si ANDROID_SDK_HOME está definido, entonces el archivo se coloca en la subcarpeta del SDK llamada .android .
Cuando no está definido, el almacén de claves se coloca en la ruta de inicio del usuario en la misma subcarpeta:
- % HOMEPATH% \. Android \ en Windows
- $ HOME / .android / en Linux


1
¿Podría elaborar más su respuesta agregando un poco más de descripción sobre la solución que proporciona?
abarisone

¿Por qué 87 personas piensan que está en ~ / .android / debug.keystore, todos ellos no tienen una variable de entorno llamada "ANDROID_SDK_HOME"?
IloveIniesta

Esto fue muy útil. Muchas gracias
Rahul

4

Así es como finalmente creé el archivo ~ / .android / debug.keystore.

Primero algunos antecedentes. Tengo una nueva computadora portátil de viaje. Android Studio instalado. Cloné mi proyecto de Android desde git hub. El proyecto no se ejecutará. Finalmente descubrí que no se creó debug.keystore ... y no pude averiguar cómo hacer que Android Studio lo creara.

Finalmente, creé un nuevo proyecto en blanco ... ¡y eso creó debug.keystore!

Espero que esto ayude a otros que tienen este problema.


1

En Mac, lo encontrará aquí: /Users/$username/.android


1

Si usa Windows, lo encontrará siguiendo esto: Archivo -> Estructura del proyecto -> Facetas

eligió su proyecto de Android y en la ventana "Facet 'Android'" haga clic en la pestaña "Empaquetado", encontrará lo que desea


2
No existe un menú como 'Facetas'
IgorGanapolsky
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.