Android kræver, at alle apps skal være digitalt signeret med et certifikat, før de kan installeres. For at kunne distribuere din Android-applikation via Google Play Store skal den signeres med en frigivelsesnøgle, som derefter skal bruges til alle fremtidige opdateringer. Siden 2017 er det muligt for Google Play at håndtere signering af udgivelser automatisk takket være App Signing by Google Play-funktionaliteten. Før din binære applikation uploades til Google Play skal den dog signeres med en uploadnøgle. På siden Signering af dine applikationer på Android Developers dokumentation beskrives emnet i detaljer. Denne vejledning dækker processen kortfattet og indeholder en liste over de trin, der kræves for at pakke JavaScript-bundlen.
- Generering af en uploadnøgle#
- Opsætning af Gradle-variabler#
- Tilføjelse af signeringskonfiguration til din app’s Gradle-konfiguration#
- Generering af udgivelsen AAB#
- Test af udgivelsesbygningen af din app#
- Udgivelse til andre butikker#
- Aktivering af Proguard til at reducere størrelsen af APK’en (valgfrit)#
- Migrering af gamle Android React Native-apps til brug af App Signing by Google Play#
- Standardtilladelser#
Generering af en uploadnøgle#
Du kan generere en privat signeringsnøgle ved hjælp af keytool
. På Windows skal keytool
køres fra C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Denne kommando beder dig om adgangskoder til keystore og nøgle og til felterne Distinguished Name for din nøgle. Den genererer derefter keystore som en fil kaldet my-upload-key.keystore
.
Keystore indeholder en enkelt nøgle, der er gyldig i 10000 dage. Aliasset er et navn, som du senere vil bruge, når du signerer din app, så husk at notere aliaset.
På Mac, hvis du ikke er sikker på, hvor din JDK bin-mappe befinder sig, skal du udføre følgende kommando for at finde den:
Kopier
Det vil output JDK-mappen, som vil se nogenlunde sådan ud:
Kopier
Navigér til denne mappe ved hjælp af kommandoen cd /your/jdk/path
, og brug kommandoen keytool med sudotilladelse som vist nedenfor.
Kopier
Bemærk: Husk at holde keystore-filen privat. Hvis du har mistet uploadnøglen, eller hvis den er blevet kompromitteret, bør du følge disse instruktioner.
Opsætning af Gradle-variabler#
- Placér filen
my-upload-key.keystore
under mappenandroid/app
i din projektmappe. - Rediger filen
~/.gradle/gradle.properties
ellerandroid/gradle.properties
, og tilføj følgende (erstat*****
med den korrekte adgangskode til keystore, alias og nøgleadgangskode),
Kopier
Dette vil være globale Gradle-variabler, som vi senere kan bruge i vores Gradle-konfiguration til at signere vores app.
Note om sikkerhed: Hvis du ikke er vild med at gemme dine adgangskoder i klartekst, og du kører macOS, kan du også gemme dine legitimationsoplysninger i appen Keychain Access. Så kan du springe de to sidste rækker i
~/.gradle/gradle.properties
over.
Tilføjelse af signeringskonfiguration til din app’s Gradle-konfiguration#
Det sidste konfigurationsskridt, der skal udføres, er at indstille release builds til at blive signeret ved hjælp af uploadnøglen. Rediger filen android/app/build.gradle
i din projektmappe, og tilføj signeringskonfig,
Kopier
Generering af udgivelsen AAB#
Kør følgende i en terminal:
Kopier
Gradle’s bundleRelease
vil bundle alt det JavaScript, der er nødvendigt for at køre din app, i AAB (Android App Bundle). Hvis du har brug for at ændre den måde, JavaScript-bundlen og/eller de tegnelige ressourcer er bundtet på (f.eks. hvis du har ændret standardfil/mappenavne eller projektets generelle struktur), skal du kigge på android/app/build.gradle
for at se, hvordan du kan opdatere den, så den afspejler disse ændringer.
Bemærk: Sørg for, at
gradle.properties
ikke indeholderorg.gradle.configureondemand=true
, da det vil få udgivelsesbygningen til at springe over at bundle JS og aktiver i den binære app-binærfil.
Den genererede AAB kan findes under android/app/build/outputs/bundle/release/app.aab
og er klar til at blive uploadet til Google Play.
For at Google Play kan acceptere AAB-formatet skal App Signing by Google Play konfigureres for din applikation i Google Play-konsollen. Hvis du opdaterer en eksisterende app, der ikke bruger App Signing by Google Play, skal du se vores afsnit om migration for at få at vide, hvordan du udfører denne konfigurationsændring.
Test af udgivelsesbygningen af din app#
Hvis du uploader udgivelsesbygningen til Play Store, skal du sørge for at teste den grundigt. Fjern først alle tidligere versioner af appen, som du allerede har installeret. Installer den på enheden ved hjælp af følgende kommando i projektroden:
Copy
Bemærk, at --variant release
kun er tilgængelig, hvis du har konfigureret signering som beskrevet ovenfor.
Du kan afslutte alle kørende bundler-instanser, da al din ramme- og JavaScript-kode er bundtet i APK’ens aktiver.
Udgivelse til andre butikker#
Den genererede APK har som standard den native kode for både x86- og ARMv7a-CPU-arkitekturer. Dette gør det lettere at dele APK’er, der kører på næsten alle Android-enheder. Det har dog den ulempe, at der vil være noget ubrugt native kode på alle enheder, hvilket fører til unødigt store APK’er.
Du kan oprette en APK for hver CPU ved at ændre følgende linje i android/app/build.gradle:
Kopier
Opload begge disse filer til markeder, der understøtter device targeting, såsom Google Play og Amazon AppStore, og brugerne vil automatisk få den relevante APK. Hvis du vil uploade til andre markeder, f.eks. APKFiles, som ikke understøtter flere APK’er for en enkelt app, skal du også ændre følgende linje for at oprette den universelle standard-APK med binære filer til begge CPU’er.
Copy
Aktivering af Proguard til at reducere størrelsen af APK’en (valgfrit)#
Proguard er et værktøj, der kan reducere størrelsen af APK’en en en smule. Det gør det ved at fjerne dele af React Native Java-bytekoden (og dens afhængigheder), som din app ikke bruger.
VIGTIGT: Sørg for at teste din app grundigt, hvis du har aktiveret Proguard. Proguard kræver ofte en konfiguration, der er specifik for hvert enkelt native bibliotek, du bruger. Se
app/proguard-rules.pro
.
For at aktivere Proguard skal du redigere android/app/build.gradle
:
Kopier
Migrering af gamle Android React Native-apps til brug af App Signing by Google Play#
Hvis du migrerer fra en tidligere version af React Native er der stor sandsynlighed for, at din app ikke bruger funktionen App Signing by Google Play. Vi anbefaler, at du aktiverer den for at kunne drage fordel af ting som automatisk opdeling af apps. For at migrere fra den gamle måde at signere på skal du starte med at generere en ny upload-nøgle og derefter erstatte release signing config i android/app/build.gradle
for at bruge upload-nøglen i stedet for release-nøglen (se afsnittet om tilføjelse af signeringskonfiguration til gradle). Når det er gjort, skal du følge instruktionerne fra Google Play Help-webstedet for at sende din originale udgivelsesnøgle til Google Play.
Standardtilladelser#
Som standard tilføjes INTERNET
-tilladelse til din Android-app, da stort set alle apps bruger den. SYSTEM_ALERT_WINDOW
-tilladelse tilføjes til din Android APK i debug-tilstand, men den vil blive fjernet i produktionstilstand.