Android wymaga, aby wszystkie aplikacje były cyfrowo podpisane certyfikatem, zanim będą mogły być zainstalowane. Aby dystrybuować swoją aplikację Android za pośrednictwem sklepu Google Play, musi ona być podpisana kluczem wydania, który następnie musi być używany dla wszystkich przyszłych aktualizacji. Od 2017 roku możliwe jest, aby Google Play zarządzał podpisywaniem wydań automatycznie dzięki funkcjonalności App Signing by Google Play. Zanim jednak binarna wersja aplikacji zostanie przesłana do Google Play, musi zostać podpisana za pomocą klucza przesyłania. Strona Podpisywanie aplikacji w dokumentacji Android Developers szczegółowo opisuje ten temat. Ten przewodnik omawia ten proces w skrócie, jak również wymienia kroki wymagane do spakowania pakietu JavaScript.
- Generowanie klucza przesyłania#
- Konfigurowanie zmiennych Gradle#
- Dodawanie konfiguracji podpisywania do konfiguracji Gradle twojej aplikacji#
- Generowanie wydania AAB#
- Testowanie kompilacji twojej aplikacji#
- Publikowanie do innych sklepów#
- Włączenie Proguard, aby zmniejszyć rozmiar APK (opcjonalnie)#
- Migracja starych aplikacji Android React Native do korzystania z App Signing by Google Play#
- Domyślne uprawnienia#
Generowanie klucza przesyłania#
Możesz wygenerować prywatny klucz podpisywania przy użyciu keytool
. W systemie Windows keytool
musi być uruchamiany z poziomu C:\Program Files\Java\jdkx.x.x_x\bin
.
Kopiuj
To polecenie prosi o podanie haseł dla keystore i klucza oraz pól Distinguished Name dla klucza. Następnie generuje katalog kluczy jako plik o nazwie my-upload-key.keystore
.
Katalog kluczy zawiera pojedynczy klucz, ważny przez 10000 dni. Alias jest nazwą, której będziesz używał później podczas podpisywania aplikacji, więc pamiętaj, aby zwrócić uwagę na alias.
Na Macu, jeśli nie jesteś pewien, gdzie jest folder JDK bin, wykonaj następujące polecenie, aby go znaleźć:
Kopiuj
Wyświetli ono katalog JDK, który będzie wyglądał mniej więcej tak:
Kopiuj
Nawiguj do tego katalogu za pomocą polecenia cd /your/jdk/path
i użyj polecenia keytool z uprawnieniami sudo, jak pokazano poniżej.
Kopiuj
Uwaga: Pamiętaj, aby zachować prywatność pliku keystore. W przypadku utraty klucza uploadu lub jego kompromitacji należy postępować zgodnie z poniższymi instrukcjami.
Konfigurowanie zmiennych Gradle#
- Umieść plik
my-upload-key.keystore
pod katalogiemandroid/app
w folderze projektu. - Edytuj plik
~/.gradle/gradle.properties
lubandroid/gradle.properties
i dodaj następujące elementy (zastąp*****
prawidłowym hasłem keystore, aliasem i hasłem klucza),
Kopiuj
Będą to globalne zmienne Gradle, których możemy później użyć w naszym configu Gradle do podpisania naszej aplikacji.
Uwaga na temat bezpieczeństwa: Jeśli nie przepadasz za przechowywaniem haseł w plaintext, a korzystasz z macOS, możesz również przechowywać swoje dane uwierzytelniające w aplikacji Keychain Access. Wtedy możesz pominąć dwa ostatnie wiersze w
~/.gradle/gradle.properties
.
Dodawanie konfiguracji podpisywania do konfiguracji Gradle twojej aplikacji#
Ostatnim krokiem konfiguracyjnym, który należy wykonać, jest ustawienie kompilacji wydania, aby były podpisywane przy użyciu klucza przesyłania. Edytuj plik android/app/build.gradle
w folderze projektu i dodaj konfigurację podpisywania,
Kopiuj
Generowanie wydania AAB#
Uruchom poniższe w terminalu:
Skopiuj
Gradle’s bundleRelease
zapakuje cały JavaScript potrzebny do uruchomienia Twojej aplikacji w AAB (Android App Bundle). Jeśli musisz zmienić sposób, w jaki pakiet JavaScript i/lub zasoby drawable są dołączone (np. jeśli zmieniłeś domyślne nazwy plików/folderów lub ogólną strukturę projektu), spójrz na android/app/build.gradle
, aby zobaczyć, jak możesz go zaktualizować, aby odzwierciedlić te zmiany.
Uwaga: Upewnij się, że
gradle.properties
nie zawieraorg.gradle.configureondemand=true
, ponieważ spowoduje to, że kompilacja wydania pominie dołączanie JS i zasobów do binarki aplikacji.
Generowany AAB można znaleźć pod android/app/build/outputs/bundle/release/app.aab
, i jest gotowy do przesłania do Google Play.
Aby Google Play zaakceptował format AAB, App Signing by Google Play musi być skonfigurowany dla Twojej aplikacji w Google Play Console. Jeśli aktualizujesz istniejącą aplikację, która nie używa podpisywania aplikacji przez Google Play, sprawdź naszą sekcję dotyczącą migracji, aby dowiedzieć się, jak przeprowadzić tę zmianę konfiguracji.
Testowanie kompilacji twojej aplikacji#
Przed wysłaniem kompilacji do Sklepu Play, upewnij się, że dokładnie ją przetestowałeś. Najpierw odinstaluj wszystkie poprzednie wersje aplikacji, które masz już zainstalowane. Zainstaluj ją na urządzeniu za pomocą następującego polecenia w korzeniu projektu:
Copy
Zauważ, że --variant release
jest dostępne tylko wtedy, gdy skonfigurowałeś podpisywanie w sposób opisany powyżej.
Możesz zakończyć każdą działającą instancję bundlera, ponieważ cały twój kod frameworka i JavaScript jest dołączony do aktywów APK.
Publikowanie do innych sklepów#
Domyślnie, wygenerowany APK ma natywny kod dla obu architektur procesorów x86 i ARMv7a. Ułatwia to udostępnianie APK, które działają na prawie wszystkich urządzeniach z Androidem. Jednak ma to tę wadę, że na każdym urządzeniu będzie trochę nieużywanego kodu natywnego, co prowadzi do niepotrzebnie większych APK.
Możesz utworzyć APK dla każdego procesora, zmieniając następującą linię w android/app/build.gradle:
Copy
Wgraj oba te pliki na rynki, które obsługują targetowanie urządzeń, takie jak Google Play i Amazon AppStore, a użytkownicy automatycznie otrzymają odpowiedni APK. Jeśli chcesz wysyłać na inne rynki, takie jak APKFiles, które nie obsługują wielu APK dla jednej aplikacji, zmień również poniższą linię, aby utworzyć domyślny uniwersalny APK z binariami dla obu procesorów.
Kopiuj
Włączenie Proguard, aby zmniejszyć rozmiar APK (opcjonalnie)#
Proguard jest narzędziem, które może nieznacznie zmniejszyć rozmiar APK. Robi to poprzez usunięcie części kodu bajtowego React Native Java (i jego zależności), których twoja aplikacja nie używa.
WAŻNE: Upewnij się, że dokładnie przetestowałeś swoją aplikację, jeśli włączyłeś Proguard. Proguard często wymaga konfiguracji specyficznej dla każdej biblioteki natywnej, której używasz. Zobacz
app/proguard-rules.pro
.
Aby włączyć Proguard, edytuj android/app/build.gradle
:
Kopiuj
Migracja starych aplikacji Android React Native do korzystania z App Signing by Google Play#
Jeśli migrujesz z poprzedniej wersji React Native, są szanse, że Twoja aplikacja nie używa funkcji App Signing by Google Play. Zalecamy włączenie jej, aby móc korzystać z takich rzeczy jak automatyczne dzielenie aplikacji. W celu migracji ze starego sposobu podpisywania musisz zacząć od wygenerowania nowego klucza uploadu, a następnie zastąpienia release signing config w android/app/build.gradle
aby użyć klucza uploadu zamiast release (zobacz sekcję o dodawaniu signing config do gradle). Gdy to zrobisz, powinieneś postępować zgodnie z instrukcjami na stronie pomocy Google Play, aby wysłać swój oryginalny klucz wydania do Google Play.
Domyślne uprawnienia#
Domyślnie, INTERNET
uprawnienie jest dodane do twojej aplikacji na Androida, ponieważ prawie wszystkie aplikacje go używają. Uprawnienie SYSTEM_ALERT_WINDOW
jest dodane do twojego APK Androida w trybie debugowania, ale zostanie usunięte w produkcji.