Julkaiseminen Google Play Storeen

Android vaatii, että kaikki sovellukset on allekirjoitettava digitaalisesti sertifikaatilla ennen kuin ne voidaan asentaa. Jotta voit levittää Android-sovellustasi Google Play -kaupan kautta, se on allekirjoitettava julkaisuavaimella, jota on sitten käytettävä kaikissa tulevissa päivityksissä. Vuodesta 2017 lähtien Google Play on voinut hallinnoida allekirjoitettuja julkaisuja automaattisesti App Signing by Google Play -toiminnon ansiosta. Ennen kuin sovelluksen binääri ladataan Google Playyn, se on kuitenkin allekirjoitettava latausavaimella. Android Developers -dokumentaation sivulla Signing Your Applications (Sovellusten allekirjoittaminen) kuvataan aihetta yksityiskohtaisesti. Tässä oppaassa käsitellään prosessia lyhyesti ja luetellaan JavaScript-paketin paketoimiseen tarvittavat vaiheet.

Latausavaimen luominen#

Voit luoda yksityisen allekirjoitusavaimen käyttämällä keytool. Windowsissa keytool on ajettava C:\Program Files\Java\jdkx.x.x_x\bin:sta.

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

Kopioi

Tämä komento kysyy salasanoja keystorelle ja avaimelle sekä avaimen Distinguished Name -kenttiin. Sen jälkeen se luo avainsäilön tiedostoksi nimeltä my-upload-key.keystore.

Keystore sisältää yhden avaimen, joka on voimassa 10000 päivää. Alias on nimi, jota käytät myöhemmin sovellusta allekirjoittaessasi, joten muista huomioida alias.

Macissa, jos et ole varma, missä JDK bin -kansiosi on, suorita seuraava komento löytääksesi sen:

/usr/libexec/java_home

Kopioi

Tuloksena on JDK:n hakemisto, joka näyttää jotakuinkin tältä:

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

Kopioi

Navigoi tuohon hakemistoon komennolla cd /your/jdk/path ja käytä komentoa keytool sudo-oikeuksin alla esitetyllä tavalla.

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

Kopioi

Huomautus: Muista pitää avaintallennustietokanta yksityisenä. Jos olet kadottanut latausavaimen tai se on vaarantunut, noudata näitä ohjeita.

Gradle-muuttujien määrittäminen#

  1. Sijoita my-upload-key.keystore-tiedosto android/app-hakemiston alle android/app projektikansiossa.
  2. Muokkaa tiedostoa ~/.gradle/gradle.properties tai android/gradle.properties ja lisää seuraava (korvaa ***** oikealla keystore-salasanalla, aliaksella ja avaimen salasanalla),
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****

Kopioi

Näistä tulee globaalit Gradle-muuttujat, joita käytämme myöhemmin Gradle-konfiguraatiossamme sovelluksemme allekirjoittamiseksi.

Huomautus tietoturvasta: Jos et halua tallentaa salasanojasi selväkielisinä ja käytät macOS:ää, voit tallentaa tunnistetietosi myös Keychain Access -sovellukseen. Silloin voit ohittaa kaksi viimeistä riviä kohdassa ~/.gradle/gradle.properties.

Allekirjoituskonfiguraation lisääminen sovelluksen Gradle-konfiguraatioon#

Viimeinen konfigurointivaihe, joka on tehtävä, on release-buildien asettaminen allekirjoitettavaksi upload-avaimen avulla. Muokkaa projektikansiossa olevaa tiedostoa android/app/build.gradle ja lisää allekirjoituskonfig,

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

Kopioi

Julkaisun luominen AAB#

Suorita terminaalissa seuraava:

cd android
./gradlew bundleRelease

Kopioi

Gradlen bundleRelease niputtaa kaikki sovelluksesi suorittamiseen tarvittavat JavaScriptit AAB:hen (Android App Bundle). Jos sinun täytyy muuttaa tapaa, jolla JavaScript-kimppu ja/tai piirrettävät resurssit niputetaan (esim. jos olet muuttanut oletustiedostojen/-kansioiden nimiä tai projektin yleistä rakennetta), katso android/app/build.gradle, miten voit päivittää sen vastaamaan näitä muutoksia.

Huomautus: Varmista, että gradle.properties ei sisällä org.gradle.configureondemand=true:tä, sillä se saa julkaisubuildin ohittamaan JS:n ja resurssien niputtamisen sovelluksen binääriin.

Luotu AAB löytyy kohdasta android/app/build/outputs/bundle/release/app.aab, ja se on valmis ladattavaksi Google Playyn.

Jotta Google Play hyväksyisi AAB-muodon, App Signing by Google Play on määritettävä sovelluksellesi Google Play Consolessa. Jos päivität olemassa olevaa sovellusta, joka ei käytä App Signing by Google Play -toimintoa, tutustu migraatio-osiossa siihen, miten tämä määritysmuutos tehdään.

Sovelluksen julkaisurakennuksen testaaminen#

Ennen kuin lataat julkaisurakennuksen Play-kauppaan, varmista, että testaat sen perusteellisesti. Poista ensin kaikki sovelluksen aiemmat versiot, jotka sinulla on jo asennettuna. Asenna se laitteeseen seuraavalla komennolla projektin juuressa:

npx react-native run-android –variant=release

Kopioi

Huomaa, että --variant release on käytettävissä vain, jos olet määrittänyt allekirjoittamisen edellä kuvatulla tavalla.

Voit lopettaa kaikki käynnissä olevat bundler-instanssit, koska kaikki kehys- ja JavaScript-koodisi on niputettu APK:n omaisuuseriin.

Julkaiseminen muihin kauppoihin#

Luotu APK sisältää oletusarvoisesti natiivikoodin sekä x86- että ARMv7a-suoritinarkkitehtuurille. Tämä helpottaa lähes kaikissa Android-laitteissa toimivien APK:iden jakamista. Tässä on kuitenkin se haittapuoli, että jokaiseen laitteeseen jää jonkin verran käyttämätöntä natiivikoodia, mikä johtaa tarpeettoman suuriin APK:ihin.

Voit luoda APK:n kullekin suorittimelle muuttamalla seuraavaa riviä android/app/build.gradle-tiedostossa:

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

Kopioi

Lataa molemmat tiedostot markkinoille, jotka tukevat laitekohtaista kohdentamista, kuten Google Playyn ja Amazonin AppStoreen, ja käyttäjät saavat automaattisesti sopivan APK:n. Jos haluat ladata muille markkinoille, kuten APKFilesiin, jotka eivät tue useita APK-tiedostoja yhdelle sovellukselle, muuta myös seuraavaa riviä luodaksesi oletusarvoisen universaalin APK:n, jossa on binäärit molemmille suorittimille.

– universalApk false // Jos totta, luo myös universaalin APK:n
+ universalApk true // Jos totta, luo myös universaalin APK:n

Kopioi

Proguardin ottaminen käyttöön APK:n koon pienentämiseksi (valinnainen)#

Proguardin käyttöön ottaminen APK:n koon vähentämiseksi (valinnainen)#

Proguardin avulla APK-kokoa voidaan pienentää hieman. Se tekee tämän poistamalla React Native -Javan tavukoodin (ja sen riippuvuuksien) osat, joita sovelluksesi ei käytä.

TÄRKEÄÄ: Muista testata sovelluksesi perusteellisesti, jos olet ottanut Proguardin käyttöön. Proguard vaatii usein kullekin käyttämällesi natiivikirjastolle ominaista konfigurointia. Katso app/proguard-rules.pro.

Voidaksesi ottaa Proguardin käyttöön, muokkaa android/app/build.gradle:

/**
* Suorita Proguard kutistaaksesi Java-tytekoodin julkaisuversioissa.
*/
def enableProguardInReleaseBuilds = true

Kopioi

Vanhojen Android React Native -sovellusten siirtäminen käyttämään App Signing by Google Play -ominaisuutta#

Jos olet siirtymässä aiemmasta React Native -versiosta, on todennäköistä, että sovelluksessasi ei hyödynnetä sovelluksen allekirjoittaminen Googlen Play-ominaisuutta. Suosittelemme, että otat sen käyttöön, jotta voit hyödyntää asioita, kuten sovelluksen automaattista jakamista. Siirtyäksesi vanhasta tavasta allekirjoittaa sinun on aloitettava luomalla uusi latausavain ja korvattava sitten julkaisun allekirjoitusasetukset android/app/build.gradle:ssä käyttämään latausavainta julkaisuavaimen sijasta (katso osio allekirjoitusasetusten lisäämisestä gradleen). Kun tämä on tehty, sinun tulee noudattaa Google Play Help -sivuston ohjeita alkuperäisen julkaisuavaimen lähettämiseksi Google Playyn.

Oletusoikeudet#

Oletusarvoisesti INTERNET-oikeus lisätään Android-sovellukseesi, koska lähes kaikki sovellukset käyttävät sitä. SYSTEM_ALERT_WINDOW -oikeus lisätään Android APK:si debug-tilassa, mutta se poistetaan tuotannossa.