Dlaczego warto korzystać z podpisywania aplikacji przez Google Play? Oprócz zabezpieczenia kluczy przed trwałą utratą lub naruszeniem bezpieczeństwa rejestracja w podpisywaniu aplikacji przez Google Play odblokowuje ulepszenia w Google Play dla pakietów Android App Bundle (.aab). Gdy pozwolisz Google podpisywać zoptymalizowane pliki APK wygenerowane z pakietów aplikacji na potrzeby dystrybucji, uzyskasz dostęp do przydatnych usług, takich jak automatyczna ochrona i automatyczne tłumaczenie ciągów tekstowych za pomocą modeli Gemini. Gry uzyskują dostęp do dodatkowych usług automatycznych, takich jak panel Sidekick w Grach Play, granie podczas pobierania i bezpłatne wersje próbne płatnych tytułów.
Aby skonfigurować podpisywanie aplikacji przez Google Play, musisz być właścicielem konta lub mieć uprawnienia do tworzenia wersji produkcyjnej, wykluczania urządzeń i używania podpisywania aplikacji przez Google Play oraz zaakceptować Warunki korzystania z usługi.
Podstawowe pojęcia
Gdy korzystasz z podpisywania aplikacji przez Google Play, masz do czynienia z 2 różnymi kluczami. Zrozumienie różnic między nimi i ich formatów technicznych jest kluczowe, aby uniknąć problemów z uwierzytelnianiem w interfejsach API innych firm.
| Typ klucza | Kto go posiada? | Szczegóły techniczne i cel |
|
Klucz przesyłania |
Ty (nie ujawniaj go!) |
|
| Klucz podpisywania aplikacji |
Google Play |
|
Uwaga: aby zapewnić maksymalne bezpieczeństwo, klucz przesyłania i klucz podpisywania aplikacji powinny się od siebie różnić.
Jak Google podpisuje Twoją aplikację: gdy Google generuje i podpisuje Twoje pliki APK kluczem podpisywania aplikacji, używa narzędzia apksigner, aby dodać 2 znaczniki do pliku manifestu aplikacji (com.android.stamp.source i com.android.stamp.type). Te sygnatury zapewniają bezpieczne śledzenie plików APK do pierwotnego sygnatariusza.
Konfigurowanie podpisywania aplikacji przez Google Play
Proces konfiguracji zależy od tego, czy publikujesz nową aplikację, czy przenosisz istniejącą.
W przypadku nowych aplikacji
- Utwórz klucz przesyłania: wygeneruj magazyn kluczy do podpisywania pakietu aplikacji wersji. Możesz go wygenerować w Android Studio lub użyć narzędzia Java keytool w wierszu poleceń.
- Prześlij pakiet aplikacji: otwórz Konsolę Play i przygotuj nową wersję. Gdy przesyłasz pakiet aplikacji, podpisywanie aplikacji przez Google Play automatycznie generuje silny klucz RSA o długości 4096 bitów, aby zarządzać aplikacją i ją chronić. Ponad 90% nowych aplikacji korzysta z tego zalecanego ustawienia domyślnego, a do jego skonfigurowania nie są wymagane żadne dodatkowe działania.
- Zmień klucz podpisywania aplikacji (opcjonalnie): zaawansowani programiści, którzy chcą zarządzać własnym kluczem, mogą zmienić to ustawienie domyślne. Możesz to zrobić, klikając Zmień klucz podpisywania w sekcji Integralność aplikacji dla danej wersji lub przechodząc do sekcji Ochrona w Google Play > Dystrybucja w Sklepie Play > Przejdź do podpisywania aplikacji przez Google Play. Następnie możesz:
- użyć tego samego klucza, który został użyty w innej aplikacji na tym koncie dewelopera;
- przesłać kopię klucza podpisywania aplikacji: najpierw pobierz publiczny klucz szyfrowania Google z Konsoli Play. Następnie użyj narzędzia Play Encrypt Private Key (PEPK) (możesz pobrać skompilowane narzędzie lub jego kod źródłowy bezpośrednio z Konsoli, aby je zweryfikować lub samodzielnie skompilować) do bezpiecznego zaszyfrowania i przesłania istniejącego klucza RSA (o długości co najmniej 2048 bitów) z dowolnego repozytorium.
W przypadku opublikowanych aplikacji
Jeśli obecnie zarządzasz własnymi kluczami i przesyłasz pliki APK, możesz przejść na podpisywanie aplikacji przez Google Play, aby korzystać z pakietów aplikacji i ulepszeń w Google Play.
- W Konsoli Play kliknij Ochrona w Google Play > Dystrybucja w Google Play > Przejdź do podpisywania aplikacji w Google Play.
- Zaakceptuj warunki usługi, jeśli nie zostały jeszcze przez Ciebie zaakceptowane.
- Prześlij kopię oryginalnego klucza: pobierz narzędzie PEPK i postępuj zgodnie z ujednoliconymi instrukcjami, aby zaszyfrować i przesłać obecny klucz podpisywania aplikacji z dowolnego repozytorium.
Rejestracja u dostawców interfejsów API
Jeśli aplikacja korzysta z interfejsów API (np. Map Google, OAuth lub Logowanie przez Facebooka), te usługi uwierzytelniają aplikację za pomocą odcisku cyfrowego klucza podpisywania aplikacji.
Ponieważ Google podpisuje końcowy plik APK, musisz zarejestrować u dostawców interfejsów API odcisk cyfrowy klucza podpisywania aplikacji przechowywanego przez Google, a nie tylko lokalny klucz przesyłania.
- Kliknij Ochrona w Google Play > Dystrybucja w Sklepie Play > Przejdź do podpisywania aplikacji przez Google Play.
- Przewiń do sekcji Klucz podpisywania aplikacji.
- Skopiuj wymagane odciski cyfrowe (SHA-1 lub SHA-256).
- Wklej te odciski cyfrowe w konsoli dostawcy interfejsu API (np. w konsoli Google Cloud).
Wskazówka: jeśli używasz linków aplikacji na Androida, zaktualizuj plik assetlinks.json o te odciski cyfrowe.
Zarządzanie kluczami
Uaktualnianie klucza podpisywania aplikacji
Jeśli Twój klucz podpisywania aplikacji zostanie naruszony lub potrzebujesz klucza o lepszym szyfrowaniu, możesz raz w roku poprosić o uaktualnienie klucza w przypadku wszystkich instalacji na Androidzie N (poziom interfejsu API 24) lub nowszym.
Jak egzekwowanie działa w różnych wersjach Androida:
- Android T (API na poziomie 33) i nowszy: platforma Androida ściśle wymusza używanie uaktualnionego klucza.
- Od Androida N (poziom interfejsu API 24) do Androida S (poziom interfejsu API 32): sama platforma Androida nie wymusza używania uaktualnionego klucza i nadal rozpoznaje starszy klucz podpisywania. Jednak Google Play Protect zapewnia dodatkową weryfikację, sprawdzając, czy aktualizacje aplikacji są podpisane uaktualnionym kluczem (chyba że użytkownik to wyłączy).
Ważna uwaga:
- Udostępnione dane: ponieważ platforma nie wymusza używania uaktualnionego klucza na urządzeniach z Androidem S (poziom interfejsu API 32) lub starszym, jeśli używasz tego samego klucza w wielu aplikacjach do udostępniania danych, te starsze wersje Androida będą rozpoznawać tylko starszy klucz w przypadku funkcji takich jak udostępnianie uprawnień niestandardowych.
Jak uaktualnić:
- Kliknij Ochrona w Google Play > Dystrybucja w Sklepie Play > Przejdź do podpisywania aplikacji przez Google Play.
- W sekcji Klucz podpisywania aplikacji kliknij Uaktualnij klucz.
- Wybierz ścieżkę uaktualnienia:
- Pozwól Google Play na wygenerowanie nowego klucza podpisywania aplikacji (zalecane)
- Użycie klucza podpisywania aplikacji, który został już użyty w innej aplikacji na tym koncie dewelopera.
- Prześlij kopię klucza podpisywania aplikacji (zgodnie z instrukcjami).
- Jeśli podajesz własny klucz, wygeneruj i prześlij „potwierdzenie rotacji” za pomocą narzędzia apksigner (dołączonego do pakietu Android SDK Build Tools). (Szczegółowe informacje o używanych tu flagach znajdziesz w dokumentacji wiersza poleceń narzędzia apksigner):
- apksigner
rotate --out /path/to/new/file --old-signer --ks old-signer-jks --set-rollback true --new-signer --ks new-signer-jks --set-rollback true
- apksigner
- Kliknij Zapisz i zarejestruj nowe odciski cyfrowe klucza u dostawców interfejsów API.
Prośba o zresetowanie klucza przesyłania
Jeśli utracisz klucz przesyłania lub będziesz podejrzewać, że dostał się on w niepowołane ręce, nie stracisz dostępu do aplikacji.
- Utwórz nowy klucz przesyłania w Android Studio.
- Wyeksportuj certyfikat do formatu PEM:
keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
(Więcej informacji o narzędziu keytool i ścieżkach do magazynu kluczy znajdziesz w przewodniku po podpisywaniu aplikacji w Android Studio). - Poproś właściciela konta o zresetowanie klucza przesyłania za pomocą formularza pomocy w Konsoli Play.
- Gdy pojawi się odpowiedni komunikat, prześlij plik
upload_certificate.pem.
Uwaga: zresetowanie klucza przesyłania nie ma wpływu na klucz podpisywania aplikacji ani na użytkowników.
Sprawdzone metody i alternatywna dystrybucja
- Bezpieczeństwo: chroń dostęp do Konsoli Play, wymuszając weryfikację dwuetapową u wszystkich użytkowników.
- Ulepszenia w Google Play: rejestracja w usłudze podpisywania aplikacji przez Google Play umożliwia korzystanie z ulepszeń w Google Play w przypadku pakietów aplikacji. Aby otrzymywać aktualizacje, najpierw wprowadź niezbędne zmiany podczas tworzenia nowej wersji, a potem prześlij nowy pakiet aplikacji.
- Dystrybucja poza Google Play: jeśli dystrybuujesz aplikację w innych sklepach z aplikacjami i chcesz wszędzie używać tego samego klucza podpisywania, masz 2 możliwości. Możesz pozwolić Google wygenerować klucz podpisywania aplikacji i pobrać podpisany, uniwersalny plik APK z najnowszych wersji i pakietów, aby rozpowszechniać aplikację w innych miejscach (kliknij Testuj i publikuj > Najnowsze wersje i pakiety, wybierz pakiet aplikacji i kliknij kartę Pobieranie). Możesz też wygenerować klucz podpisywania aplikacji, którego chcesz używać we wszystkich sklepach z aplikacjami, a potem przenieść jego kopię do Google, gdy skonfigurujesz podpisywanie aplikacji przez Google Play.
- Testowanie: użyj wewnętrznego udostępniania aplikacji, aby sprawdzić, co dokładnie Google Play dostarczy użytkownikom, lub pobierz pliki APK dla konkretnych urządzeń z Eksploratora pakietów aplikacji i zainstaluj je lokalnie za pomocą polecenia adb install-multiple *
.apk. - Schemat podpisu plików APK w wersji 4: podpisywanie aplikacji przez Google Play automatycznie używa podpisu w wersji 4 w przypadku kwalifikujących się aplikacji, aby obsługiwać zoptymalizowaną dystrybucję na urządzeniach z Androidem 11 lub nowszym. Nie musisz nic robić. Więcej informacji o zaletach technicznych znajdziesz w dokumentacji schematu podpisu pakietów APK w wersji 4.
- Projekty Google Cloud hostowane samodzielnie: jeśli masz bardzo specyficzne wymagania dotyczące bezpieczeństwa (np. używasz kluczy OEM), możesz użyć interfejsu Play Developer API, aby zarejestrować się w usłudze podpisywania aplikacji przez Google Play za pomocą projektu Google Cloud hostowanego samodzielnie. Uwaga: jest to niestandardowa konfiguracja, której nie zalecamy. Korzystanie z projektu hostowanego samodzielnie oznacza, że ponosisz pełną odpowiedzialność za operacje podpisywania aplikacji i uniemożliwiasz Google Play wykonywanie podstawowych funkcji, takich jak odtwarzanie awaryjne.