Android kräver att alla appar signeras digitalt med ett certifikat innan de kan installeras. För att distribuera din Android-applikation via Google Play Store måste den signeras med en utgivningsnyckel som sedan måste användas för alla framtida uppdateringar. Sedan 2017 är det möjligt för Google Play att hantera signering av releaser automatiskt tack vare funktionaliteten App Signing by Google Play. Innan din binära applikation laddas upp till Google Play måste den dock signeras med en uppladdningsnyckel. På sidan Signering av dina applikationer i dokumentationen för Android Developers beskrivs ämnet i detalj. Den här guiden täcker processen i korthet och listar de steg som krävs för att paketera JavaScript-paketet.
- Generera en uppladdningsnyckel#
- Uppsättning av Gradle-variabler#
- Lägga till signeringskonfiguration till din apps Gradle-konfiguration#
- Generering av utgåvan AAB#
- Testning av release-build av din app#
- Publicering till andra butiker#
- Aktivering av Proguard för att minska storleken på APK:n (valfritt)#
- Migrering av gamla Android React Native-appar så att de kan använda App Signing by Google Play#
- Standardbehörigheter#
Generera en uppladdningsnyckel#
Du kan generera en privat signeringsnyckel med hjälp av keytool
. På Windows måste keytool
köras från C:\Program Files\Java\jdkx.x.x_x\bin
.
Copy
Detta kommando uppmanar dig att ange lösenord för keystore och nyckel och för fälten Distinguished Name för din nyckel. Den genererar sedan keystore som en fil som heter my-upload-key.keystore
.
Keystore innehåller en enda nyckel som är giltig i 10000 dagar. Aliaset är ett namn som du kommer att använda senare när du signerar din app, så kom ihåg att notera aliaset.
På Mac, om du inte är säker på var din JDK bin-mapp finns, utför följande kommando för att hitta den:
Copy
Det kommer att ge ut JDK-katalogen, som kommer att se ut ungefär så här:
Kopiera
Navigera till den katalogen med kommandot cd /your/jdk/path
och använd kommandot keytool med sudo-behörighet enligt nedan.
Copy
Notera: Kom ihåg att hålla keystore-filen privat. Om du har förlorat uppladdningsnyckeln eller om den har äventyrats bör du följa dessa instruktioner.
Uppsättning av Gradle-variabler#
- Placera filen
my-upload-key.keystore
under katalogenandroid/app
i din projektmapp. - Redigera filen
~/.gradle/gradle.properties
ellerandroid/gradle.properties
och lägg till följande (ersätt*****
med rätt lösenord för keystore, alias och nyckellösenord),
Kopiera
Detta kommer att vara globala Gradle-variabler som vi senare kan använda i vår Gradle-konfiguration för att signera vår app.
Note about security: Om du inte är förtjust i att lagra dina lösenord i klartext och du kör macOS kan du också lagra dina autentiseringsuppgifter i appen Keychain Access. Då kan du hoppa över de två sista raderna i
~/.gradle/gradle.properties
.
Lägga till signeringskonfiguration till din apps Gradle-konfiguration#
Det sista konfigurationssteget som behöver göras är att ställa in release-builds som ska signeras med hjälp av uppladdningsnyckeln. Redigera filen android/app/build.gradle
i din projektmapp och lägg till signeringskonfigurationen,
Kopiera
Generering av utgåvan AAB#
Kör följande i en terminal:
Kopiera
Gradles bundleRelease
kommer att bunta allt JavaScript som behövs för att köra din app i AAB (Android App Bundle). Om du behöver ändra hur JavaScript-paketet och/eller ritbara resurser paketeras (t.ex. om du ändrat standardnamnen för filer/mappar eller projektets allmänna struktur), ta en titt på android/app/build.gradle
för att se hur du kan uppdatera den så att den återspeglar dessa ändringar.
Notera: Se till att
gradle.properties
inte innehållerorg.gradle.configureondemand=true
eftersom det kommer att göra att release-bygget hoppar över att paketera JS och tillgångar i appbinärfilen.
Den genererade AAB finns under android/app/build/outputs/bundle/release/app.aab
och är redo att laddas upp till Google Play.
För att Google Play ska acceptera AAB-formatet måste App Signing by Google Play konfigureras för din applikation i Google Play Console. Om du uppdaterar en befintlig app som inte använder App Signing by Google Play, se vårt avsnitt om migrering för att lära dig hur du utför den konfigurationsändringen.
Testning av release-build av din app#
För att ladda upp release-build till Play Store ska du se till att du testar den noggrant. Avinstallera först alla tidigare versioner av appen som du redan har installerat. Installera den på enheten med följande kommando i projektroten:
Copy
Bemärk att --variant release
endast är tillgängligt om du har ställt in signering enligt beskrivningen ovan.
Du kan avsluta alla pågående bundler-instanser, eftersom all din ramverks- och JavaScript-kod är paketerad i APK:ns tillgångar.
Publicering till andra butiker#
Den genererade APK:n har som standard den ursprungliga koden för både x86- och ARMv7a-CPU-arkitekturerna. Detta gör det lättare att dela APK:er som körs på nästan alla Android-enheter. Detta har dock nackdelen att det kommer att finnas en del oanvänd inhemsk kod på alla enheter, vilket leder till onödigt stora APK:er.
Du kan skapa en APK för varje CPU genom att ändra följande rad i android/app/build.gradle:
Kopiera
Ladda upp båda dessa filer till marknader som har stöd för enhetsmålinriktning, t.ex. Google Play och Amazon AppStore, och användarna kommer automatiskt att få den lämpliga APK:n. Om du vill ladda upp till andra marknader, t.ex. APKFiles, som inte stöder flera APK:er för en enda app, ändrar du följande rad också för att skapa den universella standard-APK:n med binärfiler för båda CPU:erna.
Kopiera
Aktivering av Proguard för att minska storleken på APK:n (valfritt)#
Proguard är ett verktyg som kan minska APK:ns storlek något. Det gör det genom att ta bort delar av React Native Java bytecode (och dess beroenden) som din app inte använder.
VIKTIGT: Se till att noggrant testa din app om du har aktiverat Proguard. Proguard kräver ofta en konfiguration som är specifik för varje inhemskt bibliotek som du använder. Se
app/proguard-rules.pro
.
För att aktivera Proguard redigerar du android/app/build.gradle
:
Kopiera
Migrering av gamla Android React Native-appar så att de kan använda App Signing by Google Play#
Om du migrerar från en tidigare version av React Native är det troligt att din app inte använder funktionen App Signing by Google Play. Vi rekommenderar att du aktiverar den för att kunna dra nytta av saker som automatisk delning av appar. För att migrera från det gamla sättet att signera måste du börja med att generera en ny uppladdningsnyckel och sedan ersätta release signering config i android/app/build.gradle
för att använda uppladdningsnyckeln istället för release-nyckeln (se avsnittet om att lägga till signeringskonfiguration i gradle). När det är gjort bör du följa instruktionerna från Google Play Help-webbplatsen för att skicka din ursprungliga release-nyckel till Google Play.
Standardbehörigheter#
Som standard läggs behörigheten INTERNET
till i din Android-app eftersom i stort sett alla appar använder den. Behörigheten SYSTEM_ALERT_WINDOW
läggs till i din Android APK i felsökningsläge men tas bort i produktion.