Publicarea în Google Play Store

Android cere ca toate aplicațiile să fie semnate digital cu un certificat înainte de a putea fi instalate. Pentru a distribui aplicația Android prin intermediul magazinului Google Play, aceasta trebuie să fie semnată cu o cheie de lansare care trebuie apoi să fie utilizată pentru toate actualizările viitoare. Din 2017, este posibil ca Google Play să gestioneze automat semnarea versiunilor de lansare datorită funcționalității App Signing by Google Play. Cu toate acestea, înainte ca binarul aplicației dvs. să fie încărcat în Google Play, acesta trebuie să fie semnat cu o cheie de încărcare. Pagina Semnarea aplicațiilor dvs. din documentația Android Developers descrie subiectul în detaliu. Acest ghid acoperă procesul pe scurt, precum și enumeră pașii necesari pentru a împacheta pachetul JavaScript.

Generarea unei chei de încărcare#

Puteți genera o cheie de semnare privată folosind keytool. Pe Windows, keytool trebuie să fie rulat din 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

Această comandă vă solicită parolele pentru keystore și cheie și pentru câmpurile Distinguished Name pentru cheia dumneavoastră. Apoi generează depozitul de chei ca fișier numit my-upload-key.keystore.

Depozitul de chei conține o singură cheie, valabilă timp de 10000 de zile. Aliasul este un nume pe care îl veți folosi mai târziu când vă veți semna aplicația, așa că nu uitați să rețineți aliasul.

Pe Mac, dacă nu sunteți sigur unde se află dosarul JDK bin, atunci executați următoarea comandă pentru a-l găsi:

/usr/libexec/java_home

Copy

Aceasta va afișa directorul JDK, care va arăta cam așa:

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

Copiază

Navigați în acel director utilizând comanda cd /your/jdk/path și utilizați comanda keytool cu permisiunea sudo, așa cum se arată mai jos.

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

Copy

Nota: Nu uitați să păstrați fișierul keystore privat. În cazul în care ați pierdut cheia de încărcare sau aceasta a fost compromisă, trebuie să urmați aceste instrucțiuni.

Configurarea variabilelor Gradle#

  1. Plasați fișierul my-upload-key.keystore în directorul android/app din dosarul proiectului dvs.
  2. Editați fișierul ~/.gradle/gradle.properties sau android/gradle.properties și adăugați următoarele (înlocuiți ***** cu parola keystore corectă, aliasul și parola cheii),

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

Copy

Acestea vor fi variabile Gradle globale, pe care le putem folosi mai târziu în configurația noastră Gradle pentru a semna aplicația noastră.

Nota despre securitate: Dacă nu sunteți dornici să vă stocați parolele în text simplu și folosiți macOS, puteți, de asemenea, să vă stocați acreditările în aplicația Keychain Access. Atunci puteți sări peste ultimele două rânduri din ~/.gradle/gradle.properties.

Adăugarea configurării de semnare la configurația Gradle a aplicației dumneavoastră#

Ultimul pas de configurare care trebuie făcut este să configurați construcțiile de lansare pentru a fi semnate folosind cheia de încărcare. Editați fișierul android/app/build.gradle din dosarul proiectului dvs. și adăugați configurația de semnare,

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

Copy

Generarea versiunii AAB#

Executați următoarele într-un terminal:

cd android
./gradlew bundleRelease

Copiați

Gradle’s bundleRelease va grupa tot JavaScript-ul necesar pentru a vă rula aplicația în AAB (Android App Bundle). Dacă trebuie să modificați modul în care sunt grupate pachetul JavaScript și/sau resursele desenabile (de exemplu, dacă ați schimbat numele implicite ale fișierelor/folderelor sau structura generală a proiectului), aruncați o privire la android/app/build.gradle pentru a vedea cum puteți să o actualizați pentru a reflecta aceste modificări.

Nota: Asigurați-vă că gradle.properties nu include org.gradle.configureondemand=true, deoarece acest lucru va face ca versiunea de compilare să omită gruparea JS și a resurselor în binarul aplicației.

AAB-ul generat poate fi găsit sub android/app/build/outputs/bundle/release/app.aab și este gata să fie încărcat în Google Play.

Pentru ca Google Play să accepte formatul AAB, App Signing by Google Play trebuie să fie configurat pentru aplicația dvs. în Google Play Console. Dacă actualizați o aplicație existentă care nu utilizează App Signing by Google Play, vă rugăm să consultați secțiunea noastră de migrare pentru a afla cum să efectuați această modificare de configurare.

Testarea versiunii de lansare a aplicației dumneavoastră#

Înainte de a încărca versiunea de lansare în Play Store, asigurați-vă că o testați temeinic. Mai întâi dezinstalați orice versiune anterioară a aplicației pe care o aveți deja instalată. Instalați-o pe dispozitiv folosind următoarea comandă în rădăcina proiectului:

npx react-native run-android –variant=release

Copy

Rețineți că --variant release este disponibil numai dacă ați configurat semnarea așa cum am descris mai sus.

Puteți încheia orice instanță bundler care rulează, deoarece tot codul framework și JavaScript este inclus în activele APK-ului.

Publicarea în alte magazine#

În mod implicit, APK-ul generat are codul nativ pentru ambele arhitecturi CPU x86 și ARMv7a. Acest lucru facilitează partajarea APK-urilor care rulează pe aproape toate dispozitivele Android. Cu toate acestea, acest lucru are dezavantajul că va exista o parte din codul nativ nefolosit pe orice dispozitiv, ceea ce duce la APK-uri inutil de mari.

Puteți crea un APK pentru fiecare CPU modificând următoarea linie din android/app/build.gradle:

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

Copy

Încărcați aceste două fișiere pe piețele care acceptă direcționarea către dispozitive, cum ar fi Google Play și Amazon AppStore, iar utilizatorii vor primi automat APK-ul corespunzător. Dacă doriți să încărcați pe alte piețe, cum ar fi APKFiles, care nu acceptă mai multe APK-uri pentru o singură aplicație, modificați și următoarea linie pentru a crea APK-ul universal implicit cu binare pentru ambele unități centrale de procesare.

– universalApk false // Dacă este adevărat, generați și un APK universal
+ universalApk true // Dacă este adevărat, generați și un APK universal

Copy

Activarea Proguard pentru a reduce dimensiunea APK-ului (opțional)#

Proguard este un instrument care poate reduce ușor dimensiunea APK-ului. Face acest lucru prin eliminarea părților din bytecode-ul Java React Native (și a dependențelor sale) pe care aplicația dvs. nu le utilizează.

IMPORTANT: Asigurați-vă că testați temeinic aplicația dvs. dacă ați activat Proguard. Proguard necesită adesea o configurație specifică fiecărei biblioteci native pe care o utilizați. Consultați app/proguard-rules.pro.

Pentru a activa Proguard, editați android/app/build.gradle:

/**
* Rulați Proguard pentru a micșora codul byte Java în compilările de lansare.
*/
def enableProguardInReleaseBuilds = true

Copy

Migrarea vechilor aplicații Android React Native pentru a utiliza App Signing by Google Play#

Dacă migrați de la o versiune anterioară de React Native sunt șanse ca aplicația dvs. să nu utilizeze funcția App Signing by Google Play. Vă recomandăm să o activați pentru a beneficia de lucruri precum divizarea automată a aplicațiilor. Pentru a migra de la vechiul mod de semnare, trebuie să începeți prin a genera o nouă cheie de încărcare și apoi să înlocuiți configurația de semnare a versiunii de lansare din android/app/build.gradle pentru a utiliza cheia de încărcare în locul celei de lansare (consultați secțiunea despre adăugarea configurației de semnare în gradle). După ce ați făcut acest lucru, trebuie să urmați instrucțiunile de pe site-ul Google Play Help pentru a trimite cheia de lansare originală către Google Play.

Default Permissions#

În mod implicit, permisiunea INTERNET este adăugată aplicației Android, deoarece aproape toate aplicațiile o folosesc. SYSTEM_ALERT_WINDOW permisiunea SYSTEM_ALERT_WINDOW este adăugată la APK-ul dvs. Android în modul de depanare, dar va fi eliminată în producție.