Jak włączyć podpisywanie aplikacji Google Play

113

Myślę, że wielu programistów próbuje dowiedzieć się więcej o nowej funkcji podpisywania aplikacji Google Play przedstawionej na Google I / O 2017.

Możliwość przechowywania magazynu kluczy w celu podpisywania aplikacji w Google Play oszczędza wysiłek związany z bezpiecznym przechowywaniem magazynu kluczy i może pomóc systemowi w optymalizacji plików APK obsługiwanych na każdym urządzeniu, w oparciu o cechy sprzętu i systemu operacyjnego.

Możesz przeczytać więcej na ten temat w oficjalnej dokumentacji tutaj: https://developer.android.com/studio/publish/app-signing.html#google-play-app-signing .

Z poniższą odpowiedzią wyjaśnię nieco lepiej kroki, które należy wykonać, aby przesłać swój oryginalny magazyn kluczy i jak utworzyć nowy magazyn kluczy przesyłania, który od tego momentu będzie musiał podpisywać plik APK.

MatPag
źródło

Odpowiedzi:

189

Ten przewodnik jest przeznaczony dla programistów, którzy mają już aplikację w Sklepie Play. Jeśli rozpoczynasz nową aplikacją się proces o wiele łatwiej i można postępować zgodnie z wytycznymi pkt „Nowe aplikacje” z tutaj

Wymagania wstępne, które 99% programistów ma już :

  1. Android Studio

  2. JDK 8 i po instalacji musisz ustawić zmienną środowiskową w przestrzeni użytkownika, aby uprościć polecenia terminala. W Windows x64 musisz dodać to: C:\Program Files\Java\{JDK_VERSION}\bindo Pathzmiennej środowiskowej. (Jeśli nie wiesz, jak to zrobić, przeczytaj mój przewodnik dotyczący dodawania folderu do Pathzmiennej środowiskowej systemu Windows 10 ).

Krok 0 : Otwórz konsolę programisty Google Play, a następnie przejdź do Zarządzanie wersjami -> Podpisywanie aplikacji .

wprowadź opis obrazu tutaj

Zaakceptuj Warunki podpisywania aplikacji.

wprowadź opis obrazu tutaj

Krok 1 : Pobierz narzędzie PEPK, klikając przycisk identyczny z obrazkiem poniżej

wprowadź opis obrazu tutaj

Krok 2 : Otwórz terminal i wpisz:

java -jar PATH_TO_PEPK --keystore = PATH_TO_KEYSTORE --alias = ALIAS_YOU_USE_TO_SIGN_APK --output = PATH_TO_OUTPUT_FILE --encryptionkey = GOOGLE_ENCRYPTION_KEY

Legenda:

  • PATH_TO_PEPK = Ścieżka do pliku pepk.jar pobranego w kroku 1 może być podobna C:\Users\YourName\Downloads\pepk.jardo tej dla użytkowników systemu Windows.
  • PATH_TO_KEYSTORE = Ścieżka do magazynu kluczy, którego używasz do podpisywania pakietu APK. Może to być plik typu * .keystore lub * .jks lub bez rozszerzenia. Coś jak C:\Android\mykeystorelub C:\Android\mykeystore.keystoreitp ...
  • ALIAS_YOU_USE_TO_SIGN_APK = Nazwa aliasu, którego używasz do podpisywania wydanego pakietu APK.
  • PATH_TO_OUTPUT_FILE = Ścieżka do pliku wyjściowego z rozszerzeniem .pem, na przykładC:\Android\private_key.pem
  • GOOGLE_ENCRYPTION_KEY = Ten klucz szyfrowania powinien być zawsze taki sam. Możesz go znaleźć na stronie podpisywania aplikacji, skopiować i wkleić. Powinien być w tej formie:eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb833b656cd48b9de6a

Przykład:

java -jar "C: \ Users \ YourName \ Downloads \ pepk.jar" --keystore = "C: \ Android \ mykeystore" --alias = myalias --output = "C: \ Android \ private_key.pem" - encryptionkey = eb10fe8f7c7c9df715022017b00c6471f8ba8170b13049a11e6c09ffe3056a104a3bbe4ac5a955f4ba4fe93fc8cef27558a3eb9d2a529a2092761fb8b8b9656cd48a

Naciśnij Enter, a będziesz musiał podać w kolejności:

  1. Hasło magazynu kluczy
  2. Hasło aliasu

Jeśli wszystko poszło dobrze, będziesz mieć teraz plik w folderze PATH_TO_OUTPUT_FILE o nazwie private_key.pem.

Krok 3 : Prześlij plik private_key.pem, klikając przycisk identyczny z obrazkiem poniżej

wprowadź opis obrazu tutaj

Krok 4 : Utwórz nowy plik kluczy za pomocą Android Studio.

POTRZEBUJESZ TEGO SKLEPU KLUCZY W PRZYSZŁOŚCI, ABY PODPISOWAĆ KOLEJNE WYDANIA TWOJEJ APLIKACJI, NIE ZAPOMNIJ HASŁA

Otwórz jeden ze swoich projektów Androida (wybierz jeden losowo). Idź do Build -> Generate Signed APK i naciśnij Create new .

wprowadź opis obrazu tutaj

Teraz powinieneś wypełnić wymagane pola.

Ścieżka magazynu kluczy reprezentuje nowy magazyn kluczy, który utworzysz, wybierz folder i nazwę za pomocą ikony z 3 kropkami po prawej stronie, którą wybrałem C:\Android\upload_key.jks(rozszerzenie .jks zostanie dodane automatycznie)

UWAGA: Użyłem uploadjako nowej nazwy aliasu, ale jeśli poprzednio używałeś tego samego magazynu kluczy z różnymi aliasami do podpisywania różnych aplikacji, powinieneś wybrać tę samą nazwę aliasu, którą miałeś wcześniej w oryginalnym magazynie kluczy.

wprowadź opis obrazu tutaj

Po zakończeniu naciśnij OK, a teraz będziesz mieć nowy upload_key.jksmagazyn kluczy. Możesz teraz zamknąć Android Studio.

Krok 5 : Musimy wyodrębnić certyfikat przesyłania z nowo utworzonego upload_key.jksmagazynu kluczy. Otwórz terminal i wpisz:

keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS -file PATH_TO_OUTPUT_FILE

Legenda:

  • UPLOAD_KEYSTORE_PATH = Ścieżka utworzonego magazynu kluczy przesyłania. W tym przypadku był C:\Android\upload_key.jks.
  • UPLOAD_KEYSTORE_ALIAS = Nowy alias powiązany z magazynem kluczy przesyłania. W tym przypadku był upload.
  • PATH_TO_OUTPUT_FILE = Ścieżka do pliku wyjściowego z rozszerzeniem .pem. Coś jak C:\Android\upload_key_public_certificate.pem.

Przykład:

keytool -export -rfc -keystore "C: \ Android \ upload_key.jks" -alias upload -file "C: \ Android \ upload_key_public_certificate.pem"

Naciśnij klawisz Enter, aby podać hasło do magazynu kluczy.

Teraz, jeśli wszystko poszło dobrze, będziesz mieć plik w folderze PATH_TO_OUTPUT_FILE o nazwie upload_key_public_certificate.pem.

Krok 6 : Prześlij upload_key_public_certificate.pemplik, klikając przycisk identyczny z obrazkiem poniżej

wprowadź opis obrazu tutaj

Krok 7 : Kliknij przycisk ZAREJESTRUJ SIĘ na końcu strony Podpisywanie aplikacji.

wprowadź opis obrazu tutaj

Teraz każdy nowy pakiet APK musi być podpisany przy użyciu upload_key.jksmagazynu kluczy i aliasów utworzonych w kroku 4 , zanim zostanie przesłany do konsoli programisty Google Play.

Więcej zasobów:

Pytania i odpowiedzi

P: Kiedy przesyłam plik APK podpisany przy użyciu nowego magazynu kluczy upload_key, Google Play wyświetla błąd, taki jak: Przesłałeś niepodpisany plik APK. Musisz utworzyć podpisany plik APK .

Odp .: Zaznacz, aby podpisać pakiet APK oboma podpisami (V1 i V2) podczas tworzenia wersji APK. Więcej informacji znajdziesz tutaj .

AKTUALIZACJA

Krok 4,5,6 to utworzenie klucza przesyłania, który jest opcjonalny dla istniejących aplikacji

„Klucz przesyłania (opcjonalny w przypadku istniejących aplikacji): nowy klucz, który generujesz podczas rejestracji w programie. Klucz przesyłania służy do podpisywania wszystkich przyszłych plików APK przed przesłaniem ich do Konsoli Play”. https://support.google.com/googleplay/android-developer/answer/7384423

MatPag
źródło
3
Twoja instrukcja jest bardzo pomocna! Powinni umieścić to na oficjalnej stronie lol W nazwach ścieżek do twoich przykładów brakuje cudzysłowów „_”, co spowoduje błąd w konsoli W10
NukeouT
3
Cudzysłowy są potrzebne tylko wtedy, gdy masz co najmniej jedną spację między ścieżkami, ale tak działa każde polecenie konsoli. Musisz więc używać cudzysłowów, jeśli twoja ścieżka to: "C:\My Path\MyName"ale nie, jeśli ścieżka jest C:\MyPath\MyName. Przy okazji dziękuję :)
MatPag
1
@layth Tworzenie nowego magazynu kluczy jest opisane Step 4w przewodniku: D
MatPag
1
Zrobiłem to, ale kiedy dostałem twoje nowe okno dialogowe magazynu kluczy, jego ścieżka magazynu kluczy i pola hasła były puste, więc wskazałem je na stary magazyn kluczy i wprowadziłem jego stare hasło - przy czym obecnie utknąłem na "keytool -export -rfc -keystore UPLOAD_KEYSTORE_PATH -alias UPLOAD_KEYSTORE_ALIAS - file PATH_TO_OUTPUT_FILE ”ciągle narzeka, że ​​nie wie, co oznacza keytool. Próbowałem dodać „C: \ Program Files \ Java \ jdk1.8.0_25 \ bin \ keytool.exe”, ale to nie zadziałało, prawdopodobnie dlatego, że nie wiem, gdzie dokładnie to umieścić ..
NukeouT
9
Wygląda na to, że Google zmieniło procedurę, ponieważ nie mogę już znaleźć narzędzia PEPK.
Andrea Motto,
31

Istnieje znacznie prostsze rozwiązanie, które zajmie chwilę.

  1. W konsoli Google Play wybierz Zarządzanie wersjami -> Podpisywanie aplikacji
  2. Wybierz pierwszą opcję, tę z Generuj zaszyfrowany klucz prywatny za pomocą Android Studio (lub coś w tym rodzaju; nie mogę już wrócić, aby zobaczyć tę stronę)
  3. W Android Studio wygeneruj pakiet aplikacji na Androida (plik .aap) z Build -> Generate Signed Bundle / APK ... , wybierz opcję Android App Bundle i nie zapomnij zaznaczyć Export Encrypted key (niezbędnego do zarejestrowania aplikacji Google Play App podpisywanie) . Jeśli nie masz wygenerowanego magazynu kluczy, wygeneruj jeden plik ad-hoc.
  4. Teraz część „podstępna”. Po wygenerowaniu pliku .aap, Android Studio wyświetli powiadomienie w prawym dolnym rogu, zawierające ścieżkę do lokalizacji, w której zapisano plik .aap. W tym samym powiadomieniu, jeśli go rozwiniesz, znajdziesz kolejny link do ścieżki, w której został zapisany klucz prywatny (nazywany private_key.pepk ). Jeśli przegapisz to powiadomienie, nie martw się, po prostu otwórz okno dziennika zdarzeń , klikając przycisk Dziennik zdarzeń w prawym dolnym rogu, a znajdziesz te same informacje. Otwórz tę lokalizację. Dla mnie był to C: \ Users \ yourUser \ .android

wprowadź opis obrazu tutaj

  1. Wróć do przeglądarki i naciśnij przycisk PODPISYWANIA KLUCZA PRYWATNEGO APLIKACJI i przejdź do lokalizacji klucza prywatnego na komputerze.

Gotowe!

Teraz możesz przesłać swoje wydanie, które wygenerowałeś wcześniej :) Powodzenia!

Marius Tanasoiu
źródło
1
To najlepsza i prostsza odpowiedź
Simon
Zaoszczędziło mi dużo czasu i co ważniejsze spokój ducha
Meenohara
Nie dostaję tej opcji Eksportuj zaszyfrowany klucz (potrzebny do zarejestrowania Twojej aplikacji Podpisywanie aplikacji Google Play).
Jarvis
Naprawdę byłbym wdzięczny za pełniejsze wyjaśnienie punktu 5 - nie widzę tego przycisku, gdzie on jest, być może układ zmienił się w ostatnich aktualizacjach?
androidneil
ok fajnie teraz chcę się tego zaciekawić przy następnej aktualizacji, co robić? na przykład, czy potrzebujemy ponownie klucza .pepk, czy też musimy podpisać wersję 2 przy użyciu tego samego klucza lub nowego klucza prywatnego .pepk proszę o pomoc
Sunil Chaudhary
15

Podczas migracji pliku pakietu aplikacji na Androida (APK) do pakietu aplikacji na Androida (AAB), publikując aplikację w Sklepie Play napotkałem ten problem i został rozwiązany w następujący sposób ...

Podczas budowania .aabpliku zostanie wyświetlony monit o podanie lokalizacji przechowywania ścieżki eksportu klucza, jak poniżej:

wprowadź opis obrazu tutaj
wprowadź opis obrazu tutaj Na drugim obrazie znajduje się ścieżka eksportu zaszyfrowanego klucza Lokalizacja, w której nasz plik .pepk będzie przechowywany w określonym folderze podczas generowania pliku .aab.

Po zalogowaniu się do Konsoli Google Play przy użyciu danych logowania do sklepu Play: wybierz projekt z lewej strony wybierz opcję Podpisywanie aplikacji Zarządzanie wersjami >> Podpisywanie aplikacji wprowadź opis obrazu tutaj

znajdziesz okno Certyfikacji podpisywania aplikacji Google ZAAKCEPTUJ to.

Następnie znajdziesz trzy przyciski opcji wybierz **

Prześlij klucz wyeksportowany z przycisku opcji Android Studio

**, spowoduje to rozwinięcie przycisku PRIVATE KEY PODPISANIE APLIKACJI, jak poniżej

wprowadź opis obrazu tutaj

kliknij na przycisk i wybierz .pepkplik (Zapisaliśmy podczas generowania .aabpliku jak wyżej)

Przeczytaj wszystkie inne opcje i prześlij.

Po pomyślnym zakończeniu możesz wrócić do wersji aplikacji, przeglądać plik .aab i dokończyć RollOut ...

@Ambilpura

Ambilpura Sunil Kumar
źródło
ok fajnie teraz chcę się tego zaciekawić przy następnej aktualizacji, co robić? na przykład, czy potrzebujemy ponownie klucza .pepk, czy też musimy podpisać wersję 2 przy użyciu tego samego klucza lub nowego klucza prywatnego .pepk proszę o pomoc
Sunil Chaudhary
Zgodnie z moim zrozumieniem, nie ma potrzeby tworzenia na następny raz, możesz użyć starego klucza .pepk ....
Ambilpura Sunil Kumar
Jak używać pliku .pepk do aktualizacji? Pomyślnie użyłem podpisywania aplikacji Google podczas przesyłania mojej aplikacji, ale teraz próbuję przesłać aktualizację i nie wiem jak @AmbilpuraSunilKumar
nt95
To samo tutaj. Po prostu przesyłam abb do Play Store i całkowicie ignoruję plik .pepk. Byłoby miło wiedzieć, do czego dokładnie się przydaje i co robić podczas aktualizacji aplikacji.
Julian Eggers
4

Musiałem wykonać następujące czynności:

  1. Utwórz aplikację w konsoli Google Play wprowadź opis obrazu tutaj

2.Przejdź do wersji aplikacji -> Zarządzaj produkcją -> Utwórz wersję

3. Kliknij Kontynuuj w Google Play App Signing wprowadź opis obrazu tutaj

4. Utwórz certyfikat przesyłania, uruchamiając polecenie „keytool -genkey -v -keystore c: \ path \ to \ cert.keystore -alias uploadKey -keyalg RSA -keysize 2048 -validity 10000”

5. Podpisz swój apk wygenerowanym certyfikatem (c: \ ścieżka \ do \ cert.keystore)

6. Prześlij podpisany apk w wersjach aplikacji -> Zarządzaj produkcją -> Edytuj wersję

7.Poprzez przesłanie apk certyfikat wygenerowany w kroku 4 został dodany do certyfikatów podpisywania aplikacji i stał się certyfikatem podpisywania dla wszystkich przyszłych kompilacji.

to fałszywe
źródło
1
Zrobiłem dokładnie to, ale logowanie do Google z mojej aplikacji nie działa, jeśli zainstaluję aplikację przez Sklep Google Play. * Ale * jeśli pobiorę apk ze strony zarządzania wydaniami i zainstaluję go ręcznie na moim emulatorze / urządzeniu, to działa. Masz jakiś pomysł, czego mi brakuje?
Raghudevan Shankar
Szukałem wszędzie przez około 3 godziny iw końcu mnie uratowałeś!
Oliver Dixon
3

Gdy używasz Fabric do publicznych wydań beta (podpisanych za pomocą konfiguracji prod), NIE UŻYWAJ podpisywania aplikacji Google Play. Będziesz musiał po zbudowaniu dwóch podpisanych apek!

Podczas dystrybucji do większej liczby sklepów Play (Samsung, Amazon, Xiaomi, ...) będziesz musiał ponownie zbudować dwa podpisane apki.

Dlatego zachowaj ostrożność przy podpisywaniu aplikacji Google Play.

Nie można go cofnąć: / a Google Play nie zaakceptował apek podpisanych kluczem produkcyjnym. Po włączeniu podpisywania aplikacji Google Play akceptowany jest tylko klucz przesyłania ...

To naprawdę komplikuje dystrybucję CI ...

Kolejne problemy z aktualizacją: https://issuetracker.google.com/issues/69285256

mtrakal
źródło
1
DON'T USEKomentarze pisane grubą czcionką są niebezpieczne. Czy możesz szczegółowo wyjaśnić problem i zalecane rozwiązanie? Czy w ogóle nie ma rozwiązania? Czy tak trudno jest dwukrotnie podpisać pakiet APK dla Fabric?
Gokhan Arik
1
Nie jest trudno dwukrotnie podpisać APK, ale jak opisuję, musisz zbudować dwa (lub więcej) APK, które nie są identyczne (więc testujesz na Fabric Beta inny plik niż ten, który zostanie opublikowany w Sklepie Play). Utracony punkt testowania wersji produkcyjnej na beta testerach ... testujesz kolejny plik :). To tylko ostrzeżenie dla ludzi, którzy mają skomplikowane CI / CD, że muszą to zmienić ...
mtrakal
2
Pamiętaj, że Google Play akceptuje teraz pliki APK podpisane kluczem produkcyjnym nawet po zarejestrowaniu się w Podpisywanie aplikacji.
Pierre,
2

Wykonaj następujące czynności:

"CREATE APPLICATION" having the same name which you want to upload before.
Click create.
After creation of the app now click on the "App releases"
Click on the "MANAGE PRODUCTION"
Click on the "CREATE RELEASE"
Here you see "Google Play App Signing" dialog.
Just click on the "OPT-OUT" button.
It will ask you to confirm it. Just click on the "confirm" button
Sterling Diaz
źródło
Czy po tym czasie będę mógł testować zakup aplikacji i korzystać z usług tak jak wcześniej? Czy masz jakieś doświadczenie w tej sprawie? Bo nawet ja nie lubię robić ciężkich kroków.
Siddharth
1
Niezbyt odpowiednia odpowiedź na pytanie „Jak włączyć podpisywanie aplikacji Google Play” ...
Ben Madsen,
2
A co sugerujesz jako właściwy sposób, aby to zrobić?
Sterling Diaz