Android Studio: nie można odzyskać klucza

94

Przez jakiś czas przeszukiwałem StackOverflow, ale chciałem się tylko upewnić ...

Jakiś czas temu wyczyściłem laptopa i utworzyłem kopię zapasową wszystkich plików. Mam kopię zapasową mojego pliku android.jks i jest on z powrotem na miejscu. Kiedy próbuję wygenerować podpisany plik APK, powoduje to ten sam przerażający błąd, który wszyscy otrzymują:

Error:Execution failed for task ':app:packageRelease'.
> Failed to read key conjugationappkey from store     
"/Users/wasimsandhu/android.jks": Cannot recover key

Mam swój android.jks, hasło klucza, hasło magazynu kluczy. Wszystko się zgadza. czego mi brakuje? Utworzyłem kopię zapasową wszystkich swoich plików, więc jeśli jest potrzebny konkretny plik, mogłem go znaleźć, ale nie mam pojęcia, co zrobić ...

Jeśli nie mam sensu, poproś mnie o wyjaśnienie. Dzięki!

wasimsandhu
źródło
2
Jeśli użyłeś znaku & lub @ w haśle magazynu kluczy, nie przewijaj w dół do sekcji odpowiedzi, przejdź do tego linku , aby uzyskać odpowiedź Sharma.
meyasir

Odpowiedzi:

116

Nie dziwię się, że to nie zyskało żadnej przyczepności, ale oto, co zrobiłem dla każdego, kto natknie się na ten post.

Jak powiedziałem, zarchiwizowano wszystkie moje pliki. Przywróciłem plik android.jks ze starszej kopii zapasowej. Następnie otworzyłem okno terminala i wpisałem:

keytool -storepasswd -new [insert new keystore password] -keystore [insert keystore file name]

keytool -keypasswd -alias [insert alias] -new [insert new key password] -keystore [insert keystore file name]

Magazyn kluczy i hasła kluczy muszą być takie same! To rozwiązało mój problem i mam nadzieję, że Tobie też pomoże.

wasimsandhu
źródło
5
Dziękuję Ci! Jak dowiedziałeś się, że hasła muszą być takie same? Zacząłem otrzymywać ten błąd dzisiaj. Do tej pory wszystko działało dobrze z dwoma różnymi hasłami.
Alen Siljak
6
Moje hasła są takie same i nadal pojawia się ten błąd. Udało mi się podpisać poprzednią wersję tym samym kluczem. Co mam teraz zrobić?
Tushar Gogna
1
Miałem do czynienia z tym samym problemem. Przedwczoraj pomyślnie wygenerowałem podpisany APK i dziś znowu ten sam problem. Czy ktoś może mieć trwałe rozwiązanie!
Neo
5
W moim przypadku nadal występuje ten błąd: „Błąd narzędzia keytool: java.security.UnrecoverableKeyException: Nie można odzyskać klucza”
0xAliHn
2
Dla mnie też ten sam problem. po wykonaniu pierwszej linii prosi o hasło. Podaję go, ale potem jest napisane: „błąd narzędzia keytool ... zmodyfikowano magazyn kluczy lub hasło było niepoprawne”
Ammar Bukhari,
64

[Aktualizacja: to już nie działa w Android Studio 3.0 i nowszych wersjach]

Zmierzyłem się z podobnym problemem i żadne z rozwiązań nie zadziałało po zmarnowaniu 3 godzin w Internecie, postanowiłem kopać głęboko.

Oto, jak go rozwiązałem: Błąd „Nie można odzyskać klucza” wynikał z tego, że moje „Hasło magazynu kluczy” było poprawne, ale „Hasło klucza” (aliasu klucza) było nieprawidłowe . Byłem prawie pewien, że oba hasła są takie same, ale ku mojemu przerażeniu nie były i nie wiedziałem, jakie było drugie hasło. Ponieważ podpisałem już pakiet APK, zanim sprawdziłem plik dziennika, który można znaleźć:

  • C: \ Users \ twoja_nazwa_użytkownika \ .AndroidStudio2.1 \ system \ log \

Otwórz pliki dziennika z daty podpisania apk i poszukaj następujących wpisów:

 INFO - .project.GradleExecutionHelper - Passing command-line args to Gradle Tooling API: [--configure-on-demand, -Pandroid.injected.invoked.from.ide=true, 
-Pandroid.injected.signing.store.file=E:\HobbyProjects\XYZProject\gpsjs.jks, 
-Pandroid.injected.signing.store.password=***KeyStorePassword***, 
-Pandroid.injected.signing.key.alias=***alias_name***, 
-Pandroid.injected.signing.key.password=***Key password***, 

Hasła znajdziesz w postaci zwykłego tekstu. To zadziała nawet, jeśli zapomnisz hasła.

Build3r
źródło
3
TAK! WRESZCIE! Moje hasło znajdowało się w pliku „pomysłów” we wspomnianym folderze. Próbowałem nawet użyć narzędzia do łamania haseł, ale dał mi przepustkę Alias ​​i myślałem, że to magazyn kluczy, ale tak nie było.
George,
Dzięki! Używałem master passwordże wszedłem po podpisaniu apk, ale ja po prostu potrzebne, aby powtórzyć key password.
JCarlosR
8
Czy to działa na AndroidStudio3.0? Widzę moje hasła jako *********.
TheLearner
1
W moim pliku jest napisane: -Pandroid.injected.signing.store.password = *********, -Pandroid.injected.signing.key.alias = mykey, -Pandroid.injected.signing.key.password = * ********
Androidcoder
2
Zespół @Androidcoder Android studio naprawił tę lukę w ostatnich wersjach.
Build3r
24

Jeśli to komukolwiek może pomóc - problem w moim przypadku polegał na tym, że „Hasło magazynu kluczy” i „Hasło klucza” były nieprawidłowe.

MorZa
źródło
14

Wypróbowałem wszystkie podane sugestie w odpowiedziach i komentarzach :(

Moje hasło klucza i hasło do magazynu kluczy są dokładnie takie same. Korzystanie z Android Studio 3.4

Udało mi się wymusić zamknięcie Android Studio, zacząć od nowa, wyczyścić i przebudować projekt, a następnie wygenerować podpisany apk. wszystkie konfiguracje są dokładnie takie same, ale tym razem zadziałało

Zeeshan Tufail
źródło
3
Wyczyściłem i przebudowałem projekt, a potem wszystko działało dobrze. +1 w górę
sanjeeb
1
To zadziałało dla mnie. Nie jest to fajna „funkcja” dla IDE, która psuje zarządzanie takimi kluczowymi informacjami.
Marc-André Weibezahn
Potwierdzone w Android Studio 3.6.2 PS Kocham cię
bjm904
9

[Android Studio 3.3] Otrzymałem błąd „nie można odzyskać klucza” podczas generowania podpisanego pliku APK. Udało mi się sprawdzić w starszym logu idea.log, czy moje hasło jest poprawne: Hasła Key Store i Key były identyczne i poprawne.

Aktualizacja hasła klucza w terminalu:

keytool -keypasswd -alias MYKEY -keystore KEYSTORE

Wydaje się, że nie jest już możliwe posiadanie identycznych haseł do magazynu kluczy i klucza. Keytool dał mi błąd, kiedy próbowałem. Po ustawieniu innego hasła dla klucza, Android Studio wygenerowało podpisany plik APK.

Być może w poprzednich wersjach Android Studio hasła musiały być identyczne - teraz może być odwrotnie.

LiebrandApps
źródło
Zaktualizowałem moją aplikację 2 tygodnie temu i dzisiaj nie będzie działać. Używam tego do zmiany haseł, aby były takie same i zaktualizowałem Android Studio, teraz ponownie wydałem nową wersję.
Alejandro Cumpa
Pomiędzy odpowiedzią @ Build3r a tą, udało mi się ustawić oba hasła na różne, dopuszczalne wartości i pomyślnie podpisać moją aplikację. Dzięki chłopaki!
Peter Gluck
3

To może komuś pomóc.

Kilka dni wcześniej utworzyłem kopię zapasową mojego projektu Androida na gitlab, a następnie zainstalowałem system Windows 10. Następnie sklonowałem go. Znałem dokładnie alias klucza i oba hasła.

Następnie podczas generowania podpisanego apk wprowadziłem te poświadczenia, ale nie udało mi się.

Umieściłem plik jks w folderze aplikacji. Usunąłem go stamtąd i utworzyłem oddzielny folder w folderze głównym projektu android i umieściłem tam plik jks .

Następnie próbowałem wyczyścić, przebudować projekt, a następnie ponownie uruchomić studio Android. W końcu zbudował podpisany apk: D

Makarand
źródło
2

Ten problem występuje tylko w przypadku nieprawidłowego dopasowania hasła klucza lub hasła magazynu kluczy.

Arjun G.
źródło
2

Moje hasła były takie same i nadal wyświetlał ten błąd. Wyczyść, przebuduj i zrestartuj Android Studio nie zadziałało. Jedynym rozwiązaniem, które zadziałało, było przeniesienie pliku keystore.jks do nowej lokalizacji. Mam nadzieję że to pomoże.

Andrain
źródło
1

Właśnie usunąłem sekcję signingConfigs z pliku Gradle aplikacji. Następnie przebudowałem projekt i znów zadziałał.

Martin B.
źródło
0

Miałem szczęście, że sprawdziłem w Android Studio zakładkę Struktura projektu / Podpisywanie i znalazłem hasło klucza i hasło do przechowywania podane w postaci zwykłego tekstu. Myślałem, że są tacy sami jak inni, ale tak nie było.

saswanb
źródło
0

Jeśli masz uruchomione eclipse, spróbuj je wyłączyć i ponownie wygenerować podpisany apk.

W moim przypadku sprawdziłem, czy wszystkie hasła są poprawne i nawet wygenerowałem nowy magazyn kluczy ze studia Android. Nadal nie działało, ale po wyłączeniu uruchomionego zaćmienia wszystko po prostu działało, ze starym magazynem kluczy, z którego korzystałem, lub z nowo wygenerowanym.

RedSIght
źródło
0

Spakowałem plik podpisu już wcześniej, kiedy go utworzyłem. Kiedy otrzymałem ten błąd, użyłem go ponownie. Możesz go użyć, jeśli masz kopię zapasową. Myślę, że zepsuliśmy rzeczy, zanim oni to zauważą.

Mahmut K.
źródło
0

Miałem ten sam problem. W moim przypadku po zsynchronizowaniu projektu z plikami gradle rozwiązano ten problem. To może komuś pomóc.

Vikas Rai
źródło
0

Po prostu usunąłem .imlplik z mojego projektu . Potem przebudowałem projekt i znów zadziałał.

Muhammad Waleed
źródło