Android vereist dat alle apps digitaal worden ondertekend met een certificaat voordat ze kunnen worden geïnstalleerd. Om uw Android applicatie via Google Play store te distribueren moet deze ondertekend worden met een release key die vervolgens gebruikt moet worden voor alle toekomstige updates. Sinds 2017 is het mogelijk voor Google Play om het ondertekenen van releases automatisch te beheren dankzij de App Signing by Google Play functionaliteit. Voordat de binary van uw applicatie wordt geüpload naar Google Play moet deze echter worden ondertekend met een uploadsleutel. De pagina Uw applicaties ondertekenen op de Android-ontwikkelaarsdocumentatie beschrijft het onderwerp in detail. Deze gids behandelt het proces in het kort, evenals een lijst van de stappen die nodig zijn om de JavaScript-bundel te verpakken.
- Het genereren van een upload-sleutel#
- Gradle-variabelen instellen#
- De ondertekeningsconfiguratie toevoegen aan de Gradle-configuratie van uw app#
- Genereren van de release AAB#
- Het testen van de release build van uw app#
- Publiceren naar andere winkels#
- Proguard inschakelen om de grootte van de APK te verkleinen (optioneel)#
- Oude Android React Native-apps migreren om App Signing by Google Play te gebruiken#
- Standaardmachtigingen#
Het genereren van een upload-sleutel#
U kunt een private ondertekeningssleutel genereren met keytool
. Onder Windows moet keytool
worden uitgevoerd vanuit C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Dit commando vraagt u om wachtwoorden voor de sleutelbewaarplaats en sleutel en om de Distinguished Name-velden voor uw sleutel. Vervolgens wordt de sleutelbewaarplaats gegenereerd als een bestand met de naam my-upload-key.keystore
.
De sleutelbewaarplaats bevat een enkele sleutel, die 10000 dagen geldig is. De alias is een naam die u later zult gebruiken bij het ondertekenen van uw app, dus vergeet niet om de alias te noteren.
Op de Mac, als u niet zeker weet waar uw JDK bin folder is, voer dan het volgende commando uit om het te vinden:
Copy
Hieruit komt de directory van de JDK, die er ongeveer zo uit zal zien:
Kopiëren
Navigeer naar die map met het commando cd /your/jdk/path
en gebruik het commando keytool met sudo-toestemming zoals hieronder wordt weergegeven.
Copy
Note: Vergeet niet om het keystore bestand prive te houden. In het geval dat u de uploadsleutel bent kwijtgeraakt of deze is gecompromitteerd, dient u deze instructies op te volgen.
Gradle-variabelen instellen#
- Plaats het
my-upload-key.keystore
-bestand onder deandroid/app
map in uw projectmap. - Bewerk het bestand
~/.gradle/gradle.properties
ofandroid/gradle.properties
, en voeg het volgende toe (vervang*****
door het juiste keystore wachtwoord, alias en sleutel wachtwoord),
Copy
Dit worden globale Gradle-variabelen, die we later in onze Gradle-config kunnen gebruiken om onze app te ondertekenen.
Note over veiligheid: Als je er niet van houdt om je wachtwoorden in platte tekst op te slaan, en je draait macOS, dan kun je je credentials ook opslaan in de Keychain Access-app. Dan kunt u de laatste twee rijen in
~/.gradle/gradle.properties
overslaan.
De ondertekeningsconfiguratie toevoegen aan de Gradle-configuratie van uw app#
De laatste configuratiestap die moet worden uitgevoerd, is het instellen van release builds om te worden ondertekend met de uploadsleutel. Bewerk het bestand android/app/build.gradle
in uw projectmap, en voeg de ondertekeningsconfig,
Kopiëren
Genereren van de release AAB#
Run het volgende in een terminal:
Copy
Gradle’s bundleRelease
zal alle JavaScript die nodig is om uw app uit te voeren bundelen in de AAB (Android App Bundle). Als u de manier waarop de JavaScript-bundel en/of de tekenbare bronnen worden gebundeld, moet wijzigen (bijvoorbeeld als u de standaard bestands-/mapnamen of de algemene structuur van het project hebt gewijzigd), bekijkt u android/app/build.gradle
om te zien hoe u deze kunt bijwerken om deze wijzigingen weer te geven.
Note: zorg ervoor dat
gradle.properties
org.gradle.configureondemand=true
niet bevat, omdat dit ervoor zorgt dat de release build de bundeling van JS en assets in de app binary overslaat.
De gegenereerde AAB kan worden gevonden onder android/app/build/outputs/bundle/release/app.aab
, en is klaar om te worden geüpload naar Google Play.
Om ervoor te zorgen dat Google Play de AAB-indeling accepteert, moet App Signing by Google Play voor uw toepassing worden geconfigureerd in de Google Play Console. Als u het bijwerken van een bestaande app die geen gebruik maakt van App Signing door Google Play, kijk dan op onze migratie sectie om te leren hoe u die configuratie wijziging uit te voeren.
Het testen van de release build van uw app#
Voor het uploaden van de release build naar de Play Store, zorg ervoor dat je het grondig te testen. Verwijder eerst de vorige versie van de app die u al hebt geïnstalleerd. Installeer de app op het apparaat met het volgende commando in de project root:
Copy
Merk op dat --variant release
alleen beschikbaar is als u de ondertekening hebt ingesteld zoals hierboven is beschreven.
U kunt alle lopende bundler-instanties beëindigen, aangezien al uw framework- en JavaScript-code is gebundeld in de assets van de APK.
Publiceren naar andere winkels#
De gegenereerde APK heeft standaard de native code voor zowel x86- als ARMv7a-CPU-architecturen. Dit maakt het makkelijker om APK’s te delen die op bijna alle Android toestellen draaien. Dit heeft echter het nadeel dat er wat ongebruikte native code op elk apparaat zal zijn, wat leidt tot onnodig grotere APK’s.
U kunt een APK voor elke CPU maken door de volgende regel in android/app/build.gradle te veranderen:
Copy
Upload beide bestanden naar markten die device targeting ondersteunen, zoals Google Play en Amazon AppStore, en de gebruikers zullen automatisch de juiste APK krijgen. Als u wilt uploaden naar andere markten, zoals APKFiles, die niet meerdere APK’s voor één app ondersteunen, wijzigt u ook de volgende regel om de standaard universele APK te maken met binaries voor beide CPU’s.
Copy
Proguard inschakelen om de grootte van de APK te verkleinen (optioneel)#
Proguard is een hulpmiddel dat de grootte van de APK enigszins kan verkleinen. Het doet dit door delen van de React Native Java-bytecode (en de afhankelijkheden) die uw app niet gebruikt, te strippen.
BELANGRIJK: Zorg ervoor dat u uw app grondig test als u Proguard hebt ingeschakeld. Proguard vereist vaak specifieke configuraties voor elke native bibliotheek die u gebruikt. Zie
app/proguard-rules.pro
.
Om Proguard in te schakelen, bewerkt u android/app/build.gradle
:
Copy
Oude Android React Native-apps migreren om App Signing by Google Play te gebruiken#
Als u overstapt van een vorige versie van React Native, is de kans groot dat uw app de functie App Signing by Google Play niet gebruikt. Wij raden u aan om dat in te schakelen om te profiteren van dingen zoals automatische app-splitsing. Om te migreren van de oude manier van ondertekenen moet je beginnen met het genereren van een nieuwe upload key en dan de release signing config in android/app/build.gradle
vervangen om de upload key te gebruiken in plaats van de release (zie sectie over signing config toevoegen aan gradle). Zodra dat is gedaan, moet u de instructies van de Google Play Help-website volgen om uw originele release-sleutel naar Google Play te sturen.
Standaardmachtigingen#
Standaard is INTERNET
toestemming toegevoegd aan uw Android-app omdat vrijwel alle apps deze gebruiken. SYSTEM_ALERT_WINDOW
permissie is toegevoegd aan uw Android APK in debug-modus, maar het zal worden verwijderd in productie.