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.