Android Studio: keystore di debug


107

Android Studio firma build di debug? In tal caso, dov'è il keystore che utilizza per farlo?


1
Firma comunque perché è possibile installare solo build firmate.
Alexander Kulyakhtin

3
Penso che questa sia una domanda di programmazione valida. Si riferisce direttamente alla toolchain utilizzata durante lo sviluppo di app Android.
Austyn Mahoney


@Prachi come può essere un duplicato di una domanda posta più di 3 anni dopo? Forse è l'altro un duplicato di questo.
fasteque

Risposte:


179

È nella stessa posizione: ~/.android/debug.keystore


5
Non è invece in ~ / .android?
Eugene Mymrin

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

5
Questa è la versione per Windows del comando keytool: keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ <User> \ .android \ debug.keystore -list -v
Simon

12
La password predefinita è "android" e l'alias della chiave è "androiddebugkey".
naXa

1
E anche la password predefinita per androiddebugkey è "android".
kibitzerCZ

64

Se usi Windows, probabilmente la posizione è così:

C: \ User \ youruser \ .android \ debug.keystore


30

Se lo desideri, puoi specificare il tuo keystore di debug. Questa soluzione ti dà anche la possibilità di memorizzare le tue chiavi al di fuori della directory del progetto e di godere dell'automazione nel processo di firma. Sì, puoi andare a File -> Project Structureassegnare i keystore e le password di firma nella Signingscheda, ma ciò inserirà voci di testo in chiaro nel tuo file gradle.build, il che significa che i tuoi segreti potrebbero essere divulgati (specialmente nei commit del repository). Con questa soluzione si ottiene il controllo dell'utilizzo del proprio keystore e la magia dell'automazione durante il debug e le build di rilascio.

1) Crea un gradle.properties (se non ne hai già uno).

La posizione di questo file dipende dal sistema operativo:

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

2) Aggiungi una voce che punta al yourprojectname.propertiesfile. (esempio per Windows)

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

3) Crea il yourprojectname.propertiesfile nel percorso specificato nel passaggio 2 con le seguenti informazioni:

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

4) Modificare il gradle.buildfile in modo che punti al yourprojectname.propertiesfile per utilizzare le variabili.

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) Divertiti! Ora tutte le tue chiavi saranno al di fuori della radice della directory e tuttavia hai ancora i piaceri dell'automazione per ogni build.

Se ricevi un errore nel file gradle.build relativo alla variabile "props" è perché non stai eseguendo il blocco "android {}" all'interno della primissima ifcondizione in cui la propsvariabile viene assegnata, quindi sposta l'intero androide {... } nella condizione in cui viene assegnata la variabile props, quindi riprova.

Ho ricostruito questi passaggi dalle informazioni trovate qui e qui .


1
Riguardo a "2) Aggiungi una voce ...". Aggiungere una voce in dove?
VikingGlen

adoro l'idea dell'automazione degli
edifici

Grazie, questo è un ottimo modo per mantenere le password di produzione fuori dal controllo del codice sorgente (quindi non sono disponibili per tutti gli sviluppatori)!
sham

15

Il percorso del file debug.keystore di Android Studio dipende dalla variabile di ambiente ANDROID_SDK_HOME.

Se ANDROID_SDK_HOME è definito, il file viene inserito nella sottocartella dell'SDK denominata .android .
Quando non è definito, il keystore viene posizionato nel percorso home dell'utente nella stessa sottocartella:
- % HOMEPATH% \. Android \ su Windows
- $ HOME / .android / su Linux


1
Potresti elaborare maggiormente la tua risposta aggiungendo un po 'più di descrizione sulla soluzione che fornisci?
abarisone

perché 87 persone pensano che sia in ~ / .android / debug.keystore, non tutti hanno una variabile d'ambiente chiamata "ANDROID_SDK_HOME" ???
IloveIniesta

Questo è stato molto utile. Grazie mille
Rahul

4

Ecco come ho finalmente creato il file ~ / .android / debug.keystore.

Prima alcuni retroscena. Ho un nuovo laptop da viaggio. Android Studio installato. Clonato il mio progetto Android da Git Hub. Il progetto non sarebbe stato eseguito. Finalmente ho capito che debug.keystore non è stato creato ... e non sono riuscito a capire come ottenere Android Studio per crearlo.

Infine, ho creato un nuovo progetto vuoto ... e questo ha creato il debug.keystore!

Spero che questo aiuti altri che hanno questo problema.


1

Su Mac, lo troverai qui: /Users/$username/.android


1

Se usi Windows, troverai che segui questo: File -> Struttura del progetto -> Sfaccettature

scegli il tuo progetto Android e nella finestra "Facet 'Android'" fai clic su TAB "Packaging", troverai quello che desideri


2
Non esiste un menu come "Sfaccettature"
IgorGanapolsky
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.