Aby można było zainstalować plik APK na urządzeniu lub zaktualizować go, musi on być podpisany cyfrowym certyfikatem. Aby opublikować aplikację w formie pakietu aplikacji na Androida, musisz podpisać pakiet za pomocą klucza przesyłania, zanim prześlesz go do Konsoli Play. Podpisywanie aplikacji przez Google Play zajmie się resztą. W przypadku aplikacji rozpowszechnianych za pomocą plików APK w Google Play lub innych sklepach musisz podpisać pliki APK ręcznie, aby je przesłać.
Na tej stronie znajdziesz omówienie ważnych pojęć związanych z podpisywaniem aplikacji i bezpieczeństwem, a także informacje o tym, jak podpisać aplikację do wydania w Google Play za pomocą Android Studio i jak skonfigurować podpisywanie aplikacji w Google Play.
Oto ogólny przegląd czynności, które mogą być potrzebne do podpisania i opublikowania nowej aplikacji w Google Play:
- Generowanie klucza przesyłania i magazynu kluczy
- Podpisywanie aplikacji kluczem przesyłania
- Konfigurowanie podpisuwania aplikacji przez Google Play
- Przesyłanie aplikacji do Google Play
- Przygotowanie i publikowanie wersji aplikacji
Jeśli Twoja aplikacja została już opublikowana w Sklepie Google Play z użyciem istniejącego klucza podpisywania aplikacji lub jeśli chcesz wybrać klucz podpisywania aplikacji dla nowej aplikacji zamiast generowania go przez Google, wykonaj te czynności:
- Podpisz aplikację za pomocą klucza podpisywania.
- Prześlij klucz podpisywania aplikacji do podpisywania aplikacji przez Google Play.
- (zalecane) Wygeneruj i zarejestruj certyfikat przesyłania na potrzeby przyszłych aktualizacji aplikacji.
- Przesyłanie aplikacji do Google Play
- Przygotowanie 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 używasz Android Studio lub wolisz podpisywać aplikację za pomocą wiersza poleceń, dowiedz się więcej o 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. Ponieważ pakiety aplikacji odkładają kompilowanie i podpisywanie plików APK na później, musisz skonfigurować podpisywanie aplikacji przez Google Play przed przesłaniem pakietu aplikacji. Dzięki temu:
- Używaj pakietu Android App Bundle i obsługuj zaawansowane tryby dostarczania w Google Play. Pakiet aplikacji na Androida znacznie zmniejsza rozmiar aplikacji, upraszcza publikowanie jej wersji oraz umożliwia korzystanie z modułów funkcji i oferowanie wersji błyskawicznych.
- zwiększyć bezpieczeństwo klucza podpisywania i umożliwić używanie oddzielnego klucza przesyłania do podpisywania pakietu aplikacji przesyłanego do Google Play.
Uaktualnienie klucza pozwala zmienić klucz podpisywania aplikacji, jeśli obecny klucz został skompromitowany lub jeśli musisz przejść na klucz o lepszym szyfrowaniu.
Podpisywanie aplikacji przez Google Play używa 2 kluczy: klucza podpisywania aplikacji i klucza przesyłania. Więcej informacji na ich temat znajdziesz w sekcji Klucze i magazyny kluczy. Zachowasz klucz przesyłania i użyjesz go do podpisania aplikacji, aby przesłać ją do Sklepu Google Play. Google używa certyfikatu przesyłania do weryfikacji tożsamości i podpisuje pliki APK kluczem podpisywania aplikacji na potrzeby dystrybucji, jak pokazano na rysunku 1. Jeśli zdarzy Ci się utracić klucz przesyłania lub dostanie się on w niepowołane ręce, możesz poprosić o zresetowanie klucza przesyłania.
W przypadku aplikacji, które nie są objęte podpisywaniem aplikacji przez Google Play, utrata klucza podpisywania spowoduje utratę możliwości aktualizowania aplikacji.
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 (KMS) Google. Więcej informacji o infrastrukturze technicznej Google znajdziesz w raportach na temat zabezpieczeń Google Cloud.
Jeśli używasz podpisywania aplikacji przez Google Play, a utracisz klucz przesyłania lub ktoś go przejmie, możesz poprosić o zresetowanie klucza przesyłania w Konsoli Play. Klucz podpisywania aplikacji jest chroniony przez Google, więc 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 Resetowanie utraconego lub przejętego klucza prywatnego przesyłania.
W następnej sekcji opisaliśmy kilka ważnych pojęć i koncepcji związanych z podpisywaniem aplikacji i bezpieczeństwem. Jeśli chcesz przejść do dalszych czynności i dowiedz się, jak przygotować aplikację do przesłania do Sklepu Google Play, przeczytaj artykuł Podpisywanie aplikacji przed udostępnieniem.
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
), zwany też certyfikatem cyfrowym lub certyfikatem tożsamości, zawiera klucz publiczny pary kluczy publiczno-prywatnych, 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 warto poznać:
- Klucz podpisywania aplikacji: klucz używany do podpisywania plików APK instalowanych na urządzeniu użytkownika. W ramach bezpiecznego modelu aktualizacji Androida klucz podpisywania nigdy się nie zmienia przez cały okres istnienia aplikacji. Klucz podpisywania aplikacji jest prywatny i musi być utrzymywany w tajemnicy. Możesz jednak udostępnić certyfikat wygenerowany za pomocą 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 zachować klucz przesyłania w tajemnicy. Możesz jednak udostępnić certyfikat wygenerowany za pomocą klucza przesyłania. Klucz przesyłania możesz wygenerować na jeden z tych sposobów:
- Jeśli zdecydujesz się, aby Google wygenerowało klucz podpisywania aplikacji, to klucz, którego używasz do podpisywania aplikacji na potrzeby wydania, zostanie wyznaczony jako klucz przesyłania.
- Jeśli podczas włączania nowej lub istniejącej aplikacji przekażesz Google klucz podpisywania aplikacji, będziesz mieć możliwość wygenerowania nowego klucza przesyłania podczas włączania lub po jego włączeniu, aby zwiększyć bezpieczeństwo.
- Jeśli nie wygenerujesz nowego klucza przesyłania, nadal będziesz używać klucza podpisywania aplikacji jako klucza przesyłania do podpisywania każdej wersji.
Wskazówka: aby zapewnić bezpieczeństwo kluczy, 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. Możesz go udostępniać, ponieważ nie zawiera klucza prywatnego.
Odciski cyfrowe certyfikatów to krótkie, unikalne reprezentacje certyfikatów, które są często wymagane przez dostawców interfejsów API razem z nazwą pakietu w celu zarejestrowania aplikacji, która ma korzystać z ich usługi. Odciski 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.
Podpisz kompilację debugowania
Podczas uruchamiania lub debugowania projektu w IDE Android Studio automatycznie podpisuje aplikację za pomocą certyfikatu debugowania wygenerowanego przez narzędzia Android SDK. Gdy po raz pierwszy uruchomisz lub debugujesz projekt w Android Studio, IDE automatycznie utworzy magazyn kluczy i certyfikat debugowania w $HOME/.android/debug.keystore
oraz skonfiguruje hasła do magazynu kluczy.
Ponieważ certyfikat debugowania jest tworzony przez narzędzia do kompilacji i z założenia jest niepewny, większość sklepów z aplikacjami (w tym Sklep Google Play) nie akceptuje aplikacji podpisanych certyfikatem debugowania.
Android Studio automatycznie zapisuje informacje o podpisywaniu debugowania w konfiguracji podpisywania, dzięki czemu nie musisz ich wpisywać za każdym razem, gdy debugujesz. Konfiguracja podpisywania to obiekt zawierający wszystkie informacje potrzebne do podpisania aplikacji, w tym lokalizację magazynu kluczy, hasło do magazynu kluczy, nazwę klucza i hasło do klucza.
Więcej informacji o tworzeniu i uruchamianiu aplikacji na potrzeby debugowania znajdziesz w artykule Tworzenie i uruchamianie aplikacji.
Wygaśnięcie certyfikatu debugowania
Podpisany samodzielnie certyfikat używany do podpisywania aplikacji na potrzeby debugowania ma datę wygaśnięcia 30 lat od daty jego utworzenia. Po wygaśnięciu certyfikatu wystąpi błąd kompilacji.
Aby rozwiązać ten problem, po prostu usuń plik debug.keystore
z jednego z tych miejsc:
~/.android/
w OS X i LinuxieC:\Documents and Settings\user\.android\
w systemie Windows XPC:\Users\user\.android\
w Windows Vista oraz Windows 7, 8 i 10
Gdy następnym razem utworzysz i uruchomisz wersję debugowania aplikacji, Android Studio wygeneruje nowe repozytorium kluczy i klucz debugowania.
Podpisz aplikację przed opublikowaniem w Google Play
Gdy aplikacja będzie gotowa do opublikowania, musisz ją podpisać i przesłać do sklepu z aplikacjami, np. Google Play. Gdy po raz pierwszy publikujesz aplikację w Google Play, musisz też skonfigurować podpisywanie aplikacji przez Google Play. Podpisywanie aplikacji w Google Play jest opcjonalne w przypadku aplikacji utworzonych przed sierpniem 2021 roku. Z tej sekcji dowiesz się, jak prawidłowo podpisać aplikację przed jej wydaniem 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 wygenerować go w Android Studio w ten sposób:
- Na pasku menu kliknij Build > Generate Signed Bundle/APK (Utwórz > Wygeneruj podpisany pakiet lub plik APK).
- W oknie Wygeneruj podpisany pakiet lub plik APK wybierz Pakiet aplikacji na Androida lub Plik APK i kliknij Dalej.
- Pod polem Ścieżka klucza magazynu kliknij Utwórz nowy.
W oknie Nowy magazyn kluczy podaj informacje o magazynie kluczy i kluczu, jak pokazano na rysunku 2.
Keystore
- Ścieżka do magazynu kluczy: wybierz lokalizację, w której ma zostać utworzony magazyn kluczy.
Na końcu ścieżki do lokalizacji należy też dodać nazwę pliku z rozszerzeniem
.jks
. - Hasło: utwórz i potwierdź bezpieczne hasło do magazynu kluczy.
- Ścieżka do magazynu kluczy: wybierz lokalizację, w której ma zostać utworzony magazyn kluczy.
Na końcu ścieżki do lokalizacji należy też dodać nazwę pliku z rozszerzeniem
Klucz
- Alias: wpisz nazwę identyfikującą klucz.
- Hasło: utwórz i potwierdź bezpieczne hasło do klucza. Hasło powinno być takie samo jak hasło do magazynu kluczy. (Więcej informacji znajdziesz w znanym problemie)
- Okres ważności (w latach): ustaw okres ważności klucza w latach. 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 istnienia.
- Certyfikat: wpisz informacje o sobie, które mają znaleźć się na certyfikacie. Te informacje nie są wyświetlane w aplikacji, ale są zawarte w certyfikacie w pakiecie APK.
Po wypełnieniu formularza kliknij OK.
Jeśli chcesz skompilować i podpisać aplikację za pomocą klucza przesyłania, przejdź do sekcji Podpisywanie aplikacji za pomocą klucza przesyłania. Jeśli chcesz wygenerować tylko klucz i sklep kluczy, kliknij Anuluj.
Podpisywanie aplikacji kluczem
Jeśli masz już klucz przesyłania, użyj go do podpisania aplikacji. Jeśli aplikacja jest już podpisana i opublikowana w Google Play za pomocą dotychczasowego klucza podpisywania aplikacji, użyj tego klucza do jej podpisania. Później możesz wygenerować i zarejestrować w Google Play osobny klucz przesyłania, aby podpisywać i przesyłać kolejne aktualizacje aplikacji.
Aby podpisać aplikację za pomocą Android Studio:
- Jeśli okno Wygeneruj podpisany pakiet lub plik APK jest zamknięte, kliknij Utwórz > Wygeneruj podpisany pakiet lub plik APK.
- W oknie Wygeneruj podpisany pakiet lub plik APK wybierz Pakiet aplikacji na Androida lub Plik APK i kliknij Dalej.
- W menu wybierz moduł.
Podaj ścieżkę do magazynu kluczy, alias klucza i hasła do obu. Jeśli nie masz jeszcze przygotowanego magazynu kluczy przesyłania i klucza, najpierw wygeneruj klucz przesyłania i magazyn kluczy, a następnie wróć do tego etapu.
Kliknij Dalej.
W następnym oknie (patrz rysunek 4) wybierz folder docelowy dla podpisanej aplikacji, wybierz typ kompilacji i w odpowiednich przypadkach wybierz wersje produktu.
Jeśli tworzysz i podpisujesz pakiet APK, musisz wybrać, które wersje podpisów ma obsługiwać Twoja aplikacja. Więcej informacji znajdziesz w artykule Schematy podpisywania aplikacji.
Kliknij Utwórz.
Gdy Android Studio skończy kompilować podpisaną aplikację, możesz ją znaleźć lub przeanalizować, klikając odpowiednią opcję w pojawiającym się powiadomieniu, jak pokazano na rysunku 5.
Teraz możesz włączyć podpisywanie aplikacji przez Google Play i przesłać aplikację do opublikowania. Jeśli dopiero zaczynasz publikować aplikacje, przeczytaj artykuł Omówienie procesu publikowania. W przeciwnym razie przejdź do strony Prześlij aplikację do Konsoli Play.
Korzystanie z podpisywania aplikacji przez Google Play
Jak opisano wcześniej na tej stronie, aby podpisywać aplikację na potrzeby dystrybucji w Google Play, musisz skonfigurować podpisywanie aplikacji przez Google Play (z wyjątkiem aplikacji utworzonych przed sierpniem 2021 roku, które mogą nadal rozpowszechniać podpisane samodzielnie pliki APK). Działania, które musisz podjąć, zależą od tego, czy aplikacja nie została jeszcze opublikowana w Google Play, czy została już podpisana i opublikowana przed sierpniem 2021 r. za pomocą istniejącego klucza podpisywania aplikacji.
Konfigurowanie nowej aplikacji
Aby skonfigurować podpisywanie aplikacji, która nie została jeszcze opublikowana w Google Play:
- Jeśli jeszcze tego nie zrobiono, wygeneruj klucz przesyłania i podpisz nim aplikację.
- Zaloguj się w Konsoli Play.
- Aby utworzyć nową wersję, wykonaj czynności związane z przygotowaniem i wdrażaniem wersji.
- Gdy wybierzesz ścieżkę wersji, w sekcji Podpisywanie aplikacji skonfiguruj podpisywanie aplikacji w ten sposób:
- Aby Google Play wygenerowało klucz podpisywania aplikacji i użyło go do podpisania aplikacji, nie musisz nic robić. Klucz, którego używasz do podpisywania pierwszej wersji, staje się kluczem przesyłania. Używaj go do podpisywania kolejnych wersji.
- Aby użyć tego samego klucza co w innej aplikacji na koncie dewelopera, wybierz Zmień klucz podpisywania aplikacji > Użyj tego samego klucza co w innej aplikacji na tym koncie, wybierz aplikację i kliknij Dalej.
- Aby przekazać Google własny klucz podpisywania, który będzie używany do podpisywania aplikacji, kliknij Zmień klucz podpisywania aplikacji i wybierz jedną z opcji Eksportuj i prześlij, która umożliwia bezpieczne przesłanie klucza prywatnego i jego certyfikatu publicznego.
W sekcji Pakiety aplikacji kliknij Przeglądaj pliki, aby znaleźć i przesłać aplikację podpisaną za pomocą klucza przesyłania. Więcej informacji o publikowaniu aplikacji znajdziesz w artykule Przygotowywanie i publikowanie wersji. Gdy po skonfigurowaniu podpisywania aplikacji przez Google Play opublikujesz aplikację, Google Play wygeneruje klucz podpisywania aplikacji (chyba że prześlesz istniejący klucz) i zarządza nim za Ciebie. Wystarczy, że podpiszesz kolejne aktualizacje aplikacji za pomocą klucza przesyłania, zanim prześlesz ją do Google Play.
Jeśli chcesz utworzyć nowy klucz przesyłania dla aplikacji, przejdź do sekcji Zresetuj utracony lub przejęty klucz prywatny przesyłania.
Dołączenie do istniejącej aplikacji
Jeśli aktualizujesz aplikację, która została już opublikowana w Google Play, za pomocą istniejącego klucza podpisywania aplikacji, możesz włączyć podpisywanie aplikacji przez Google Play w ten sposób:
- Zaloguj się w Konsoli Play i otwórz aplikację.
- W menu po lewej stronie kliknij Wersja > Konfiguracja > Podpisywanie aplikacji.
- W razie potrzeby przeczytaj Warunki usługi i kliknij Zgadzam się.
- Wybierz jedną z opcji, która najlepiej opisuje klucz podpisywania, który chcesz przesłać do Google Play, i postępuj zgodnie z wyświetlanymi instrukcjami. Jeśli na przykład używasz Java Keystore do klucza podpisywania, wybierz Prześlij nowy klucz podpisywania aplikacji z Java Keystore i postępuj zgodnie z instrukcjami, aby pobrać i uruchomić narzędzie PEPK, a następnie przesłać wygenerowany plik z zaszyfrowanym kluczem.
- Kliknij Zarejestruj się.
Powinna się wyświetlić strona ze szczegółami certyfikatów podpisywania i przesyłania aplikacji. Google Play będzie teraz podpisywać Twoją aplikację za pomocą dotychczasowego klucza podczas wdrażania jej dla użytkowników. Jednak jedną z najważniejszych zalet podpisywania aplikacji przez Google Play jest możliwość oddzielenia klucza, którego używasz do podpisywania artefaktu przesyłanego do Google Play, od klucza, którego Google Play używa do podpisywania aplikacji na potrzeby dystrybucji dla użytkowników. Dlatego wykonaj czynności opisane w następnej sekcji, aby wygenerować i zarejestrować oddzielny klucz przesyłania.
Generowanie i rejestrowanie certyfikatu przesyłania
Jeśli publikujesz aplikację, która nie jest podpisana kluczem przesyłania, Konsola Google Play umożliwia zarejestrowanie klucza na potrzeby przyszłych aktualizacji aplikacji. Chociaż jest to krok opcjonalny, zalecamy opublikowanie aplikacji z kluczem innym niż ten, którego Google Play używa do rozpowszechniania aplikacji wśród użytkowników. W ten sposób Google zapewnia bezpieczeństwo klucza podpisywania, a Ty masz możliwość zresetowania utraconego lub wykradzionego prywatnego klucza przesyłania. W tej sekcji dowiesz się, jak utworzyć klucz przesyłania, wygenerować certyfikat przesyłania i zarejestrować go w Google Play na potrzeby przyszłych aktualizacji aplikacji.
Poniżej opisujemy sytuacje, w których w Konsoli Play widzisz opcję rejestracji certyfikatu przesyłania:
- Gdy publikujesz nową aplikację podpisaną kluczem podpisywania i włączasz podpisywanie aplikacji przez Google Play.
- Gdy zamierzasz opublikować istniejącą aplikację, która jest już objęta podpisywaniem aplikacji przez Google Play, ale jest podpisana za pomocą własnego klucza podpisywania.
Jeśli nie publikujesz aktualizacji dotychczasowej aplikacji, która korzysta z podpisywania aplikacji przez Google Play, i chcesz zarejestrować certyfikat przesyłania, wykonaj podane niżej czynności, a następnie przejdź do sekcji dotyczącej resetowania utraconego lub przejętego prywatnego klucza przesyłania.
Jeśli jeszcze tego nie zrobiono, wygeneruj klucz przesyłania i sklep kluczy.
Po utworzeniu klucza przesyłania i magazynu kluczy musisz wygenerować certyfikat publiczny z klucza przesyłania za pomocą keytool
, używając tego polecenia:
$ keytool -export -rfc -keystore your-upload-keystore.jks -alias upload-alias -file output_upload_certificate.pem
Gdy już masz certyfikat przesyłania, zarejestruj go w Google, gdy pojawi się taka prośba w Konsoli Play lub podczas resetowania klucza przesyłania.
Uaktualnianie klucza podpisywania aplikacji
W niektórych okolicznościach warto zmienić klucz podpisywania aplikacji. Na przykład dlatego, że chcesz użyć klucza o lepszym szyfrowaniu lub klucz podpisywania został naruszony. Użytkownicy mogą jednak aktualizować aplikację tylko wtedy, gdy aktualizacja jest podpisana tym samym kluczem podpisywania, dlatego trudno jest zmienić klucz podpisywania w aplikacji, która została już opublikowana.
Jeśli publikujesz aplikację w Google Play, możesz uaktualnić klucz podpisywania opublikowanej aplikacji w Konsoli Play. Nowy klucz będzie używany do podpisywania instalacji i aktualizacji aplikacji na Androidzie 13 lub nowszym, a starszy klucz do podpisywania aktualizacji dla użytkowników korzystających z wcześniejszych wersji Androida.
Więcej informacji znajdziesz w artykule Uaktualnianie klucza podpisywania aplikacji.
Zresetuj utracony lub przejęty klucz prywatny przesyłania
Jeśli utracisz dostęp do swojego prywatnego klucza przesyłania lub dostanie się on w niepowołane ręce, możesz utworzyć nowy i poprosić o zresetowanie klucza przesyłania w Konsoli Play.
Konfigurowanie procesu kompilacji w celu automatycznego podpisywania aplikacji
W Android Studio możesz skonfigurować projekt tak, aby automatycznie podpisywał wersję aplikacji przeznaczoną do publikacji podczas procesu kompilacji. W tym celu utwórz konfigurację podpisywania i przypisz ją do typu kompilacji wersji przeznaczonej do publikacji. Konfiguracja podpisywania składa się z lokalizacji magazynu kluczy, hasła magazynu kluczy, aliasu klucza i hasła klucza. Aby utworzyć konfigurację podpisywania i przypisać ją do typu kompilacji wersji w Android Studio, wykonaj te czynności:
- W oknie Projekt kliknij prawym przyciskiem aplikację i kliknij Otwórz ustawienia modułu.
- W oknie Struktura projektu w panelu po lewej stronie w sekcji Moduły kliknij moduł, który chcesz podpisać.
- Kliknij kolejno kartę Podpisywanie i Dodaj .
-
Wybierz plik klucza, wpisz nazwę tej konfiguracji podpisywania (możesz utworzyć więcej niż jedną) i wpisz wymagane informacje.
- Kliknij kartę Typy kompilacji.
- Kliknij wersję wersji.
-
W sekcji Konfiguracja podpisywania wybierz utworzoną właśnie konfigurację podpisywania.
- Kliknij OK.
Teraz za każdym razem, gdy w Android Studio wybierzesz opcję Utwórz > Utwórz pakiety > Utwórz APK, IDE automatycznie podpisze aplikację, korzystając z określonej przez Ciebie konfiguracji podpisywania. Podpisano plik APK lub pakiet aplikacji znajdziesz w katalogu build/outputs/
w katalogu projektu dla modułu, który kompilujesz.
Podczas tworzenia konfiguracji podpisywania informacje o podpisywaniu są dołączane w postaci tekstu w plikach kompilacji Gradle. Jeśli pracujesz w zespole lub udostępniasz kod publicznie, musisz chronić informacje do podpisywania, usuwając je z plików kompilacji i przechowując osobno. Więcej informacji o usuwaniu informacji o podpisywaniu z plików kompilacji znajdziesz w artykule Usuwanie informacji o podpisywaniu z plików kompilacji. Więcej informacji o zabezpieczaniu danych do podpisywania znajdziesz w sekcji Zabezpieczanie klucza poniżej.
podpisywać każdy wariant produktu inaczej;
Jeśli Twoja aplikacja korzysta z wersji produktu i chcesz je podpisywać osobno, możesz utworzyć dodatkowe konfiguracje podpisywania i przypisać je do wersji:
- W oknie Projekt kliknij prawym przyciskiem aplikację i kliknij Otwórz ustawienia modułu.
- W oknie Struktura projektu w panelu po lewej stronie w sekcji Moduły kliknij moduł, który chcesz podpisać.
- Kliknij kolejno kartę Podpisywanie i Dodaj .
-
Wybierz plik klucza, wpisz nazwę tej konfiguracji podpisywania (możesz utworzyć więcej niż jedną) i wpisz wymagane informacje.
- W razie potrzeby powtarzaj kroki 3 i 4, aż utworzysz wszystkie konfiguracje podpisywania.
- Kliknij kartę Smak.
- Kliknij wersję, którą chcesz skonfigurować, a potem w menu Konfiguracja podpisywania wybierz odpowiednią konfigurację podpisywania.
Powtórz te czynności, aby skonfigurować dodatkowe wersje produktu.
- Kliknij OK.
Ustawienia podpisywania możesz też określić w plikach konfiguracji Gradle. Więcej informacji znajdziesz w artykule Konfigurowanie ustawień podpisywania.
Generowanie raportu dotyczącego podpisywania
Aby uzyskać informacje o podpisywaniu każdej wersji aplikacji, uruchom zadanie Gradle
signingReport
w Android Studio:
- Kliknij Widok > Okna narzędzia > Gradle, aby otworzyć okno narzędzia Gradle.
- Aby uruchomić raport, kliknij TwojaAplikacja > Zadania > Android > signingReport.
Zarządzanie własnym kluczem podpisywania
Jeśli nie chcesz korzystać z podpisywania aplikacji przez Google Play (dotyczy to tylko aplikacji utworzonych przed sierpniem 2021 r.), możesz zarządzać własnym kluczem podpisywania aplikacji i sklepem z kluczami. Pamiętaj, że to Ty odpowiadasz za zabezpieczenie klucza i sklepu z kluczami. Ponadto aplikacja nie będzie obsługiwać pakietów aplikacji na Androida, Play Feature Delivery ani Play Asset Delivery.
Zanim utworzysz własny klucz i kluczarkę, wybierz silne hasło dla kluczarki i osobne silne hasło dla każdego klucza prywatnego przechowywanego w kluczarce. Musisz przechowywać magazyn kluczy w bezpiecznym miejscu. Jeśli utracisz dostęp do klucza podpisywania aplikacji lub klucz zostanie naruszony, Google nie będzie mógł go odzyskać, a Ty nie będziesz mieć możliwości udostępniania użytkownikom nowych wersji aplikacji jako aktualizacji pierwotnej aplikacji. Więcej informacji znajdziesz w sekcji Zabezpieczanie klucza poniżej.
Jeśli zarządzasz własnym kluczem podpisywania aplikacji i sklepem z kluczami, podpisując plik APK, podpisujesz go lokalnie za pomocą klucza podpisywania aplikacji, a następnie przesyłasz podpisany plik APK bezpośrednio do sklepu Google Play na potrzeby dystrybucji, jak pokazano na rysunku 12.
Gdy korzystasz z podpisywania aplikacji przez Google Play, Google dba o bezpieczeństwo klucza podpisywania i zapewnia, że aplikacje są prawidłowo podpisane i mogą otrzymywać aktualizacje przez cały okres ich istnienia. Jeśli jednak zdecydujesz się zarządzać kluczem podpisywania aplikacji samodzielnie, musisz wziąć pod uwagę kilka kwestii.
Uwagi na temat podpisywania
Aplikację należy podpisać tym samym certyfikatem przez cały okres jej użytkowania. Jest 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 dotychczasowej wersji. Jeśli certyfikaty się zgadzają, system zezwala na aktualizację. Jeśli nową wersję podpiszesz innym certyfikatem, musisz przypisać aplikacji inną nazwę pakietu. W tym przypadku użytkownik instaluje nową wersję jako zupełnie nową aplikację.
- Modułowość aplikacji: Android umożliwia uruchamianie plików APK podpisanych tym samym certyfikatem w ramach tego samego procesu (jeśli aplikacje tego zażądają), dzięki czemu system traktuje je jako jedną aplikację. Dzięki temu możesz wdrażać aplikację w modulech, 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, która jest podpisana określonym certyfikatem. Podpisywanie wielu plików APK tym samym certyfikatem i wykorzystywanie kontroli uprawnień na podstawie podpisu umożliwia aplikacjom bezpieczne udostępnianie kodu i danych.
Jeśli planujesz obsługiwać uaktualnienia aplikacji, upewnij się, że okres ważności klucza podpisywania aplikacji jest dłuższy niż oczekiwany okres ważności aplikacji. Zalecamy okres ważności co najmniej 25 lat. Po upływie okresu ważności klucza użytkownicy nie będą mogli już płynnie przejść na nowe wersje aplikacji.
Jeśli planujesz publikować aplikacje w Google Play, klucz, którego używasz do podpisywania aplikacji, musi mieć okres ważności kończący się po 22 października 2033 r. Google Play egzekwuje to wymaganie, aby użytkownicy mogli bezproblemowo aktualizować aplikacje, gdy są dostępne nowe wersje.
Bezpieczeństwo klucza
Jeśli zdecydujesz się samodzielnie zarządzać kluczem podpisywania aplikacji i sklepem z kluczami (zamiast korzystać z podpisywania aplikacji przez Google Play), zabezpieczenie klucza podpisywania aplikacji będzie kluczowe zarówno dla Ciebie, jak i dla użytkownika. Jeśli zezwolisz komuś na użycie Twojego klucza lub pozostawisz magazyn kluczy i hasła w niezabezpieczonym miejscu, gdzie osoby trzecie mogłyby je znaleźć i użyć, Twoja tożsamość autora i zaufanie użytkownika zostaną zagrożone.
Jeśli osoba trzecia uzyska klucz podpisywania aplikacji bez Twojej wiedzy i zgody, może podpisać i rozpowszechnić aplikacje, które zastąpią Twoje oryginalne aplikacje lub je uszkodzą. Osoba ta może też podpisywać i rozpowszechniać aplikacje pod Twoją tożsamością, które atakują inne aplikacje lub sam system albo uszkadzają lub kradną dane użytkowników.
Klucz prywatny jest wymagany do podpisywania wszystkich przyszłych wersji aplikacji. Jeśli go zgubisz lub zgubisz, nie będzie można publikować aktualizacji dotychczasowej aplikacji. Nie można wygenerować ponownie klucza wygenerowanego wcześniej.
Twoja reputacja jako podmiotu dewelopera zależy od właściwego zabezpieczenia klucza podpisywania aplikacji przez cały czas, aż do jego wygaśnięcia. Oto kilka wskazówek dotyczących zabezpieczania klucza:
- Wybierz silne hasła dla magazynu kluczy i klucza.
- Nie przekazuj ani nie pożyczaj nikomu klucza prywatnego. Nie ujawniaj haseł do magazynu kluczy i kluczy osobom nieupoważnionym.
- 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 przestrzegasz zasad zdrowego rozsądku, klucz pozostanie bezpieczny.
Usuwanie informacji o podpisywaniu z plików kompilacji
Gdy utworzysz konfigurację podpisywania, Android Studio doda informacje o podpisywaniu w postaci tekstu w pliku build.gradle
modułu. Jeśli pracujesz w zespole lub udostępniasz kod na zasadach open source, powinieneś usunąć te informacje poufne z plików kompilacji, aby nie były łatwo dostępne dla innych. Aby to zrobić, utwórz osobny plik właściwości do przechowywania bezpiecznych informacji i odwołuj się do tego pliku w plikach kompilacji w ten sposób:
- Utwórz konfigurację podpisywania i przypisz ją do co najmniej 1 typu kompilacji. W tych instrukcjach zakładamy, że masz skonfigurowaną jedną konfigurację podpisywania dla typu kompilacji wersji, zgodnie z opisem w sekcji Konfigurowanie procesu kompilacji w celu automatycznego podpisywania aplikacji.
- W katalogu głównym projektu utwórz plik o nazwie
keystore.properties
. Plik ten powinien zawierać informacje o podpisywaniu:storePassword=myStorePassword keyPassword=mykeyPassword keyAlias=myKeyAlias storeFile=myStoreFileLocation
- W pliku
build.gradle
modułu dodaj kod, który wczyta plikkeystore.properties
przed blokiemandroid {}
.Groovy
... // 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: plik
keystore.properties
możesz przechowywać w innej lokalizacji (na przykład 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 musisz zmodyfikować kod powyżej, aby poprawnie zainicjowaćkeystorePropertiesFile
, używając rzeczywistej lokalizacji plikukeystore.properties
. - Właściwości przechowywane w
keystoreProperties
możesz odwoływać za pomocą składnikeystoreProperties['propertyName']
. Zmodyfikuj bloksigningConfigs
w plikubuild.gradle
modułu, aby odwoływał się do informacji o podpisywaniu przechowywanych w plikukeystoreProperties
, używając tej składni.Groovy
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 } } ... }
- Otwórz okno narzędzia Warianty kompilacji i upewnij się, że wybrano typ kompilacji wersji.
- W sekcji Utwórz > Utwórz pakiety > Utwórz pliki APK wybierz opcję, aby utworzyć plik APK lub pakiet aplikacji wersji produkcyjnej.
Dane wyjściowe kompilacji powinny się pojawić w katalogu
build/outputs/
Twojego modułu.
Ponieważ pliki kompilacji nie zawierają już informacji poufnych, możesz je uwzględnić w kontroli wersji lub przesłać do wspólnego repozytorium kodu źródłowego. Pamiętaj, aby chronić plik keystore.properties
. Może to obejmować usunięcie go z systemu kontroli wersji.