Przejdź do treści głównej
Wersja: 0.80

Publikowanie w sklepie Google Play

Nieoficjalne Tłumaczenie Beta

Ta strona została przetłumaczona przez PageTurner AI (beta). Nie jest oficjalnie zatwierdzona przez projekt. Znalazłeś błąd? Zgłoś problem →

System Android wymaga, aby wszystkie aplikacje były cyfrowo podpisane certyfikatem przed instalacją. Aby dystrybuować aplikację Android przez sklep Google Play, musi ona być podpisana kluczem wydania używanym do wszystkich przyszłych aktualizacji. Od 2017 roku Google Play umożliwia automatyczne zarządzanie podpisywaniem wersji dzięki funkcji App Signing by Google Play. Jednak przed przesłaniem pliku aplikacji do Google Play należy ją podpisać kluczem przesyłania. Strona Podpisywanie aplikacji w dokumentacji dla deweloperów Androida szczegółowo omawia ten temat. Ten przewodnik skrótowo opisuje proces oraz wymienia kroki potrzebne do spakowania pakietu JavaScript.

informacja

Jeśli używasz Expo, przeczytaj przewodnik Expo Wdrażanie w sklepach z aplikacjami dotyczący budowania i przesyłania aplikacji do Google Play. Ten przewodnik działa z dowolną aplikacją React Native, automatyzując proces wdrażania.

Generowanie klucza przesyłania

Możesz wygenerować prywatny klucz podpisywania za pomocą keytool.

Windows

W systemie Windows keytool musi być uruchamiany z C:\Program Files\Java\jdkx.x.x_x\bin z uprawnieniami administratora.

shell
keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

To polecenie poprosi o podanie haseł do keystore i klucza oraz pól Distinguished Name. Następnie wygeneruje keystore jako plik my-upload-key.keystore.

Keystore zawiera pojedynczy klucz ważny przez 10000 dni. Alias to nazwa, której użyjesz później przy podpisywaniu aplikacji, więc zapamiętaj ją.

macOS

W systemie macOS, jeśli nie wiesz, gdzie znajduje się folder bin JDK, wykonaj następujące polecenie, aby go znaleźć:

shell
/usr/libexec/java_home

Wyświetli katalog JDK, który będzie wyglądał mniej więcej tak:

shell
/Library/Java/JavaVirtualMachines/jdkX.X.X_XXX.jdk/Contents/Home

Przejdź do tego katalogu poleceniem cd /your/jdk/path i użyj polecenia keytool z uprawnieniami sudo, jak pokazano poniżej.

shell
sudo keytool -genkey -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
ostrzeżenie

Pamiętaj, aby zachować plik keystore w poufności. Jeśli zgubisz klucz przesyłania lub zostanie on naruszony, postępuj zgodnie z tymi instrukcjami.

Konfigurowanie zmiennych Gradle

  1. Umieść plik my-upload-key.keystore w katalogu android/app twojego projektu.

  2. Edytuj plik ~/.gradle/gradle.properties lub android/gradle.properties i dodaj następujące wpisy (zastępując ***** właściwym hasłem keystore, aliasem i hasłem klucza):

MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Będą to globalne zmienne Gradle, których później użyjemy w konfiguracji Gradle do podpisywania aplikacji.

Uwaga o używaniu gita

Zapisanie powyższych zmiennych Gradle w ~/.gradle/gradle.properties zamiast w android/gradle.properties zapobiega ich dodaniu do repozytorium git. Może być konieczne utworzenie pliku ~/.gradle/gradle.properties w katalogu domowym użytkownika przed dodaniem zmiennych.

Uwaga o bezpieczeństwie

Jeśli nie chcesz przechowywać haseł w postaci czystego tekstu i używasz macOS, możesz też przechowywać dane uwierzytelniające w aplikacji Keychain Access. Wtedy możesz pominąć dwie ostatnie linie w ~/.gradle/gradle.properties.

Dodawanie konfiguracji podpisywania do konfiguracji Gradle

Ostatnim krokiem konfiguracyjnym jest ustawienie podpisywania kompilacji wydania przy użyciu klucza przesyłania. Edytuj plik android/app/build.gradle w katalogu projektu i dodaj konfigurację podpisywania:

groovy
...
android {
...
defaultConfig { ... }
signingConfigs {
release {
if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
}
...

Generowanie pakietu AAB w wersji wydania

Wykonaj następujące polecenie w terminalu:

shell
npx react-native build-android --mode=release

To polecenie wykorzystuje pod maską bundleRelease z Gradle, które pakuje cały niezbędny kod JavaScript do uruchomienia aplikacji w formacie AAB (Android App Bundle). Jeśli potrzebujesz zmienić sposób pakowania pakietu JavaScript i/lub zasobów graficznych (np. zmieniłeś domyślne nazwy plików/folderów lub strukturę projektu), zajrzyj do pliku android/app/build.gradle, aby zobaczyć, jak możesz go zaktualizować.

uwaga

Upewnij się, że gradle.properties nie zawiera org.gradle.configureondemand=true, ponieważ spowoduje to pominięcie pakowania kodu JavaScript i zasobów do pliku binarnego aplikacji podczas budowania wersji wydania.

Wygenerowany pakiet AAB znajduje się w lokalizacji android/app/build/outputs/bundle/release/app-release.aab i jest gotowy do przesłania do Google Play.

Aby Google Play zaakceptował format AAB, należy skonfigurować funkcję Podpisywania aplikacji przez Google Play dla twojej aplikacji w konsoli Google Play. Jeśli aktualizujesz istniejącą aplikację, która nie korzysta z tej funkcji, zapoznaj się z naszą sekcją migracji, aby dowiedzieć się, jak przeprowadzić tę zmianę konfiguracji.

Testowanie wersji wydania aplikacji

Przed przesłaniem wersji wydania do sklepu Play dokładnie ją przetestuj. Najpierw odinstaluj wszystkie poprzednie wersje aplikacji. Zainstaluj wersję wydania na urządzeniu za pomocą następującego polecenia w katalogu głównym projektu:

shell
npm run android -- --mode="release"

Uwaga: flaga --mode release jest dostępna tylko wtedy, gdy skonfigurowałeś podpisywanie zgodnie z powyższym opisem.

Możesz zakończyć działające instancje bundlera, ponieważ cały kod frameworka i JavaScript jest spakowany w zasobach pliku APK.

Publikowanie w innych sklepach

Domyślnie wygenerowany plik APK zawiera natywny kod dla architektur procesora x86, x86_64, ARMv7a i ARM64-v8a. Umożliwia to udostępnianie plików APK działających na prawie wszystkich urządzeniach z Androidem. Wadą tego rozwiązania jest obecność nieużywanego kodu natywnego na każdym urządzeniu, co prowadzi do niepotrzebnie większych plików APK.

Możesz utworzyć osobny plik APK dla każdej architektury procesora, dodając następującą linię w pliku android/app/build.gradle:

diff
android {

splits {
abi {
reset()
enable true
universalApk false
include "armeabi-v7a", "arm64-v8a", "x86", "x86_64"
}
}

}

Prześlij te pliki do sklepów obsługujących targetowanie urządzeń, takich jak Amazon AppStore czy F-Droid, a użytkownicy automatycznie otrzymają odpowiedni plik APK. Jeśli chcesz publikować w innych sklepach, takich jak APKFiles, które nie obsługują wielu plików APK dla jednej aplikacji, zmień linię universalApk false na true, aby utworzyć uniwersalny plik APK z binariami dla wszystkich architektur.

Pamiętaj, że konieczne będzie również skonfigurowanie unikalnych kodów wersji, zgodnie z zaleceniami w dokumentacji Androida.

Włączanie Proguarda w celu zmniejszenia rozmiaru APK (opcjonalnie)

Proguard to narzędzie, które może nieznacznie zmniejszyć rozmiar pliku APK. Robi to poprzez usuwanie nieużywanych części bajtkodu Java React Native (i jego zależności).

Ważne

Przetestuj dokładnie aplikację po włączeniu Proguarda. Proguard często wymaga konfiguracji specyficznej dla każdej używanej biblioteki natywnej. Sprawdź plik app/proguard-rules.pro.

Aby włączyć Proguard, edytuj plik android/app/build.gradle:

groovy
/**
* Run Proguard to shrink the Java bytecode in release builds.
*/
def enableProguardInReleaseBuilds = true

Migracja starszych aplikacji React Native na Androida do korzystania z Podpisywania przez Google Play

Jeśli migrujesz z poprzedniej wersji React Native, prawdopodobnie Twoja aplikacja nie korzysta z funkcji Podpisywania aplikacji przez Google Play. Zalecamy włączenie tej funkcji, aby skorzystać z korzyści takich jak automatyczne dzielenie aplikacji. Aby przeprowadzić migrację ze starego sposobu podpisywania, musisz zacząć od wygenerowania nowego klucza do przesyłania, a następnie zastąpić konfigurację podpisywania wersji w pliku android/app/build.gradle tak, aby używała klucza do przesyłania zamiast klucza wydania (zobacz sekcję o dodawaniu konfiguracji podpisywania do Gradle). Po wykonaniu tych czynności powinieneś postępować zgodnie z instrukcjami na stronie pomocy Google Play, aby przesłać swój oryginalny klucz wydania do Google Play.

Domyślne uprawnienia

Domyślnie do Twojej aplikacji Android dodawane jest uprawnienie INTERNET, ponieważ większość aplikacji z niego korzysta. Uprawnienie SYSTEM_ALERT_WINDOW jest dodawane do Twojego pliku APK w trybie debugowania, ale zostanie usunięte w wersji produkcyjnej.