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í#
- Nastavení proměnných Gradle#
- Přidání konfigurace podepisování do konfigurace Gradle vaší aplikace#
- Generování vydání AAB#
- Testování sestavení aplikace#
- Publikování do jiných úložišť#
- Povolení nástroje Proguard pro snížení velikosti APK (volitelné)#
- Migrace starých aplikací React Native pro Android, aby používaly funkci App Signing by Google Play#
- Výchozí oprávnění#
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
.
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:
Copy
Vypíše adresář JDK, který bude vypadat asi takto:
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.
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#
- Umístěte soubor
my-upload-key.keystore
do adresářeandroid/app
ve složce projektu. - Upravte soubor
~/.gradle/gradle.properties
neboandroid/gradle.properties
a přidejte následující (nahraďte*****
správným heslem úložiště klíčů, aliasem a heslem klíče),
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í,
Kopírovat
Generování vydání AAB#
V terminálu spusťte následující příkaz:
Zkopírujte
Gradle bundleRelease
př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
neobsahujeorg.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:
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:
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.
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
:
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.