Megjelenítés a Google Play Áruházban

Az Android megköveteli, hogy minden alkalmazást digitálisan aláírjanak egy tanúsítvánnyal, mielőtt telepíthetők lennének. Ahhoz, hogy Android-alkalmazását a Google Play áruházon keresztül terjeszthesse, azt egy kiadási kulccsal kell aláírni, amelyet ezután minden jövőbeli frissítéshez használni kell. 2017 óta lehetőség van arra, hogy a Google Play automatikusan kezelje az aláírási kiadásokat az App Signing by Google Play funkciónak köszönhetően. Mielőtt azonban az alkalmazás bináris verzióját feltöltené a Google Play-be, azt egy feltöltési kulccsal alá kell írni. Az Android Developers dokumentáció Alkalmazások aláírása oldal részletesen ismerteti a témát. Ez az útmutató röviden ismerteti a folyamatot, valamint felsorolja a JavaScript-köteg csomagolásához szükséges lépéseket.

Feltöltési kulcs generálása#

A magán aláírási kulcsot a keytool segítségével generálhatja. Windows alatt az keytool-t a C:\Program Files\Java\jdkx.x.x_x\bin-ból kell futtatni.

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

Copy

Ez a parancs a keystore és a kulcs jelszavait, valamint a kulcs Distinguished Name mezőit kéri. Ezután létrehozza a kulcstárolót egy my-upload-key.keystore.

A kulcstároló egyetlen, 10000 napig érvényes kulcsot tartalmaz. Az alias egy olyan név, amelyet később az alkalmazás aláírása során fog használni, ezért ne felejtse el megjegyezni az aliast.

Macen, ha nem tudja biztosan, hogy hol van a JDK bin mappája, akkor a következő paranccsal keresse meg:

/usr/libexec/java_home

Copy

Ez ki fogja adni a JDK könyvtárát, ami valahogy így fog kinézni:

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

Másolás

Navigáljon ebbe a könyvtárba a cd /your/jdk/path paranccsal, és használja a keytool parancsot sudo jogosultsággal az alábbiak szerint.

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

Másolás

Megjegyzés: Ne feledje, hogy a keystore fájlt bizalmasan kell kezelni. Abban az esetben, ha elvesztette a feltöltőkulcsot, vagy az veszélybe került, kövesse ezeket az utasításokat.

Gradle változók beállítása#

  1. Tegye a my-upload-key.keystore fájlt a android/app könyvtár alá a projekt mappájában.
  2. Módosítsa a ~/.gradle/gradle.properties vagy android/gradle.properties fájlt, és adja hozzá a következőket (a ***** helyébe a megfelelő keystore jelszó, alias és kulcsjelszó kerüljön),
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Copy

Ezek globális Gradle változók lesznek, amelyeket később a Gradle configban használhatunk az alkalmazásunk aláírására.

A biztonságra vonatkozó megjegyzés: Ha nem szívesen tároljuk jelszavainkat nyílt szövegben, és macOS-t futtatunk, a hitelesítő adatokat a Keychain Access alkalmazásban is tárolhatjuk. Ekkor kihagyhatja a ~/.gradle/gradle.properties két utolsó sorát.

Aláírási konfiguráció hozzáadása az alkalmazás Gradle konfigurációjához#

Az utolsó konfigurációs lépés, amit el kell végezni, a release buildek beállítása a feltöltési kulcs használatával történő aláírásra. Szerkeszd a android/app/build.gradle fájlt a projekt mappádban, és add hozzá az aláírási configot,

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

Másolás

A kiadás generálása AAB#

Futtassa a következőt egy terminálban:

cd android
./gradlew bundleRelease

Másolja

Gradle bundleRelease az alkalmazás futtatásához szükséges összes JavaScriptet az AAB-be (Android App Bundle). Ha meg kell változtatnia a JavaScript-köteg és/vagy a rajzolható erőforrások kötegelésének módját (pl. ha megváltoztatta az alapértelmezett fájl-/mappaneveket vagy a projekt általános szerkezetét), nézze meg a android/app/build.gradle-t, hogy megtudja, hogyan tudja frissíteni, hogy tükrözze ezeket a változásokat.

Megjegyzés: Győződjön meg róla, hogy a gradle.properties nem tartalmazza a org.gradle.configureondemand=true-t, mivel ez azt eredményezi, hogy a release build kihagyja a JS és az eszközök kötegelését az alkalmazás binárisába.

A generált AAB a android/app/build/outputs/bundle/release/app.aab alatt található, és készen áll a Google Play-be való feltöltésre.

Hogy a Google Play elfogadja az AAB formátumot, az App Signing by Google Play-t be kell állítani az alkalmazáshoz a Google Play konzolon. Ha olyan meglévő alkalmazást frissít, amely nem használja az App Signing by Google Play-t, kérjük, olvassa el a migrációs szakaszunkat, hogy megtudja, hogyan végezze el ezt a konfigurációs módosítást.

Az alkalmazás kiadási buildjének tesztelése#

A kiadási build Play Store-ba történő feltöltése előtt mindenképpen alaposan tesztelje azt. Először távolítsa el az alkalmazás minden korábbi, már telepített verzióját. Telepítse az eszközre a következő paranccsal a projekt gyökerében:

npx react-native run-android –variant=release

Copy

Megjegyezzük, hogy a --variant release csak akkor érhető el, ha a fent leírtak szerint beállította az aláírást.

Minden futó bundler-példányt megszüntethet, mivel az összes keretrendszer- és JavaScript-kódja az APK eszközeibe kerül.

Más áruházakba való közzététel#

A generált APK alapértelmezés szerint mind az x86, mind az ARMv7a CPU-architektúrákhoz tartalmazza a natív kódot. Ez megkönnyíti a szinte minden Android-eszközön futtatható APK-k megosztását. Ennek azonban megvan az a hátránya, hogy minden eszközön marad némi fel nem használt natív kód, ami szükségtelenül nagyobb APK-kat eredményez.

Az android/app/build.gradle állományban a következő sor módosításával létrehozhat egy APK-t minden CPU-hoz:

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

Copy

Töltsük fel mindkét fájlt az eszközcélzást támogató piacokra, mint például a Google Play és az Amazon AppStore, és a felhasználók automatikusan megkapják a megfelelő APK-kat. Ha más piacokra, például az APKFiles-ra szeretnéd feltölteni, amelyek nem támogatnak több APK-t egyetlen alkalmazáshoz, akkor a következő sort is változtasd meg, hogy létrehozd az alapértelmezett univerzális APK-t mindkét processzorhoz való binárisokkal.

– universalApk false // Ha igaz, univerzális APK-t is generál
+ universalApk true // Ha igaz, univerzális APK-t is generál

Copy

Enabling Proguard to reduce the size of the APK (optional)#

A Proguard egy olyan eszköz, amely kissé csökkentheti az APK méretét. Ezt úgy éri el, hogy eltávolítja a React Native Java bájtkód (és függőségeinek) azon részeit, amelyeket az alkalmazás nem használ.

FONTOS: Győződjön meg róla, hogy alaposan teszteli az alkalmazását, ha engedélyezte a Proguardot. A Proguard gyakran az egyes használt natív könyvtárakra jellemző konfigurációt igényel. Lásd app/proguard-rules.pro.

A Proguard engedélyezéséhez szerkessze a android/app/build.gradle:

/**
* Futtassa a Proguardot a Java bytecode zsugorításához a release buildekben.
*/
def enableProguardInReleaseBuilds = true

Copy

Régi Android React Native alkalmazások migrálása az App Signing by Google Play használatára#

Ha a React Native korábbi verziójáról migrálsz, akkor jó eséllyel az alkalmazásod nem használja az App Signing by Google Play funkciót. Javasoljuk, hogy engedélyezze ezt, hogy kihasználhassa az olyan dolgok előnyeit, mint az automatikus alkalmazásfelosztás. Ahhoz, hogy áttérj a régi aláírási módról, új feltöltési kulcs generálásával kell kezdened, majd a android/app/build.gradle-ben lévő release signing configot le kell cserélned, hogy a feltöltési kulcsot használd a release helyett (lásd az aláírási config gradle-hez való hozzáadásáról szóló részt). Ha ez megtörtént, kövesse a Google Play súgó weboldalán található utasításokat, hogy elküldje az eredeti kiadási kulcsot a Google Play-nek.

Alapértelmezett engedélyek#

Az Android alkalmazáshoz alapértelmezés szerint a INTERNET engedélyt adjuk hozzá, mivel nagyjából minden alkalmazás ezt használja. A SYSTEM_ALERT_WINDOW engedély debug üzemmódban hozzáadódik az Android APK-hoz, de a gyártásban eltávolításra kerül.