Podpisz aplikację

Android wymaga, aby wszystkie pliki APK zostały zainstalowane na urządzeniu lub zaktualizowane za pomocą certyfikatu cyfrowego. Jeśli publikujesz pakiet za pomocą pakietów aplikacji na Androida, przed przesłaniem go do Konsoli Play musisz podpisać go kluczem przesyłania – resztą zajmie się podpisywanie aplikacji przez Google Play. Aplikacje rozpowszechniane za pomocą plików APK w Sklepie Play lub innych sklepach musisz ręcznie podpisać pliki APK, które chcesz przesłać.

Na tej stronie poznasz ważne kwestie związane z podpisywaniem i zabezpieczeniami aplikacji, podpisywaniem aplikacji do udostępnienia w Google Play przy użyciu Android Studio oraz konfigurowaniu podpisywania aplikacji przez Google Play.

Poniżej znajdziesz ogólny przegląd czynności, które musisz wykonać, aby podpisać i opublikować nową aplikację w Google Play:

  1. Generowanie klucza przesyłania i magazynu kluczy
  2. Podpisywanie aplikacji za pomocą klucza przesyłania
  3. Konfigurowanie podpisuwania aplikacji przez Google Play
  4. Przesyłanie aplikacji do Google Play
  5. Przygotowywanie i publikowanie wersji aplikacji

Jeśli Twoja aplikacja jest już opublikowana w Sklepie Google Play z dotychczasowym kluczem podpisywania aplikacji lub chcesz wybrać ten klucz dla nowej aplikacji zamiast generować go przez Google, wykonaj te czynności:

  1. Podpisz aplikację kluczem podpisywania aplikacji.
  2. Prześlij klucz podpisywania aplikacji do podpisywania aplikacji przez Google Play.
  3. (Zalecane) Wygeneruj i zarejestruj certyfikat przesyłania, aby móc aktualizować aplikację w przyszłości.
  4. Przesyłanie aplikacji do Google Play
  5. Przygotowywanie i publikowanie wersji aplikacji

Na tej stronie znajdziesz też informacje o tym, jak zarządzać własnymi kluczami podczas przesyłania aplikacji do innych sklepów z aplikacjami. Jeśli nie korzystasz z Android Studio lub wolisz podpisać aplikację za pomocą wiersza poleceń, dowiedz się, jak używać apksigner.

Podpisywanie aplikacji przez Google Play

Gdy używasz podpisywania aplikacji przez Google Play, Google zarządza kluczem podpisywania Twojej aplikacji i zabezpiecza go oraz wykorzystuje do podpisywania plików APK na potrzeby dystrybucji. Pakiety aplikacji opóźniają tworzenie i podpisywanie plików APK do Sklepu Google Play, dlatego przed przesłaniem pakietu musisz skonfigurować podpisywanie aplikacji przez Google Play. Dzięki temu możesz:

  • Używaj pakietu Android App Bundle i obsługuj zaawansowane tryby przesyłania w Google Play. Dzięki pakietowi Android App Bundle Twoja aplikacja jest znacznie mniejsza i prostsza w obsłudze oraz umożliwia korzystanie z modułów funkcji i udostępnianie aplikacji błyskawicznych.
  • Zwiększ bezpieczeństwo swojego klucza podpisywania i umożliw podpisywanie pakietu aplikacji przesyłanego do Google Play osobnego klucza przesyłania.
  • Uaktualnianie klucza umożliwia zmianę klucza podpisywania aplikacji, jeśli zostanie on przejęty lub konieczna będzie przejście na klucz o silniejszym kryptograficznie

Podpisywanie aplikacji przez Google Play korzysta z 2 kluczy: klucza podpisywania aplikacji i klucza przesyłania. Szczegółowy opis znajdziesz w sekcji Klucze i magazyny kluczy. Zachowujesz klucz przesyłania i używasz go do podpisywania aplikacji, którą chcesz przesłać do Sklepu Google Play. Google weryfikuje Twoją tożsamość za pomocą certyfikatu przesyłania i podpisuje pliki APK Twoim kluczem podpisywania aplikacji w celu dystrybucji, jak pokazano na ilustracji 1. Używając osobnego klucza przesyłania, możesz poprosić o jego zresetowanie w przypadku utraty lub przejęcia klucza.

Dla porównania – w przypadku aplikacji, które nie korzystają z podpisywania aplikacji przez Google Play, jeśli utracisz klucz podpisywania aplikacji, utracisz możliwość jej aktualizowania.

Rysunek 1. Podpisywanie aplikacji za pomocą podpisywania aplikacji przez Google Play

Twoje klucze są przechowywane w tej samej infrastrukturze, której Google używa do przechowywania własnych kluczy, gdzie są chronione przez system zarządzania kluczami Google. Więcej informacji o infrastrukturze technicznej Google znajdziesz w raportach na temat bezpieczeństwa danych w Google Cloud.

Gdy korzystasz z podpisywania aplikacji przez Google Play, a jeśli utracisz klucz przesyłania lub zostanie on przejęty, możesz poprosić o zresetowanie klucza przesyłania w Konsoli Play. Ponieważ Twój klucz podpisywania aplikacji jest zabezpieczony przez Google, możesz nadal przesyłać nowe wersje aplikacji jako aktualizacje pierwotnej aplikacji, nawet jeśli zmienisz klucze przesyłania. Więcej informacji znajdziesz w artykule o resetowaniu utraconego lub przejętego prywatnego klucza przesyłania.

W następnej sekcji opisujemy kilka ważnych terminów i koncepcji związanych z podpisywaniem i zabezpieczeniami aplikacji. Jeśli wolisz przejść dalej i dowiedzieć się, jak przygotować aplikację do przesłania do Sklepu Google Play, przeczytaj artykuł Podpisywanie aplikacji do opublikowania.

Magazyny kluczy, klucze i certyfikaty

Magazyny kluczy Java (.jks lub .keystore) to pliki binarne, które służą jako repozytoria certyfikatów i kluczy prywatnych.

Certyfikat klucza publicznego (pliki .der lub .pem), nazywany również certyfikatem cyfrowym lub certyfikatem tożsamości, zawiera klucz publiczny pary kluczy (publicznego/prywatnego), a także inne metadane identyfikujące właściciela (np. imię i nazwisko oraz lokalizację), który posiada odpowiedni klucz prywatny.

Oto różne typy kluczy, które musisz znać:

  • Klucz podpisywania aplikacji: klucz używany do podpisywania plików APK zainstalowanych na urządzeniu użytkownika. W ramach modelu bezpiecznych aktualizacji Androida klucz podpisywania nigdy nie zmienia się przez cały okres użytkowania aplikacji. Klucz podpisywania aplikacji jest prywatny i należy go przechowywać w tajemnicy. Możesz jednak udostępnić certyfikat wygenerowany przy użyciu Twojego klucza podpisywania aplikacji.
  • Klucz przesyłania: klucz używany do podpisywania pakietu aplikacji lub pliku APK przed przesłaniem go do podpisywania aplikacji przez Google Play. Musisz go nie ujawniać. Możesz jednak udostępnić certyfikat wygenerowany za pomocą Twojego klucza przesyłania. Klucz przesyłania możesz wygenerować na jeden z tych sposobów:

    • Jeśli zdecydujesz się na generowanie przez Google klucza podpisywania aplikacji, to klucz, którego używasz do podpisywania aplikacji pod kątem wydania, będzie używany jako klucz przesyłania.
    • Jeśli podczas włączania usługi w nowej lub dotychczasowej aplikacji przekażesz Google klucz podpisywania aplikacji, dla zwiększenia bezpieczeństwa będziesz mieć możliwość wygenerowania nowego klucza przesyłania w trakcie lub po włączeniu tej opcji.
    • Jeśli nie wygenerujesz nowego klucza przesyłania, do podpisywania każdej wersji nadal będziesz używać klucza podpisywania aplikacji jako klucza przesyłania.

    Wskazówka: aby zabezpieczyć klucze, upewnij się, że klucz podpisywania aplikacji i klucz przesyłania są różne.

Współpraca z dostawcami interfejsów API

Certyfikat klucza podpisywania aplikacji i klucza przesyłania możesz pobrać na stronie Wersja > Konfiguracja > Podpisywanie aplikacji w Konsoli Play. Służy on do rejestrowania kluczy publicznych u dostawców interfejsów API. Powinien być udostępniany, ponieważ nie zawiera Twojego klucza prywatnego.

Odcisk cyfrowy certyfikatu to krótki, unikalny obraz certyfikatu, często wymagany przez dostawców interfejsów API razem z nazwą pakietu w celu zarejestrowania aplikacji, która ma korzystać z ich usługi. Odciski cyfrowe MD5, SHA-1 i SHA-256 certyfikatów przesyłania i podpisywania aplikacji znajdziesz na stronie podpisywania aplikacji w Konsoli Play. Inne odciski możesz wygenerować, pobierając pierwotny certyfikat (.der) z tej samej strony.

Podpisywanie kompilacji do debugowania

Podczas uruchamiania lub debugowania projektu z IDE Android Studio automatycznie podpisuje aplikację za pomocą certyfikatu debugowania wygenerowanego przez narzędzia Android SDK. Przy pierwszym uruchomieniu lub debugowaniu projektu w Android Studio IDE automatycznie tworzy magazyn kluczy i certyfikat debugowania w $HOME/.android/debug.keystore oraz ustawia hasła do magazynu kluczy i kluczy.

Certyfikat debugowania jest tworzony przez narzędzia do kompilacji i nie jest bezpieczny z założenia, dlatego większość sklepów z aplikacjami (w tym Sklep Google Play) nie akceptuje do publikacji aplikacji podpisanych certyfikatem debugowania.

Android Studio automatycznie przechowuje dane debugowania w ramach konfiguracji podpisywania, aby nie trzeba było ich wpisywać za każdym razem. Konfiguracja podpisywania to obiekt zawierający wszystkie informacje niezbędne do podpisania aplikacji, w tym lokalizację magazynu kluczy, hasło do magazynu kluczy, nazwę klucza i hasło klucza.

Więcej informacji o tworzeniu i uruchamianiu aplikacji do debugowania znajdziesz w artykule o tworzeniu i uruchamianiu aplikacji.

Wygaśnięcie certyfikatu debugowania

Certyfikat podpisany samodzielnie do podpisania aplikacji na potrzeby debugowania ma datę ważności 30 lat od daty jej utworzenia. Po wygaśnięciu certyfikatu pojawi się błąd kompilacji.

Aby rozwiązać ten problem, po prostu usuń plik debug.keystore zapisany w jednej z tych lokalizacji:

  • ~/.android/ w systemach OS X i Linux
  • C:\Documents and Settings\user\.android\ w systemie Windows XP
  • C:\Users\user\.android\ w systemach Windows Vista i Windows 7, 8 i Windows 10

Gdy następnym razem skompilujesz i uruchomisz wersję do debugowania, Android Studio ponownie wygeneruje nowy magazyn kluczy i klucz debugowania.

Podpisywanie aplikacji do udostępnienia w Google Play

Gdy aplikacja będzie gotowa do opublikowania, musisz ją podpisać i przesłać do sklepu z aplikacjami, np. do Google Play. Gdy po raz pierwszy publikujesz aplikację w Google Play, musisz też skonfigurować podpisywanie aplikacji przez Google Play. Podpisywanie aplikacji przez Google Play jest opcjonalne w przypadku aplikacji utworzonych przed sierpniem 2021 roku. Z tej sekcji dowiesz się, jak prawidłowo podpisać aplikację do opublikowania i skonfigurować podpisywanie aplikacji przez Google Play.

Generowanie klucza przesyłania i magazynu kluczy

Jeśli nie masz jeszcze klucza przesyłania, który jest przydatny podczas konfigurowania podpisywania aplikacji przez Google Play, możesz go wygenerować za pomocą Android Studio w ten sposób:

  1. Na pasku menu kliknij Build > Generate Signed Bundle/APK (Utwórz > Wygeneruj podpisany pakiet / plik APK).
  2. W oknie Wygeneruj podpisany pakiet lub plik APK wybierz Android App Bundle lub APK i kliknij Dalej.
  3. Pod polem Ścieżka magazynu kluczy kliknij Utwórz nową.
  4. W oknie New Key Store (Nowy magazyn kluczy) podaj te informacje o magazynie kluczy i kluczu, tak jak na ilustracji 2.

    Rysunek 2. Utwórz nowy klucz przesyłania i magazyn kluczy w Android Studio.

  5. Magazyn kluczy

    • Ścieżka magazynu kluczy:wybierz lokalizację, w której chcesz utworzyć magazyn kluczy. Dodatkowo na końcu ścieżki lokalizacji dodaj nazwę pliku z rozszerzeniem .jks.
    • Hasło: utwórz i potwierdź bezpieczne hasło do magazynu kluczy.
  6. Klucz

    • Alias:wpisz nazwę identyfikującą klucz.
    • Hasło: utwórz i potwierdź bezpieczne hasło do klucza. Powinno ono być takie samo jak Twoje hasło do magazynu kluczy. (więcej informacji znajdziesz w artykule o znanym problemie).
    • Ważność (lata): ustaw czas w latach, przez jaki klucz będzie prawidłowy. Twój klucz powinien być ważny przez co najmniej 25 lat, aby można było podpisywać aktualizacje aplikacji tym samym kluczem przez cały okres jej obowiązywania.
    • Certificate (Certyfikat): wpisz informacje o sobie na potrzeby certyfikatu. Te informacje nie są wyświetlane w Twojej aplikacji, ale są uwzględniane w certyfikacie jako część pakietu APK.
  7. Po wypełnieniu formularza kliknij OK.

  8. Jeśli chcesz utworzyć i podpisać aplikację przy użyciu klucza przesyłania, przejdź do sekcji dotyczącej podpisywania aplikacji za pomocą klucza przesyłania. Jeśli chcesz wygenerować tylko klucz i magazyn kluczy, kliknij Anuluj.

Podpisywanie aplikacji kluczem

Jeśli masz już klucz przesyłania, użyj go do podpisania aplikacji. Jeśli zamiast tego Twoja aplikacja została już podpisana i opublikowana w Sklepie Google Play przy użyciu dotychczasowego klucza podpisywania aplikacji, użyj go do podpisania aplikacji. Później możesz wygenerować i zarejestrować osobny klucz przesyłania w Google Play, aby podpisywać i przesyłać kolejne aktualizacje aplikacji.

Aby podpisać aplikację za pomocą Android Studio:

  1. Jeśli nie masz obecnie otwartego okna Wygeneruj podpisany pakiet lub plik APK, kliknij Utwórz > Wygeneruj podpisany pakiet/APK.
  2. W oknie Wygeneruj podpisany pakiet lub plik APK wybierz Pakiet aplikacji na Androida lub Plik APK i kliknij Dalej.
  3. Wybierz moduł z menu.
  4. Określ ścieżkę do magazynu kluczy, alias klucza i wpisz hasła do obu tych usług. Jeśli nie masz jeszcze przygotowanego magazynu kluczy i klucza przesyłania, najpierw Wygeneruj klucz przesyłania oraz magazyn kluczy, a potem wróć, aby wykonać ten krok.

    Rysunek 3. Podpisz aplikację przy użyciu klucza przesyłania.

  5. Kliknij Dalej.

  6. W następnym oknie (jak widać na ilustracji 4) wybierz folder docelowy podpisanej aplikacji, wybierz typ kompilacji i w razie potrzeby wybierz rodzaje usług.

  7. Jeśli tworzysz i podpisujesz pakiet APK, musisz wybrać wersje podpisu, które ma obsługiwać Twoja aplikacja. Aby dowiedzieć się więcej, poczytaj o schematach podpisywania aplikacji.

  8. Kliknij Utwórz.

Rysunek 5. Kliknij link w wyskakującym okienku, aby przeanalizować lub znaleźć swój pakiet aplikacji.

Gdy Android Studio zakończy tworzenie podpisanej aplikacji, możesz ją zlokalizować lub przeanalizować, klikając odpowiednią opcję w wyskakującym okienku, tak jak pokazano na rysunku 5.

Teraz możesz zgłosić swoją aplikację do podpisywania aplikacji przez Google Play i przesłać ją do opublikowania. Jeśli nie masz doświadczenia w publikowaniu aplikacji, przeczytaj artykuł Omówienie wprowadzania na rynek. W przeciwnym razie przejdź do strony z informacjami, jak przesłać aplikację do Konsoli Play.

Korzystanie z podpisywania aplikacji przez Google Play

Jak pisaliśmy wcześniej na tej stronie, skonfigurowanie podpisywania aplikacji przez Google Play jest wymagane do podpisania aplikacji na potrzeby dystrybucji w Google Play (z wyjątkiem aplikacji utworzonych przed sierpniem 2021 r., które mogą nadal rozpowszechniać samodzielnie podpisane pliki APK). Czynności, które musisz wykonać, zależą od tego, czy Twoja aplikacja nie została jeszcze opublikowana w Google Play czy też jest już podpisana i opublikowana przed sierpniem 2021 r. przy użyciu dotychczasowego klucza podpisywania aplikacji.

Konfigurowanie nowej aplikacji

Aby skonfigurować podpisywanie aplikacji, która nie została jeszcze opublikowana w Google Play, wykonaj te czynności:

  1. Wygeneruj klucz przesyłania i podpisz aplikację tym kluczem przesyłania, chyba że masz to już za sobą.
  2. Zaloguj się w Konsoli Play.
  3. Postępuj zgodnie z instrukcjami, by przygotować i wdrożyć wersję, a potem utworzyć nową.
  4. Po wybraniu ścieżki wersji w sekcji Podpisywanie aplikacji skonfiguruj podpisywanie aplikacji w ten sposób:
    • Jeśli chcesz, aby usługa Google Play wygenerowała dla Ciebie klucz podpisywania aplikacji i używał go do podpisania aplikacji, nie musisz nic robić. Klucz, którego używasz do podpisywania pierwszej wersji, staje się Twoim kluczem przesyłania i należy go używać do podpisywania kolejnych wersji.
    • Aby użyć tego samego klucza co w przypadku innej aplikacji na koncie dewelopera, wybierz Zmień klucz podpisywania aplikacji > Użyj tego samego klucza co w przypadku innej aplikacji na tym koncie, wybierz aplikację i kliknij Dalej.
    • Aby udostępnić Google własny klucz podpisywania aplikacji, wybierz Zmień klucz podpisywania aplikacji i wybierz jedną z opcji Eksportuj i prześlij, która pozwala bezpiecznie przesłać klucz prywatny i jego certyfikat publiczny.

W sekcji Pakiety aplikacji kliknij Przeglądaj pliki, aby znaleźć i przesłać aplikację podpisaną przy użyciu Twojego klucza przesyłania. Więcej informacji o publikowaniu aplikacji znajdziesz w artykule Przygotowywanie i publikowanie wersji. Gdy opublikujesz aplikację po skonfigurowaniu podpisywania aplikacji przez Google Play, Google Play wygeneruje (chyba że prześlesz istniejący klucz) i będzie zarządzać kluczem podpisywania aplikacji. Wystarczy, że podpiszesz kolejne aktualizacje aplikacji za pomocą klucza przesyłania, zanim prześlesz ją do Google Play.

Jeśli musisz utworzyć nowy klucz przesyłania dla aplikacji, przejdź do sekcji dotyczącej resetowania utraconego lub przejętego prywatnego klucza przesyłania.

Włączanie istniejącej aplikacji

Jeśli aktualizujesz aplikację, która została już opublikowana w Google Play przy użyciu istniejącego klucza podpisywania aplikacji, możesz włączyć podpisywanie aplikacji przez Google Play w ten sposób:

  1. Zaloguj się w Konsoli Play i przejdź do aplikacji.
  2. W menu po lewej stronie kliknij Wersja > Konfiguracja > Podpisywanie aplikacji.
  3. W razie potrzeby przeczytaj Warunki usługi i kliknij Zgadzam się.
  4. Wybierz jedną z opcji, która najlepiej opisuje klucz podpisywania, który chcesz przesłać do Google Play, i postępuj zgodnie z wyświetlonymi instrukcjami. Jeśli na przykład jako klucza podpisywania używasz magazynu kluczy Java, wybierz Prześlij nowy klucz podpisywania aplikacji z Java Keystore i postępuj zgodnie z instrukcjami, aby pobrać i uruchomić narzędzie PEPK oraz przesłać wygenerowany plik z zaszyfrowanym kluczem.
  5. Kliknij Zarejestruj się.

Powinna wyświetlić się strona ze szczegółowymi informacjami o certyfikatach podpisywania i przesyłania aplikacji. Google Play podpisuje teraz aplikację przy użyciu dotychczasowego klucza podczas wdrażania jej u użytkowników. Jedną z najważniejszych zalet podpisywania aplikacji przez Google Play jest możliwość oddzielenia klucza używanego do podpisywania artefaktu przesyłanego do Google Play od klucza służącego do podpisywania aplikacji na potrzeby dystrybucji wśród użytkowników. Wykonaj czynności opisane w następnej sekcji, aby wygenerować i zarejestrować oddzielny klucz przesyłania.

Generowanie i rejestrowanie certyfikatu przesyłania

Gdy publikujesz aplikację, która nie jest podpisana kluczem przesyłania, możesz zarejestrować ją w Konsoli Google Play na potrzeby przyszłych aktualizacji aplikacji. Chociaż jest to krok opcjonalny, zalecamy opublikowanie aplikacji za pomocą innego klucza niż ten, którego Google Play używa do rozpowszechniania aplikacji wśród użytkowników. Dzięki temu Google będzie chronić Twój klucz podpisywania, a Ty będziesz mieć możliwość zresetowania utraconego lub przejętego prywatnego klucza przesyłania. W tej sekcji dowiesz się, jak utworzyć klucz przesyłania, wygenerować z niego certyfikat przesyłania i zarejestrować go w Google Play na potrzeby przyszłych aktualizacji aplikacji.

Poniżej opisujemy sytuacje, w których widoczna jest opcja zarejestrowania certyfikatu przesyłania w Konsoli Play:

  • Gdy opublikujesz nową aplikację podpisaną kluczem podpisywania i włączysz ją w podpisywaniu aplikacji przez Google Play.
  • Masz zamiar opublikować istniejącą aplikację, która korzysta już z podpisywania aplikacji przez Google Play, ale jest podpisana swoim kluczem podpisywania.

Jeśli nie publikujesz aktualizacji istniejącej aplikacji, która korzysta już z podpisywania aplikacji przez Google Play, i chcesz zarejestrować certyfikat przesyłania, wykonaj opisane poniżej czynności i przejdź do sekcji o resetowaniu utraconego lub przejętego prywatnego klucza przesyłania.

Wygeneruj klucz przesyłania i magazyn kluczy, jeśli nie zostało to jeszcze zrobione.

Po utworzeniu klucza przesyłania i magazynu kluczy musisz wygenerować certyfikat publiczny z klucza przesyłania za pomocą keytool za pomocą tego polecenia:

$ keytool -export -rfc
  -keystore your-upload-keystore.jks
  -alias upload-alias
  -file output_upload_certificate.pem

Gdy masz już certyfikat przesyłania, zarejestruj go w Google, gdy pojawi się prośba w Konsoli Play lub podczas resetowania klucza przesyłania.

Uaktualnianie klucza podpisywania aplikacji

W pewnych okolicznościach możesz chcieć zmienić klucz podpisywania aplikacji. Jest to możliwe na przykład w sytuacji, gdy chcesz użyć silniejszego klucza kryptograficznego lub Twój klucz podpisywania został przejęty. Użytkownicy mogą jednak aktualizować aplikację tylko wtedy, gdy aktualizacja jest podpisana tym samym kluczem podpisywania, więc trudno jest zmienić klucz podpisywania w przypadku już opublikowanej aplikacji.

Jeśli opublikujesz swoją aplikację w Google Play, możesz uaktualnić jej klucz za pomocą Konsoli Play. Nowy klucz będzie używany do podpisywania instalacji i aktualizacji aplikacji na Androidzie 13 lub nowszym, a starszy klucz podpisywania aplikacji będzie używany do podpisywania aktualizacji dla użytkowników starszych wersji Androida.

Więcej informacji znajdziesz w artykule Uaktualnianie klucza podpisywania aplikacji.

Resetowanie prywatnego klucza przesyłania utraconego lub przejętego

Jeśli utracisz dostęp do swojego prywatnego klucza przesyłania lub dostanie się on w niepowołane ręce, możesz utworzyć nowy klucz i poprosić o zresetowanie klucza przesyłania w Konsoli Play.

Konfigurowanie procesu kompilacji pod kątem automatycznego podpisywania aplikacji

W Android Studio możesz skonfigurować projekt tak, aby automatycznie podpisał wersję aplikacji podczas procesu kompilacji. W tym celu utwórz konfigurację podpisywania i przypisz ją do typu kompilacji wersji. Konfiguracja podpisywania składa się z lokalizacji magazynu kluczy, hasła do magazynu kluczy, aliasu klucza i hasła klucza. Aby utworzyć konfigurację podpisywania i przypisać ją do typu kompilacji wersji za pomocą Android Studio, wykonaj te czynności:

  1. W oknie Projekt kliknij prawym przyciskiem myszy swoją aplikację i wybierz Otwórz ustawienia modułu.
  2. W oknie Struktura projektu w sekcji Moduły w panelu po lewej stronie kliknij moduł, który chcesz podpisać.
  3. Kliknij kartę Podpisywanie, a potem kliknij Dodaj .
  4. Wybierz plik magazynu kluczy, wpisz nazwę tej konfiguracji podpisywania (możesz utworzyć więcej niż jeden) i wpisz wymagane informacje.

    Rysunek 7. Okno tworzenia nowej konfiguracji podpisywania.

  5. Kliknij kartę Typy kompilacji.
  6. Kliknij kompilację release.
  7. W sekcji Konfiguracja podpisywania wybierz utworzoną przed chwilą konfigurację podpisywania.

    Rysunek 8. Wybierz konfigurację podpisywania w Android Studio.

  8. Kliknij OK.

Teraz za każdym razem, gdy tworzysz typ kompilacji wersji przy użyciu wybranej przez Ciebie opcji w sekcji Kompilacja > Pakiety kompilacji / Pliki APK w Android Studio, IDE podpisuje Twoją aplikację automatycznie przy użyciu określonej przez Ciebie konfiguracji podpisywania. Podpisany plik APK lub pakiet aplikacji znajdziesz w katalogu build/outputs/ w katalogu projektu dla tworzonego modułu.

Gdy tworzysz konfigurację podpisywania, informacje dotyczące podpisywania są zawarte w postaci zwykłego tekstu w plikach kompilacji Gradle. Jeśli pracujesz w zespole lub udostępniasz kod publicznie, zadbaj o bezpieczeństwo informacji podpisywania, usuwając je z plików kompilacji i przechowując je oddzielnie. Więcej informacji o usuwaniu informacji o podpisywaniu z plików kompilacji znajdziesz w artykule o usuwaniu informacji o podpisywaniu z plików kompilacji. Więcej informacji o ochronie danych podpisywania znajdziesz w sekcji Bezpieczeństwo klucza poniżej.

Podpisywanie smaków każdego produktu w inny sposób

Jeśli Twoja aplikacja korzysta ze smaków produktów i chcesz podpisywać je inaczej, możesz utworzyć dodatkowe konfiguracje podpisywania i przypisać je według smaku:

  1. W oknie Projekt kliknij prawym przyciskiem myszy swoją aplikację i wybierz Otwórz ustawienia modułu.
  2. W oknie Struktura projektu w sekcji Moduły w panelu po lewej stronie kliknij moduł, który chcesz podpisać.
  3. Kliknij kartę Podpisywanie, a potem kliknij Dodaj .
  4. Wybierz plik magazynu kluczy, wpisz nazwę tej konfiguracji podpisywania (możesz utworzyć więcej niż jeden) i wpisz wymagane informacje.

    Rysunek 10. Okno tworzenia nowej konfiguracji podpisywania.

  5. W razie potrzeby powtarzaj kroki 3 i 4, aż utworzysz wszystkie konfiguracje podpisywania.
  6. Kliknij kartę Smary.
  7. Kliknij rodzaj, który chcesz skonfigurować, a następnie wybierz odpowiednią konfigurację podpisywania z menu Konfiguracja podpisywania.

    Rysunek 11. Skonfiguruj ustawienia podpisywania według rodzaju usługi.

    Powtórz te czynności, aby skonfigurować dodatkowe smaki produktu.

  8. Kliknij OK.

Możesz też określić ustawienia podpisywania w plikach konfiguracji Gradle. Więcej informacji znajdziesz w artykule o konfigurowaniu ustawień podpisywania.

Generowanie raportu dotyczącego podpisywania

Aby uzyskać informacje o podpisywaniu poszczególnych wariantów aplikacji, uruchom w Android Studio zadanie signingReport Gradle:

  1. Wybierz Widok > Okna narzędzi > Gradle, aby otworzyć okno narzędzia Gradle.
  2. Aby uruchomić raport, wybierz TwojaAplikacja > Lista zadań > Android >podpisywanie raportu

Zarządzaj własnym kluczem podpisywania

Jeśli nie zdecydujesz się na podpisywanie aplikacji przez Google Play (tylko w przypadku aplikacji utworzonych przed sierpniem 2021 roku), możesz zarządzać swoim kluczem podpisywania aplikacji i magazynem kluczy. Pamiętaj, że odpowiadasz za zabezpieczenie klucza i magazynu kluczy. Oprócz tego aplikacja nie będzie obsługiwać pakietów Android App Bundle, Play Feature Delivery ani Play Asset Delivery.

Gdy chcesz utworzyć własny magazyn kluczy i kluczy, najpierw wybierz silne hasło do tego magazynu i oddzielne silne hasło do każdego klucza prywatnego przechowywanego w magazynie kluczy. Magazyn kluczy musisz trzymać w bezpiecznym miejscu. Jeśli utracisz dostęp do klucza podpisywania aplikacji lub dostanie się on w niepowołane ręce, Google nie będzie w stanie pobrać tego klucza za Ciebie i nie będzie można udostępniać użytkownikom nowych wersji aplikacji jako aktualizacji oryginalnej aplikacji. Więcej informacji znajdziesz w sekcji Zabezpieczanie klucza poniżej.

Jeśli zarządzasz własnym kluczem podpisywania aplikacji i magazynem kluczy, podpiszesz go lokalnie swoim kluczem podpisywania aplikacji i prześlesz podpisany plik APK bezpośrednio do Sklepu Google Play w celu dystrybucji, tak jak na ilustracji 12.

Rysunek 12. Podpisywanie aplikacji, gdy zarządzasz własnym kluczem podpisywania aplikacji

Gdy używasz podpisywania aplikacji przez Google Play, Google chroni Twój klucz podpisywania, dba o prawidłowe podpisywanie aplikacji i otrzymywanie aktualizacji przez cały okres użytkowania. Jeśli jednak zdecydujesz się samodzielnie zarządzać kluczem podpisywania aplikacji, musisz wziąć pod uwagę kilka kwestii.

Uwagi na temat podpisywania

Należy podpisywać aplikację tym samym certyfikatem przez cały oczekiwany okres użytkowania. Oto kilka powodów, dla których warto to zrobić:

  • Uaktualnienie aplikacji: gdy system instaluje aktualizację aplikacji, porównuje certyfikaty w nowej wersji z certyfikatami w istniejącej wersji. System zezwoli na aktualizację w przypadku zgodności certyfikatów. Jeśli podpiszesz nową wersję innym certyfikatem, musisz przypisać do aplikacji inną nazwę pakietu. W tym przypadku użytkownik zainstaluje nową wersję jako zupełnie nową aplikację.
  • Modułowość aplikacji: Android zezwala na uruchamianie plików APK podpisanych tym samym certyfikatem w ramach tego samego procesu, jeśli aplikacje tego zażądają. W ten sposób system traktuje je jak pojedynczą aplikację. W ten sposób możesz wdrażać swoją aplikację w modułach, a użytkownicy mogą aktualizować każdy z nich niezależnie.
  • Udostępnianie kodu/danych za pomocą uprawnień: Android zapewnia egzekwowanie uprawnień na podstawie podpisu, dzięki czemu aplikacja może udostępniać funkcje innej aplikacji podpisanej określonym certyfikatem. Gdy podpisujesz wiele plików APK tym samym certyfikatem i używasz weryfikacji uprawnień na podstawie podpisu, aplikacje mogą udostępniać kod i dane w bezpieczny sposób.

Jeśli planujesz obsługiwać uaktualnienia aplikacji, zadbaj o to, aby okres ważności klucza podpisywania aplikacji był dłuższy niż oczekiwany okres ważności. Zalecany okres ważności to co najmniej 25 lat. Po wygaśnięciu okresu ważności klucza użytkownicy nie będą już mogli bezproblemowo przejść na nowe wersje aplikacji.

Jeśli planujesz opublikować aplikacje w Google Play, klucz używany do podpisywania aplikacji musi mieć okres ważności kończący się po 22 października 2033 r. Google Play spełnia ten wymóg, aby użytkownicy mogli bezproblemowo uaktualnić aplikację, gdy są dostępne nowe wersje.

Zabezpiecz klucz

Jeśli zdecydujesz się samodzielnie zarządzać kluczem podpisywania aplikacji i magazynem kluczy oraz zabezpieczyć je (zamiast korzystać z podpisywania aplikacji przez Google Play), bezpieczeństwo klucza podpisywania aplikacji ma kluczowe znaczenie zarówno dla Ciebie, jak i dla użytkownika. Jeśli zezwolisz innej osobie na używanie swojego klucza lub pozostawisz swój magazyn kluczy i hasła w niebezpiecznej lokalizacji, tak aby inna osoba mogła ich znaleźć i z nich skorzystać, Twoja tożsamość i zaufanie użytkownika zostaną naruszone.

Jeśli ktoś inny powinien przejąć Twój klucz podpisywania aplikacji bez Twojej wiedzy i uprawnień, może podpisywać i rozpowszechniać aplikacje, które złośliwie zastępują Twoje autentyczne aplikacje lub je uszkodzą. Taka osoba może też podpisywać i rozpowszechniać aplikacje, które pod Twoją tożsamością atakują inne aplikacje lub cały system albo uszkodziły albo wykradły dane użytkownika.

Twój klucz prywatny jest wymagany do podpisywania wszystkich przyszłych wersji Twojej aplikacji. Jeśli zgubisz klucz, nie będziesz mieć możliwości publikowania aktualizacji istniejącej aplikacji. Nie będzie można ponownie wygenerować wcześniej wygenerowanego klucza.

Reputacja podmiotu dewelopera zależy od tego, czy prawidłowo zabezpieczasz klucz podpisywania aplikacji przez cały czas, dopóki klucz nie wygaśnie. Oto kilka wskazówek, jak zabezpieczyć klucz:

  • Wybierz silne hasła do magazynu kluczy i klucza.
  • Nie udostępniaj nikomu swojego klucza prywatnego ani nie pożyczaj go innym osobom. Nie dawaj też nieupoważnionym osobom poznawania Twojego hasła do magazynu kluczy ani haseł do kluczy.
  • Przechowuj plik magazynu kluczy zawierający klucz prywatny w bezpiecznym miejscu.

Ogólnie rzecz biorąc, jeśli podczas generowania, używania i przechowywania klucza będziesz przestrzegać zdrowotnych środków ostrożności, pozostaje on bezpieczny.

Usuń informacje o podpisywaniu z plików kompilacji

Gdy tworzysz konfigurację podpisywania, Android Studio dodaje Twoje informacje do podpisywania w postaci zwykłego tekstu do plików build.gradle modułu. Jeśli pracujesz z zespołem lub tworzysz kod na licencji open source, przenieś te informacje poufne z plików kompilacji, aby nie były łatwo dostępne dla innych. W tym celu musisz utworzyć oddzielny plik właściwości do przechowywania bezpiecznych informacji i odwoływać się do tego pliku w plikach kompilacji w ten sposób:

  1. Utwórz konfigurację podpisywania i przypisz ją do co najmniej 1 typu kompilacji. W tych instrukcjach przyjęto, że masz skonfigurowaną konfigurację pojedynczego podpisywania dla danego typu kompilacji zgodnie z opisem w powyższej sekcji Konfigurowanie procesu kompilacji w celu automatycznego podpisywania aplikacji.
  2. Utwórz plik o nazwie keystore.properties w katalogu głównym projektu. Ten plik powinien zawierać Twoje dane podpisywania w ten sposób:
    storePassword=myStorePassword
    keyPassword=mykeyPassword
    keyAlias=myKeyAlias
    storeFile=myStoreFileLocation
    
  3. W pliku build.gradle modułu dodaj kod powodujący wczytanie pliku keystore.properties przed blokiem android {}.

    Odlotowy

    ...
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    def keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    def keystoreProperties = new Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Kotlin

    ...
    import java.util.Properties
    import java.io.FileInputStream
    
    // Create a variable called keystorePropertiesFile, and initialize it to your
    // keystore.properties file, in the rootProject folder.
    val keystorePropertiesFile = rootProject.file("keystore.properties")
    
    // Initialize a new Properties() object called keystoreProperties.
    val keystoreProperties = Properties()
    
    // Load your keystore.properties file into the keystoreProperties object.
    keystoreProperties.load(FileInputStream(keystorePropertiesFile))
    
    android {
        ...
    }
    

    Uwaga: możesz zapisać plik keystore.properties w innej lokalizacji (np. w folderze modułu zamiast w folderze głównym projektu lub na serwerze kompilacji, jeśli używasz narzędzia do ciągłej integracji). W takim przypadku zmodyfikuj powyższy kod, by poprawnie zainicjować keystorePropertiesFile przy użyciu rzeczywistej lokalizacji pliku keystore.properties.

  4. Możesz odwoływać się do właściwości przechowywanych w elemencie keystoreProperties, używając składni keystoreProperties['propertyName']. Zmodyfikuj blok signingConfigs w pliku build.gradle modułu, aby odwoływał się do informacji podpisywania przechowywanych w keystoreProperties przy użyciu tej składni.

    Odlotowy

    android {
        signingConfigs {
            config {
                keyAlias keystoreProperties['keyAlias']
                keyPassword keystoreProperties['keyPassword']
                storeFile file(keystoreProperties['storeFile'])
                storePassword keystoreProperties['storePassword']
            }
        }
        ...
      }

    Kotlin

    android {
        signingConfigs {
            create("config") {
                keyAlias = keystoreProperties["keyAlias"] as String
                keyPassword = keystoreProperties["keyPassword"] as String
                storeFile = file(keystoreProperties["storeFile"] as String)
                storePassword = keystoreProperties["storePassword"] as String
            }
        }
        ...
      }
  5. Otwórz okno narzędzia Tworzenie wariantów i sprawdź, czy wybrany jest typ kompilacji wersji.
  6. Wybierz opcję w sekcji Kompilacja > Pakiety kompilacji / pliki APK, by utworzyć plik APK lub pakiet aplikacji swojej kompilacji. Dane wyjściowe kompilacji powinny pojawić się w katalogu build/outputs/ modułu.

Ponieważ Twoje pliki kompilacji nie zawierają już informacji poufnych, możesz je teraz uwzględniać w kontroli źródła lub przesyłać do udostępnionej bazy kodu. Pamiętaj, aby zabezpieczyć plik keystore.properties. Może to obejmować usunięcie jej z systemu kontroli źródeł.