Android Studio - debugowanie magazynu kluczy


107

Czy Android Studio podpisuje kompilacje do debugowania? Jeśli tak, gdzie jest magazyn kluczy, którego używa do tego?


1
Mimo to podpisuje, ponieważ można zainstalować tylko podpisane kompilacje.
Alexander Kulyakhtin

3
Myślę, że to ważne pytanie programistyczne. Odnosi się bezpośrednio do łańcucha narzędzi używanego podczas tworzenia aplikacji na Androida.
Austyn Mahoney


@Prachi jak to może być duplikatem pytania zadanego ponad 3 lata później? Może to ta druga kopia tego.
fasteque

Odpowiedzi:


179

Znajduje się w tym samym miejscu: ~/.android/debug.keystore


5
Czy to nie jest zamiast tego w ~ / .android?
Eugene Mymrin,

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

5
To jest wersja polecenia keytool dla systemu Windows: keytool -exportcert -alias androiddebugkey -keystore C: \ Users \ <User> \ .android \ debug.keystore -list -v
Simon

12
Domyślne hasło to „android”, a alias klucza to „androiddebugkey”.
naXa

1
Domyślne hasło dla androiddebugkey to także „android”.
kibitzerCZ

64

Jeśli używasz systemu Windows, prawdopodobnie lokalizacja wygląda następująco:

C: \ Użytkownik \ TwójUżytkownik \ .android \ debug.keystore


30

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 Structurei przypisać magazyny kluczy i hasła do podpisywania na Signingkarcie, 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.propertiesplik. (przykład dla Windows)

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

3) Utwórz yourprojectname.propertiesplik 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.buildplik, aby wskazywał na yourprojectname.propertiesplik, 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 ifwarunku, w którym propszmienna 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 .


1
Odnośnie „2) Dodaj wpis ...”. Dodaj wpis gdzie?
VikingGlen

podoba mi się pomysł automatyzacji kompilacji
Khurram Shehzad,

Dzięki, to świetny sposób na przechowywanie haseł produkcyjnych poza kontrolą źródła (więc nie są one dostępne dla wszystkich programistów)!
pozorowany

15

Ś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


1
Czy mógłbyś bardziej szczegółowo opisać swoją odpowiedź, dodając więcej opisu rozwiązania, które oferujesz?
abarisone

dlaczego 87 ludzi myśli, że jest w ~ / .android / debug.keystore, wszyscy nie mają zmiennej środowiskowej o nazwie „ANDROID_SDK_HOME” ???
IloveIniesta

To było bardzo pomocne. Wielkie dzięki
Rahul

4

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.



1

Jeśli używasz systemu Windows, znajdziesz go w następujący sposób: Plik -> Struktura projektu -> Aspekty

wybierz swój projekt Android i w oknie "Facet 'Android" kliknij TAB "Opakowanie", znajdziesz to, czego szukasz


2
Nie ma takiego menu jak „
Fasety
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.