Jak mogę utworzyć magazyn kluczy?


537

Jakie są kroki, aby utworzyć magazyn kluczy dla Androida?

Muszę korzystać z map Google w mojej aplikacji i nie wiem, jakie kroki przegapiłem. Podaj mi szczegółowe kroki (nie zrozumiałem tego z przewodników).


Czy już coś zrobiłeś lub szukasz rekomendacji na początek?
atk

2
Są to następujące kroki, które zrobiłem: 1-instalacja eclipse 2- instalacja jdk 3- instalacja sdk 4- instalacja wtyczki dla systemu Android. nie udało mi się wykonać polecenia w win cmd, polecenia: $ keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 (który generuje klucz prywatny). dzięki
user482762,

@ user482762: czy odpowiedź CommonsWare działała dla Ciebie? Dlaczego nie udało Ci się wykonać wind cmd?
atk

Odpowiedź CommonsWare nie działa dla mnie, kiedy próbuję wykonać polecenia z cmd, pojawia się komunikat o błędzie: „$ nie jest rozpoznawany jako polecenie wewnętrzne lub zewnętrzne, program operacyjny lub plik wsadowy”. dzięki za pomoc
user482762,

Ach! Nie chcesz tak naprawdę wpisywać $. W systemie Windows, gdy używasz wiersza polecenia (aplikacji cmd), wiersz wprowadzania zwykle wygląda jak DRIVE: / DIRECTORY>, na przykład „c: \”. W Uniksie monit często wygląda jak „$” lub po prostu „>”. „$” W poleceniu ma reprezentować monit wejściowy, a nie część polecenia. Spróbuj uruchomić keytool ze wszystkimi argumentami, bez $.
atk

Odpowiedzi:


545

Aby odpowiedzieć na pytanie w tytule, należy utworzyć magazyn kluczy za pomocą narzędzia Java Keytool, które jest dostarczane z dowolną standardową dystrybucją JDK i można je znaleźć pod adresem %JAVA_HOME%\bin. W systemie Windows zwykle tak jest C:\Program Files\Java\jre7\bin.

Tak więc w systemie Windows otwórz okno poleceń, przejdź do tego katalogu i wprowadź takie polecenie

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

Keytool monituje o podanie haseł do magazynu kluczy, podanie pól Nazwa wyróżniająca, a następnie hasła do klucza. Następnie generuje magazyn kluczy jako plik o nazwie my-release-key.keystore w katalogu, w którym się znajdujesz. Magazyn kluczy i klucz są chronione wprowadzonymi hasłami. Magazyn kluczy zawiera jeden klucz, ważny przez 10000 dni. Alias ​​to nazwa, której będziesz używać później, aby odwoływać się do tego magazynu kluczy podczas podpisywania aplikacji.

Więcej informacji na temat Keytool znajduje się w dokumentacji pod adresem : http://docs.oracle.com/javase/6/docs/technotes/tools/windows/keytool.html

i więcej informacji na temat podpisywania aplikacji na Androida znajdziesz tutaj: http://developer.android.com/tools/publishing/app-signing.html


6
Dobry krzyk na temat zdefiniowania -keysize 2048 zamiast domyślnej 1024 osobiście używam teraz 4096
scottyab

9
w celu uzyskania informacji w moim przypadku muszę otworzyć okno poleceń z uprawnieniami administratora
Intuitisoft,

To daje mi: E / TokenRequestor: Masz nieprawidłowe konfiguracje związane z OAuth2, sprawdź. Błąd szczegółowy: UNREGISTERED_ON_API_CONSOLE Już utworzyłem poświadczenie, wprowadzając mój SHA1 w konsoli API.
Rohan Taneja

Bezpośredni link do dokumentacji dotyczącej ręcznego generowania magazynu kluczy: developer.android.com/studio/publish/…
Methodignature

Użyłem tego polecenia, które ustawia 2 hasła, tak aby pominąć niektóre podpowiedzi: keytool -genkey -v -keystore debug.keystore -storepass android -alias android -keypass android -keyalg RSA -keysize 2048 -validity 10000. Następnie, aby wygenerować SHA-1, który musisz umieścić w Firebase, wykonaj:keytool -list -v -keystore debug.keystore -alias android -storepass android -keypass android
Albert Vila Calvo

158

Podpisywanie aplikacji w Android Studio

Aby podpisać aplikację w trybie wydania w Android Studio, wykonaj następujące kroki:

1- Na pasku menu kliknij Kompiluj> Generuj podpisany APK.


2-W oknie Kreatora generowania podpisanego pliku APK kliknij opcję Utwórz nowy, aby utworzyć nowy magazyn kluczy. Jeśli masz już magazyn kluczy, przejdź do kroku 4.


3- W oknie Nowy magazyn kluczy wprowadź wymagane informacje, jak pokazano na rysunku. Twój klucz powinien być ważny przez co najmniej 25 lat, abyś mógł podpisywać aktualizacje aplikacji tym samym kluczem przez cały okres użytkowania aplikacji.

wprowadź opis zdjęcia tutaj

4- W oknie Kreatora generowania podpisanego pliku APK wybierz magazyn kluczy, klucz prywatny i wprowadź hasła dla obu. Następnie kliknij przycisk Dalej.wprowadź opis zdjęcia tutaj

5- W następnym oknie wybierz miejsce docelowe podpisanego pliku APK i kliknij przycisk Zakończ. wprowadź opis zdjęcia tutaj

odniesienie

http://developer.android.com/tools/publishing/app-signing.html


2
Chociaż ta odpowiedź jest poprawna, jest wygodna tylko wtedy, gdy masz już zainstalowane studio Android.
Seph Reed,

98

Byłem szalony, szukając sposobu na wygenerowanie .keystore przy użyciu w powłoce polecenia jednowierszowego , aby móc uruchomić go z innej aplikacji. To jest sposób:

echo y | keytool -genkeypair -dname "cn=Mark Jones, ou=JavaSoft, o=Sun, c=US" -alias business -keypass kpi135 -keystore /working/android.keystore -storepass ab987c -validity 20000
  • dname to unikalny identyfikator aplikacji w .keystore

    • c pełne imię i nazwisko osoby lub organizacji, która generuje .keystore
    • ou Jednostka organizacyjna, która tworzy projekt, jego jednostka organizacyjna, która go tworzy. Dawny. android.google.com
    • o Właściciel organizacji całego projektu. Ma większy zasięg niż ou . Np .: google.com
    • c Krótki kod kraju. Np .: dla Stanów Zjednoczonych to „US”
  • alias Identyfikator aplikacji jako pojedynczego elementu w .keystore (może mieć wiele)

  • keypass Hasło do ochrony tego konkretnego aliasu.
  • ścieżka do pliku kluczy, w którym ma zostać utworzony plik .keystore (w rzeczywistości jest to standardowe rozszerzenie .ks)
  • storepass Hasło do ochrony całej zawartości .keystore .
  • ważność W ciągu kilku dni aplikacja będzie działać z tym .keystore

Działa to dla mnie naprawdę dobrze, nie prosi o nic innego w konsoli, po prostu tworzy plik. Aby uzyskać więcej informacji, zobacz keytool - Narzędzie do zarządzania kluczami i certyfikatami .


Nigdy nie miałem tego rodzaju błędu, ale spróbuj dotknąć /path/file.keystorei wskazać to za pomocą parametru storepass.
EliuX

działa świetnie! moją jedyną zmianą jest to, że korzystam z rozszerzenia .jks dla Androida
Adam Mendoza,

2
jksjest oficjalnym rozszerzeniem magazynu kluczy dla java w ogóle, ale keystorezaleca się stosowanie go zamiast tego w aplikacjach na Androida .
EliuX

1
@eliasbagley, ponieważ polecenie -storepass jak napisano powyżej rozpoczęło się w innym wierszu. Napisz wszystko w jednym wierszu i wszystko będzie dobrze.
tormuto

82

Utwórz plik kluczy z wiersza poleceń:

  1. Otwórz wiersz poleceń:

    Microsoft Windows [Version 6.1.7601]
    Copyright (c) 2009 Microsoft Corporation.  All rights reserved
    
    // (if you want to store keystore file at C:/ open command line with RUN AS ADMINISTRATOR)
    
    C:\Windows\system32> keytool -genkey -v -keystore [your keystore file path]{C:/index.keystore} -alias [your_alias_name]{index} -keyalg RSA -keysize 2048 -validity 10000[in days]
  2. Enter> Poprosi cię o hasło> wpisz hasło (będzie niewidoczne)

    Enter keystore password:
    Re-enter new password:
  3. Enter> Zapyta o Twoje dane.

    What is your first and last name?
     [Unknown]:  {AB} // [Your Name / Name of Signer] 
    What is the name of your organizational unit?
     [Unknown]:  {Self} // [Your Unit Name] 
    What is the name of your organization?
     [Unknown]:  {Self} // [Your Organization Name] 
    What is the name of your City or Locality?
     [Unknown]:  {INDORE} // [Your City Name] 
    What is the name of your State or Province?
     [Unknown]:  {MP} //[Your State] 
    What is the two-letter country code for this unit?
     [Unknown]:  91
  4. Enter> Enter Y

    Is CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91 correct?
    [no]:  Y
  5. Wprowadź> Wprowadź ponownie hasło.

    Generating 2,048 bit RSA key pair and self-signed certificate    (SHA256withRSA) with a validity of 10,000 days
        for: CN=AB, OU=Self, O=Self, L=INDORE, ST=MP, C=91
    Enter key password for <index> (RETURN if same as keystore password):
    Re-enter new password:

[Przechowywanie C: /index.keystore]

  1. I jesteś GOTOWY !!!

Eksportuj w środowisku Eclipse:

Wyeksportuj swój pakiet Androida do .apk z utworzonym plikiem magazynu kluczy

  1. Kliknij prawym przyciskiem myszy pakiet, który chcesz wyeksportować, i wybierz eksport wprowadź opis zdjęcia tutaj

  2. Wybierz opcję Eksportuj aplikację na Androida> Dalej wprowadź opis zdjęcia tutaj

  3. Kolejny
    wprowadź opis zdjęcia tutaj

  4. Wybierz Użyj istniejącego magazynu kluczy> Przeglądaj plik .keystore> wprowadź hasło> Dalej wprowadź opis zdjęcia tutaj

  5. Wybierz Alias> wprowadź hasło> Dalej wprowadź opis zdjęcia tutaj

  6. Przeglądaj miejsce docelowe APK> Zakończ wprowadź opis zdjęcia tutaj

W Android Studio:

Utwórz magazyn kluczy [.keystore/.jks]w studio ...

  1. Kliknij Kompiluj (ALT + B) > Wygeneruj podpisany plik APK ...
    wprowadź opis zdjęcia tutaj

  2. Kliknij Utwórz nowy .. (ALT + C)
    wprowadź opis zdjęcia tutaj

  3. Przeglądaj ścieżkę do magazynu kluczy (SHIFT + ENTER)> Wybierz ścieżkę> Wpisz nazwę> OK wprowadź opis zdjęcia tutaj

  4. Podaj szczegóły dotyczące .jks/keystorepliku wprowadź opis zdjęcia tutaj

  5. Kolejny
    wprowadź opis zdjęcia tutaj

  6. Plik
    wprowadź opis zdjęcia tutaj

  7. Wprowadź hasło główne Studio (możesz zresetować, jeśli nie wiesz) > OK wprowadź opis zdjęcia tutaj

  8. Wybierz * Folder docelowy *> Typ kompilacji

    release : for publish on app store
    debug : for debugging your application

    Kliknij przycisk Zakończ

    wprowadź opis zdjęcia tutaj

Gotowy !!!


28

Ten samouczek:

http://techdroid.kbeanie.com/2010/02/sign-your-android-applications-for.html

był dla mnie bardzo pomocny, kiedy pierwszy raz musiałem utworzyć magazyn kluczy. To proste, ale instrukcje na developer.android.com są trochę zbyt krótkie.

Nie byłem pewien, gdzie zapisać i jaką nazwę nadać plikowi kluczy .

Wydaje mi się, że nie ma znaczenia, gdzie to umieścisz, po prostu upewnij się, że jest bezpieczny i przechowujesz kilka kopii zapasowych. Po prostu umieściłem go w katalogu aplikacji

Nazwij plik „something.keystore”, w którym coś może być czymkolwiek chcesz. Użyłem app_name.keystore , gdzie app_name to nazwa mojej aplikacji.

Następną częścią było, jak nazwać alias. Znowu nie wydaje się to mieć znaczenia, więc ponownie użyłem nazwy aplikacji . Zachowaj hasła takie same jak wcześniej. Wypełnij pozostałe pola i gotowe.


13

Postępowałem zgodnie z tym przewodnikiem, aby utworzyć debugujący magazyn kluczy.

Polecenie to:

keytool -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999

11

Użyj tego polecenia, aby utworzyć debug.keystore

keytool -genkey -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android -keyalg RSA -keysize 2048 -validity 10000 -dname "CN=Android Debug,O=Android,C=US"

5

Pierwszą rzeczą, o której należy wiedzieć, jest to, czy jesteś w trybie debugowania lub zwalniania. Ze strony dla programistów „Istnieją dwa tryby kompilacji: tryb debugowania i tryb wydania. Tryb debugowania jest używany podczas opracowywania i testowania aplikacji. Tryb wydania jest używany, gdy chcesz zbudować wersję wydania aplikacji, którą możesz dystrybuować bezpośrednio użytkownikom lub publikować w sklepie z aplikacjami, takim jak Google Play ”.

W trybie debugowania wykonaj następujące czynności:
A. Otwórz terminal i wpisz:

keytool -exportcert -alias androiddebugkey -keystore path_to_debug_or_production_keystore -list -v

Uwaga: W przypadku Eclipse magazyn kluczy debugowania zwykle znajduje się w ~ / .android / debug.keystore ...

B. gdy pojawi się monit o hasło, wpisz „android” ...

C. Jeśli jesteś w trybie zwolnienia, postępuj zgodnie z instrukcjami ...

http://developer.android.com/tools/publishing/app-signing.html <- ten link wyjaśnia wszystko, co musisz wiedzieć.


2

Możesz utworzyć swój magazyn kluczy, eksportując podpisany plik APK. Gdy spróbujesz wyeksportować / zbudować podpisany plik APK, poprosi on o magazyn kluczy.

Możesz wybrać istniejący magazyn kluczy lub łatwo utworzyć nowy, klikając przycisk Utwórz nowy magazyn kluczy

Tutaj link jest bardzo przydatny i dobrze wyjaśniony, jak utworzyć plik kluczy i wygenerować podpisany plik APK

Ten link wyjaśnił, jak to zrobić w Android Studio, ale jeśli pamiętam, w Eclipse jest dość podobny

UWAŻAJ

Po wygenerowaniu magazynu kluczy przechowuj go w bezpiecznym miejscu, ponieważ będzie on potrzebny do ponownego wygenerowania nowego podpisanego pliku APK.

Jak mogę wyeksportować projekt do studia Android?


2

Chciałbym zaproponować automatyczny sposób tylko z gradem

** Zdefiniuj także co najmniej jeden dodatkowy parametr dla magazynu kluczy w ostatnim poleceniu, np. Kraj '-dname', 'c=RU'**

apply plugin: 'com.android.application'

// define here sign properties
def sPassword = 'storePassword_here'
def kAlias = 'keyAlias_here'
def kPassword = 'keyPassword_here'

android {
    ...
    signingConfigs {
        release {
            storeFile file("keystore/release.jks")
            storePassword sPassword
            keyAlias kAlias
            keyPassword kPassword
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            shrinkResources true
            minifyEnabled true
            useProguard true
            signingConfig signingConfigs.release
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

...

task generateKeystore() {
    exec {
        workingDir projectDir
        commandLine 'mkdir', '-p', 'keystore'
    }
    exec {
        workingDir projectDir
        commandLine 'rm', '-f', 'keystore/release.jks'
    }
    exec {
        workingDir projectDir
        commandLine 'keytool', '-genkey', '-noprompt', '-keystore', 'keystore/release.jks',
            '-alias', kAlias, '-storepass', sPassword, '-keypass', kPassword, '-dname', 'c=RU',
            '-keyalg', 'RSA', '-keysize', '2048', '-validity', '10000'
    }
}

project.afterEvaluate {
    preBuild.dependsOn generateKeystore
}

Spowoduje to wygenerowanie magazynu kluczy podczas synchronizacji i kompilacji projektu

> Task :app:generateKeystore UP-TO-DATE
> Task :app:preBuild UP-TO-DATE

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.