Android Studio firma build di debug? In tal caso, dov'è il keystore che utilizza per farlo?
Android Studio firma build di debug? In tal caso, dov'è il keystore che utilizza per farlo?
Risposte:
È nella stessa posizione: ~/.android/debug.keystore
Se usi Windows, probabilmente la posizione è così:
C: \ User \ youruser \ .android \ debug.keystore
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 Structure
assegnare i keystore e le password di firma nella Signing
scheda, 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.properties
file.
(esempio per Windows)
yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
3) Crea il yourprojectname.properties
file 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.build
file in modo che punti al yourprojectname.properties
file 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 if
condizione in cui la props
variabile 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 .
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
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.
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