Jakiś czas temu przesłałem moją aplikację do Google Play (kiedyś nazywał się Android Market).
Dzisiaj zaktualizowałem aplikację, ale usunąłem poprzedni plik kluczy i utworzyłem nowy.
Podczas przesyłania napisano, że plik APK musi być podpisany tymi samymi certyfikatami, co poprzednia wersja:
Przesyłanie nie powiodło się
Przesłałeś plik APK podpisany innym certyfikatem niż poprzednie pliki APK. Musisz użyć tego samego certyfikatu.
Twoje istniejące pliki APK są podpisane za pomocą certyfikatów za pomocą odcisków palców:
[SHA1: 89: 2F: 11: FE: CE: D6: CC: DF: 65: E7: 76: 3E: DD: A7: 96: 4F: 84: DD: BA: 33]
oraz certyfikat (y) użyty (e) do podpisania przesłanego pliku APK mają odciski palców:
[SHA1: 20: 26: F4: C1: DF: 0F: 2B: D9: 46: 03: FF: AB: 07: B1: 28: 7B: 9C: 75: 44: CC]
Ale nie mam tego certyfikatu i nie chcę usuwać ani ponownie publikować aplikacji, ponieważ ma aktywnych użytkowników.
Co mogę zrobić, aby podpisać moją aplikację za pomocą nowego certyfikatu?
źródło
Odpowiedzi:
Nic. Przeczytaj dokumentację: Publikowanie aktualizacji w Android Market
źródło
Czy podpisałeś się przez pomyłkę?
Google Play nie zezwala na publikowanie aplikacji podpisanej przy użyciu magazynu kluczy debugowania. Jeśli spróbujesz przesłać taki plik APK, Google Play nie powiedzie się z komunikatem „Przesłałeś plik APK podpisany w trybie debugowania. Musisz podpisać swój plik APK w trybie zwolnienia”.
Jeśli jednak spróbujesz załadować aktualizację podpisaną przy użyciu magazynu kluczy debugowania, ten komunikat nie zostanie wyświetlony; Google Play wyświetli komunikat pokazany w pytaniu, odnoszący się do odcisków palców SHA1.
Najpierw sprawdź, czy aplikacja została podpisana przez pomyłkę.
Jak sprawdzić, które klucze podpisu zostały użyte?
Zbierz informacje z APK
Możesz sprawdzić, za pomocą których certyfikatów podpisano oryginalny APK i zaktualizować APK, używając następujących poleceń, używając Java
keytool
:To pokazuje szczegółowe informacje o tym, jak APK został podpisany, na przykład:
Ważne części, na które należy tutaj zwrócić uwagę - dla każdego pakietu APK - to wartość odcisku palca SHA1, wartość tożsamości właściciela i ważne od / do dat.
Jeśli to
keytool
polecenie nie działa (-jarfile
opcja wymaga Java 7), możesz uzyskać bardziej podstawowe informacje za pomocąjarsigner
polecenia:To niestety nie pokazuje odcisku palca SHA1, ale pokazuje tożsamość właściciela X.509, wraz z datami wygaśnięcia certyfikatu. Na przykład:
Możesz zignorować każdy komunikat „CertPath not validated”, a także ostrzeżenia o łańcuchach certyfikatów lub znacznikach czasu; w tym przypadku nie są istotne.
Porównaj wartości właściciela, SHA1 i wygaśnięcia między pakietami APK
Jeśli wartość właściciela / X.509 to
CN=Android Debug, O=Android, C=US
, oznacza to, że podpisałeś pakiet APK za pomocą klucza debugowania , a nie oryginalnego klucza wydaniaJeśli wartość odcisku palca SHA1 różni się między oryginalnym i aktualizowanym pakietem APK, to nie użyto tego samego klucza podpisu dla obu pakietów APK
Jeśli wartości tożsamości Owner / X.509 są różne lub daty wygaśnięcia certyfikatu różnią się między dwoma pakietami APK, nie użyto tego samego klucza podpisu dla obu plików APK
Zauważ, że nawet jeśli wartości Owner / X.509 są identyczne między dwoma certyfikatami, nie oznacza to, że certyfikaty są identyczne - jeśli cokolwiek innego się nie zgadza - na przykład wartości odcisku palca - to certyfikaty są różne.
Wyszukaj oryginalny magazyn kluczy, sprawdź kopie zapasowe
Jeśli dwa pliki APK mają różne informacje o certyfikacie, musisz znaleźć oryginalny plik kluczy, tj. Plik z pierwszą wartością odcisku palca SHA1, którą
keytool
podałeś Google Play (lub ).Przeszukuj wszystkie pliki kluczy, które możesz znaleźć na komputerze, i we wszystkich posiadanych kopiach zapasowych, dopóki nie znajdziesz tego z prawidłowym odciskiem palca SHA1:
Po prostu naciśnij, Enterjeśli pojawi się monit o hasło - niekoniecznie musisz go wprowadzić, jeśli chcesz szybko sprawdzić wartość SHA1.
Nigdzie nie mogę znaleźć oryginalnego magazynu kluczy
Jeśli nie możesz znaleźć oryginalnego magazynu kluczy, nigdy nie będziesz w stanie opublikować żadnych aktualizacji tej konkretnej aplikacji.
Android wspomina o tym wyraźnie na stronie Podpisywanie aplikacji :
Po pierwszym wydaniu pakietu APK wszystkie kolejne wydania muszą być podpisane dokładnie tym samym kluczem.
Czy mogę wyodrębnić oryginalny klucz podpisu z oryginalnego pliku APK?
Nie. Nie jest to możliwe. Plik APK zawiera tylko informacje publiczne, a nie informacje o kluczu prywatnym.
Czy mogę przeprowadzić migrację do nowego klucza do podpisywania?
Nie. Nawet jeśli znajdziesz oryginał, nie możesz podpisać pakietu APK za pomocą klucza A, a następnie podpisać następną aktualizację za pomocą obu kluczy A i B, a następnie podpisać następną aktualizację tylko za pomocą klucza B.
Podpisanie pliku APK (lub dowolnego pliku JAR) wieloma kluczami jest technicznie możliwe, ale Google Play nie akceptuje już plików APK z wieloma podpisami.
Próba zrobienia tego spowoduje wyświetlenie komunikatu „Twój plik APK został podpisany wieloma certyfikatami. Podpisz go tylko jednym certyfikatem i prześlij go ponownie”.
Co mogę zrobić?
Musisz zbudować aplikację z nowym identyfikatorem aplikacji (np. Zmienić z „com.example.myapp” na „com.example.myapp2”) i utworzyć zupełnie nowy wpis w Google Play.
Być może będziesz musiał także zmienić kod, aby ludzie mogli zainstalować nową aplikację, nawet jeśli mają zainstalowaną starą aplikację, np. Musisz upewnić się, że nie masz sprzecznych dostawców treści.
Utracisz istniejącą bazę instalacyjną, recenzje itp. I będziesz musiał znaleźć sposób, aby zachęcić obecnych klientów do odinstalowania starej aplikacji i zainstalowania nowej wersji.
Ponownie upewnij się, że masz bezpieczne kopie zapasowe magazynu kluczy i hasła używanych w tej wersji.
źródło
[CertPath not validated: Path does not chain with any of the trust anchors]
, nie problem? Widzę swoje imię w,CN
więc chyba poprawnie je podpisałem :)Nic - Google wyraźnie stwierdza, że aplikacja jest identyfikowana przez klucze użyte do jej podpisania. W związku z tym, jeśli zgubiłeś klucze, musisz utworzyć nową aplikację.
źródło
Dzisiaj napotkałem ten sam problem, niestety miałem dwa aliasy w moim pliku kluczy.
źródło
Właśnie miałem to wydarzyło się z czystego niebieskiego. Naprawdę nie sądzę, żebym coś zmienił.
Jednak
Build => Clean Project
to naprawiłem.źródło
Tutaj otrzymuję odpowiedź na to pytanie. Po zbyt długim poszukiwaniu wreszcie mogę złamać klucz i hasło do tego. Zapomniałem mojego klucza i aliasu również pliku jks, ale na szczęście znam wiązkę hasła, którą w nim umieściłem. ale znalezienie odpowiednich kombinacji było dla mnie najtrudniejszym zadaniem.
Rozwiązanie - Pobierz to - Wtyczka Keytool IUI wersja 2.4.1
okno wyskoczy teraz teraz pokazuje nazwę aliasu .. jeśli plik jks jest poprawny .. kliknij alias prawym przyciskiem myszy i kliknij „wyświetl łańcuch certyfikatów” .. pokaże klucz SHA1 .. dopasuj ten klucz do tego, który otrzymujesz podczas przesyłania apk w Google App Store ...
jeśli pasuje, to masz odpowiedni plik jks i alias ..
teraz mam szczęście, że mam kilka pasujących haseł ...
teraz przejdź do tego skryptu wstaw tę samą ścieżkę jks .. i hasło (wśród hasła, które masz) umieść dowolną ścieżkę w „pliku certyfikatu”
jeśli na ekranie pojawi się jakikolwiek błąd, hasło nie jest zgodne. Jeśli nie wyświetla żadnego błędu, oznacza to, że masz prawidłowy plik jks. popraw teraz alias i hasło (), dzięki czemu możesz przesłać swoją aplikację w sklepie Play :)
źródło
Jeśli masz przy sobie poprzedni plik apk (kopia zapasowa), użyj jarSigner, aby wyodrębnić certyfikat z tego apka, a następnie użyj tego klucza lub użyj keytool do sklonowania tego certyfikatu, być może to pomoże ... Pomocne linki to dokumenty jarsigner i dokumenty keytool .
źródło
Bardzo polecam Keystore Explorer ( https://keystore-explorer.org/ ), który umożliwia dostęp do twojego magazynu kluczy bez konieczności przesyłania go do Google Play. W ten sposób możesz rozwiązać problem nieprawidłowego wprowadzania hasła.
źródło
Możesz użyć nowej funkcji podpisywania aplikacji Google Play, aby wygenerować nowy plik klucza.
Po maju 2017 r. Sklep Google Play dodaje nową funkcję do sklepu Play i jest to dobra wiadomość dla programistów Androida. Dzięki tej funkcji programista może zaktualizować swoją aplikację lub aplikację, która straciła plik kluczy. musisz włączyć podpisywanie aplikacji Google Play na konsoli Play Store.
https://support.google.com/googleplay/android-developer/answer/7384423?hl=pl
http://www.geekcodehub.com/2018/05/23/keystore-lost-in-android/
źródło
Ostatnio napotkałem ten problem, po wypróbowaniu różnych sposobów logowania, takich jak włączanie V1 lub V2, zalogowanie się poprzez zmianę nazwy aliasu i ostatnie sprawdzenie, czy używam niewłaściwego pliku magazynu kluczy
źródło
Mój [głupi] błąd polegał na tym, że użyłem pliku app-debug.apk zamiast pliku app-release.apk. Musisz wybrać opcję „release” w ramce „Build Variants” podczas generowania podpisanego pliku APK. Plik app-release.apk powinien znajdować się w folderze „app \ release” w katalogu głównym projektu.
źródło