Publikování v Obchodě Google Play

Android vyžaduje, aby všechny aplikace byly před instalací digitálně podepsány certifikátem. Abyste mohli svou aplikaci pro Android distribuovat prostřednictvím obchodu Google Play, musí být podepsána klíčem pro vydání, který se pak musí použít pro všechny budoucí aktualizace. Od roku 2017 je možné, aby Google Play spravoval podepisování verzí automaticky díky funkci App Signing by Google Play. Před odesláním binární verze aplikace do služby Google Play je však třeba ji podepsat klíčem pro vydání. Podrobně je toto téma popsáno na stránce Podepisování aplikací v dokumentaci Android Developers. V této příručce je tento proces stručně popsán a jsou zde také uvedeny kroky potřebné k zabalení balíčku JavaScriptu.

Generování klíče pro odesílání#

Soukromý podpisový klíč můžete vygenerovat pomocí keytool. V systému Windows je třeba keytool spustit z C:\Program Files\Java\jdkx.x.x_x\bin.

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

Copy

Tento příkaz vás vyzve k zadání hesla pro úložiště klíčů a klíč a pro pole Distinguished Name pro váš klíč. Poté vygeneruje úložiště klíčů jako soubor s názvem my-upload-key.keystore.

Úložiště klíčů obsahuje jeden klíč s platností 10000 dní. Alias je jméno, které později použijete při podepisování aplikace, proto si ho nezapomeňte poznamenat.

Na počítači Mac, pokud si nejste jisti, kde se nachází složka JDK bin, proveďte následující příkaz a najděte ji:

/usr/libexec/java_home

Copy

Vypíše adresář JDK, který bude vypadat asi takto:

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

Kopírovat

Přejděte do tohoto adresáře pomocí příkazu cd /your/jdk/path a použijte příkaz keytool s oprávněním sudo, jak je uvedeno níže.

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

Kopírovat

Poznámka: Nezapomeňte soubor keystore uchovat jako soukromý. V případě, že jste ztratili klíč pro nahrávání nebo byl kompromitován, měli byste postupovat podle těchto pokynů.

Nastavení proměnných Gradle#

  1. Umístěte soubor my-upload-key.keystore do adresáře android/app ve složce projektu.
  2. Upravte soubor ~/.gradle/gradle.properties nebo android/gradle.properties a přidejte následující (nahraďte ***** správným heslem úložiště klíčů, aliasem a heslem klíče),
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Copy

Tyto budou globální proměnné Gradle, které můžeme později použít v konfiguraci Gradle pro podepisování naší aplikace.

Poznámka k zabezpečení: Pokud si nepotrpíte na ukládání hesel v otevřeném textu a používáte systém MacOS, můžete své přihlašovací údaje uložit také do aplikace Keychain Access. Pak můžete přeskočit poslední dva řádky v ~/.gradle/gradle.properties.

Přidání konfigurace podepisování do konfigurace Gradle vaší aplikace#

Posledním konfiguračním krokem, který je třeba provést, je nastavení podepisování sestavení verze pomocí nahrávacího klíče. Upravte soubor android/app/build.gradle ve složce projektu a přidejte konfiguraci podepisování,

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
}
}
}
….

Kopírovat

Generování vydání AAB#

V terminálu spusťte následující příkaz:

cd android
./gradlew bundleRelease

Zkopírujte

Gradle bundleReleasepřibalí do AAB (Android App Bundle) všechny JavaScripty potřebné ke spuštění vaší aplikace. Pokud potřebujete změnit způsob svazku JavaScriptu a/nebo kreslitelných zdrojů (např. pokud jste změnili výchozí názvy souborů/složek nebo obecnou strukturu projektu), podívejte se na android/app/build.gradle a zjistěte, jak jej můžete aktualizovat, aby tyto změny zohledňoval.

Poznámka: Ujistěte se, že gradle.properties neobsahuje org.gradle.configureondemand=true, protože to způsobí, že sestavení verze přeskočí svazování JS a zdrojů do binárky aplikace.

Vygenerovaný AAB naleznete pod android/app/build/outputs/bundle/release/app.aab a je připraven k nahrání do Google Play.

Aby Google Play akceptoval formát AAB, musí být pro vaši aplikaci v konzole Google Play nakonfigurováno podepisování aplikací Google Play. Pokud aktualizujete stávající aplikaci, která nepoužívá funkci App Signing by Google Play, podívejte se do naší sekce o migraci, kde se dozvíte, jak tuto změnu konfigurace provést.

Testování sestavení aplikace#

Před odesláním sestavení aplikace do Obchodu Play ji důkladně otestujte. Nejprve odinstalujte všechny předchozí verze aplikace, které již máte nainstalované. Nainstalujte ji do zařízení pomocí následujícího příkazu v kořenovém adresáři projektu:

npx react-native run-android –variant=release

Copy

Všimněte si, že --variant release je k dispozici pouze v případě, že jste nastavili podepisování, jak je popsáno výše.

Můžete ukončit všechny běžící instance bundleru, protože veškerý váš kód frameworku a JavaScriptu je přibalen v aktivech APK.

Publikování do jiných úložišť#

Ve výchozím nastavení obsahuje vygenerovaný APK nativní kód pro architektury CPU x86 i ARMv7a. To usnadňuje sdílení souborů APK, které běží téměř na všech zařízeních se systémem Android. Má to však tu nevýhodu, že na každém zařízení zůstane část nepoužitého nativního kódu, což vede ke zbytečně větším souborům APK.

Změnou následujícího řádku v souboru android/app/build.gradle můžete vytvořit APK pro každý procesor:

– ndk {
– abiFilters „armeabi-v7a“, „x86“
– }
– def enableSeparateBuildPerCPUArchitecture = false
+ def enableSeparateBuildPerCPUArchitecture = true

Kopírovat

Nahrajte oba tyto soubory na trhy, které podporují cílení na zařízení, například Google Play a Amazon AppStore, a uživatelé automaticky získají příslušný APK. Pokud chcete nahrávat na jiné trhy, například APKFiles, které nepodporují více souborů APK pro jednu aplikaci, změňte také následující řádek, abyste vytvořili výchozí univerzální soubor APK s binárními soubory pro oba procesory.

– universalApk false // Pokud je to pravda, vygenerujte také univerzální APK
+ universalApk true // Pokud je to pravda, vygenerujte také univerzální APK

Copy

Povolení nástroje Proguard pro snížení velikosti APK (volitelné)#

Proguard je nástroj, který může mírně snížit velikost APK. Provádí to tak, že odstraní části bajtkódu Java React Native (a jeho závislostí), které vaše aplikace nepoužívá.

DŮLEŽITÉ: Pokud jste funkci Proguard povolili, nezapomeňte aplikaci důkladně otestovat. Proguard často vyžaduje konfiguraci specifickou pro každou nativní knihovnu, kterou používáte. Viz app/proguard-rules.pro.

Chcete-li povolit Proguard, upravte android/app/build.gradle:

/**
* Spusťte Proguard, aby zmenšil bajtový kód Javy v sestaveních verze.
*/
def enableProguardInReleaseBuilds = true

Kopírovat

Migrace starých aplikací React Native pro Android, aby používaly funkci App Signing by Google Play#

Pokud migrujete z předchozí verze React Native, je pravděpodobné, že vaše aplikace nepoužívá funkci App Signing by Google Play. Doporučujeme ji povolit, abyste mohli využívat výhody, jako je automatické rozdělení aplikace. Abyste mohli přejít ze starého způsobu podepisování, musíte začít vygenerováním nového klíče pro odesílání a poté nahradit konfiguraci podepisování pro vydání v android/app/build.gradle tak, aby používala klíč pro odesílání místo klíče pro vydání (viz část o přidání konfigurace podepisování do gradle). Jakmile to uděláte, měli byste postupovat podle pokynů z webu nápovědy Google Play, abyste odeslali svůj původní klíč vydání do Google Play.

Výchozí oprávnění#

Ve výchozím nastavení je do vaší aplikace pro Android přidáno oprávnění INTERNET, protože ho používají téměř všechny aplikace. Oprávnění SYSTEM_ALERT_WINDOW je přidáno do vašeho APK pro Android v režimu ladění, ale v produkčním režimu bude odstraněno.