Czy Android Studio podpisuje kompilacje do debugowania? Jeśli tak, gdzie jest magazyn kluczy, którego używa do tego?
Czy Android Studio podpisuje kompilacje do debugowania? Jeśli tak, gdzie jest magazyn kluczy, którego używa do tego?
Odpowiedzi:
Znajduje się w tym samym miejscu: ~/.android/debug.keystore
Jeśli używasz systemu Windows, prawdopodobnie lokalizacja wygląda następująco:
C: \ Użytkownik \ TwójUżytkownik \ .android \ debug.keystore
Jeśli chcesz, możesz określić własny magazyn kluczy debugowania. To rozwiązanie daje również możliwość przechowywania kluczy poza katalogiem projektu, a także pozwala cieszyć się automatyzacją procesu podpisywania. Tak, możesz przejść do File -> Project Structure
i przypisać magazyny kluczy i hasła do podpisywania na Signing
karcie, ale spowoduje to umieszczenie wpisów w postaci zwykłego tekstu w pliku gradle.build, co oznacza, że Twoje sekrety mogą zostać ujawnione (szczególnie w zatwierdzeniach repozytorium). Dzięki temu rozwiązaniu zyskujesz kontrolę nad używaniem własnego magazynu kluczy i magią automatyzacji podczas debugowania i kompilacji.
1) Utwórz gradle.properties (jeśli jeszcze go nie masz).
Lokalizacja tego pliku zależy od systemu operacyjnego:
/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)
2) Dodaj wpis wskazujący na yourprojectname.properties
plik.
(przykład dla Windows)
yourprojectname.properties=c:\\Users\\<username>\\signing\\yourprojectname.properties
3) Utwórz yourprojectname.properties
plik w lokalizacji określonej w kroku 2 z następującymi informacjami:
keystore=C:\\path\\to\\keystore\\yourapps.keystore
keystore.password=your_secret_password
4) Zmodyfikuj gradle.build
plik, aby wskazywał na yourprojectname.properties
plik, aby użyć zmiennych.
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) Ciesz się! Teraz wszystkie twoje klucze będą znajdować się poza głównym katalogiem, a mimo to będziesz mieć przyjemność z automatyzacji każdej kompilacji.
Jeśli w pliku gradle.build pojawi się błąd dotyczący zmiennej "props", to dlatego, że nie wykonujesz bloku "android {}" w pierwszym if
warunku, w którym props
zmienna jest przypisana, więc po prostu przenieś cały android {... } do warunku, w którym przypisana jest zmienna props, a następnie spróbuj ponownie.
Złożyłem te kroki na podstawie informacji znalezionych tutaj i tutaj .
Ścieżka do pliku debug.keystore w Android Studio zależy od zmiennej środowiskowej ANDROID_SDK_HOME.
Jeśli zdefiniowano ANDROID_SDK_HOME, plik zostanie umieszczony w podfolderze SDK o nazwie .android .
Jeśli nie jest zdefiniowany, to magazyn kluczy umieszczany jest w ścieżce domowej użytkownika w tym samym podfolderze:
- % HOMEPATH% \. Android \ w systemie Windows
- $ HOME / .android / w systemie Linux
Oto jak w końcu utworzyłem plik ~ / .android / debug.keystore.
Najpierw trochę tła. Mam nowy laptop podróżny. Zainstalowano Android Studio. Sklonowałem mój projekt Androida z centrum git. Projekt nie działał. W końcu zorientowałem się, że debug.keystore nie został utworzony ... i nie mogłem wymyślić, jak zmusić Android Studio do jego utworzenia.
Wreszcie utworzyłem nowy pusty projekt ... i utworzyłem magazyn debug.keystore!
Mam nadzieję, że to pomoże innym, którzy mają ten problem.