Android richiede che tutte le applicazioni siano firmate digitalmente con un certificato prima di poter essere installate. Al fine di distribuire la vostra applicazione Android tramite il Google Play Store, essa deve essere firmata con una chiave di rilascio che poi deve essere utilizzata per tutti gli aggiornamenti futuri. Dal 2017 è possibile per Google Play gestire le release di firma automaticamente grazie alla funzionalità App Signing by Google Play. Tuttavia, prima che il binario dell’applicazione venga caricato su Google Play, deve essere firmato con una chiave di caricamento. La pagina Signing Your Applications sulla documentazione di Android Developers descrive l’argomento in dettaglio. Questa guida copre il processo in breve, così come elenca i passi necessari per impacchettare il bundle JavaScript.
- Generare una chiave di caricamento#
- Impostare le variabili di Gradle#
- Aggiungere la configurazione di firma alla configurazione Gradle della tua app#
- Generazione del rilascio AAB#
- Testare la build di rilascio della tua applicazione#
- Pubblicare su altri store#
- Abilitare Proguard per ridurre la dimensione dell’APK (opzionale)#
- Migrare le vecchie app Android React Native per usare App Signing by Google Play#
- Permessi predefiniti#
Generare una chiave di caricamento#
Puoi generare una chiave di firma privata usando keytool
. Su Windows keytool
deve essere eseguito da C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Questo comando ti chiede le password per il keystore e la chiave e per i campi Distinguished Name per la tua chiave. Poi genera il keystore come un file chiamato my-upload-key.keystore
.
Il keystore contiene una singola chiave, valida per 10000 giorni. L’alias è un nome che userai più tardi quando firmerai la tua app, quindi ricordati di prendere nota dell’alias.
Su Mac, se non sei sicuro di dove sia la tua cartella JDK bin, esegui il seguente comando per trovarla:
Copia
Farà uscire la directory del JDK, che sarà qualcosa di simile a questo:
Copia
Naviga in quella directory usando il comando cd /your/jdk/path
e usa il comando keytool con il permesso sudo come mostrato qui sotto.
Copy
Nota: Ricordati di mantenere il file keystore privato. Nel caso tu abbia perso la chiave di caricamento o sia stata compromessa dovresti seguire queste istruzioni.
Impostare le variabili di Gradle#
- Posiziona il file
my-upload-key.keystore
sotto la directoryandroid/app
nella cartella del tuo progetto. - Modificare il file
~/.gradle/gradle.properties
oandroid/gradle.properties
, e aggiungere quanto segue (sostituire*****
con la password corretta del keystore, alias e password della chiave),
Copy
Queste saranno variabili Gradle globali, che possiamo poi usare nella nostra configurazione Gradle per firmare la nostra app.
Nota sulla sicurezza: Se non sei entusiasta di memorizzare le tue password in chiaro, e stai usando macOS, puoi anche memorizzare le tue credenziali nell’app Keychain Access. Quindi puoi saltare le due ultime righe in
~/.gradle/gradle.properties
.
Aggiungere la configurazione di firma alla configurazione Gradle della tua app#
L’ultimo passo di configurazione che deve essere fatto è quello di impostare le build di rilascio per essere firmate usando la chiave di caricamento. Modifica il file android/app/build.gradle
nella cartella del progetto e aggiungi la signing config,
Copia
Generazione del rilascio AAB#
Esegui il seguente in un terminale:
Copia
Gradle’s bundleRelease
metterà in bundle tutto il JavaScript necessario per eseguire la tua app nell’AAB (Android App Bundle). Se hai bisogno di cambiare il modo in cui il bundle JavaScript e/o le risorse disegnabili sono raggruppate (ad esempio se hai cambiato i nomi dei file/cartelle di default o la struttura generale del progetto), dai un’occhiata a android/app/build.gradle
per vedere come puoi aggiornarlo per riflettere questi cambiamenti.
Nota: Assicurati che
gradle.properties
non includaorg.gradle.configureondemand=true
perché questo farà sì che la build di rilascio salti il bundling di JS e delle risorse nel binario dell’app.
L’AAB generato può essere trovato sotto android/app/build/outputs/bundle/release/app.aab
, ed è pronto per essere caricato su Google Play.
Perché Google Play accetti il formato AAB l’App Signing by Google Play deve essere configurato per la tua applicazione sulla Google Play Console. Se stai aggiornando un’applicazione esistente che non utilizza App Signing by Google Play, controlla la nostra sezione sulla migrazione per sapere come eseguire la modifica della configurazione.
Testare la build di rilascio della tua applicazione#
Prima di caricare la build di rilascio sul Play Store, assicurati di testarla a fondo. Per prima cosa disinstalla qualsiasi versione precedente dell’app che hai già installato. Installala sul dispositivo usando il seguente comando nella root del progetto:
Copy
Nota che --variant release
è disponibile solo se hai impostato la firma come descritto sopra.
Puoi terminare qualsiasi istanza di bundler in esecuzione, poiché tutto il tuo codice framework e JavaScript è incluso nelle risorse dell’APK.
Pubblicare su altri store#
Per impostazione predefinita, l’APK generato ha il codice nativo per entrambe le architetture CPU x86 e ARMv7a. Questo rende più facile condividere APK che funzionano su quasi tutti i dispositivi Android. Tuttavia, questo ha lo svantaggio che ci sarà del codice nativo inutilizzato su qualsiasi dispositivo, portando ad APK inutilmente più grandi.
Puoi creare un APK per ogni CPU cambiando la seguente linea in android/app/build.gradle:
>
Copy
Carica entrambi questi file nei mercati che supportano il targeting del dispositivo, come Google Play e Amazon AppStore, e gli utenti otterranno automaticamente l’APK appropriato. Se vuoi caricare su altri mercati, come APKFiles, che non supportano APK multipli per una singola app, cambia anche la seguente linea per creare l’APK universale di default con binari per entrambe le CPU.
Copy
Abilitare Proguard per ridurre la dimensione dell’APK (opzionale)#
Proguard è uno strumento che può ridurre leggermente la dimensione dell’APK. Lo fa rimuovendo le parti del bytecode Java di React Native (e le sue dipendenze) che la tua app non sta utilizzando.
IMPORTANTE: Assicurati di testare accuratamente la tua app se hai abilitato Proguard. Proguard spesso richiede una configurazione specifica per ogni libreria nativa che stai usando. Vedi
app/proguard-rules.pro
.
Per abilitare Proguard, modifica android/app/build.gradle
:
Copy
Migrare le vecchie app Android React Native per usare App Signing by Google Play#
Se stai migrando dalla versione precedente di React Native è probabile che la tua app non usi la funzione App Signing by Google Play. Ti consigliamo di abilitarla per trarre vantaggio da cose come la divisione automatica delle app. Per migrare dal vecchio modo di firmare è necessario iniziare generando una nuova chiave di caricamento e quindi sostituire la configurazione di firma del rilascio in android/app/build.gradle
per utilizzare la chiave di caricamento invece di quella di rilascio (vedere la sezione sull’aggiunta della configurazione di firma a gradle). Una volta fatto ciò, dovresti seguire le istruzioni del sito web della Guida di Google Play per inviare la tua chiave di rilascio originale a Google Play.
Permessi predefiniti#
Per impostazione predefinita, l’autorizzazione INTERNET
viene aggiunta alla tua applicazione Android poiché quasi tutte le applicazioni la utilizzano. L’autorizzazione SYSTEM_ALERT_WINDOW
viene aggiunta al tuo APK Android in modalità debug ma verrà rimossa in produzione.