Keystoren luominen ja AAB:n allekirjoittaminen
Luokaa release-keystore keytoolilla, määrittäkää allekirjoitusasetukset gradle.properties- ja build.gradle-tiedostoissa ja muodostakaa allekirjoitettu Android App Bundle EAS Buildilla.
Keystoren luominen ja AAB:n allekirjoittaminen on ilmainen React Native Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu React Native Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Native Academy-kurssilla on yhteensä 4 oppituntia.
Miksi Androidin allekirjoittaminen on tärkeää
Jokainen Android-sovellus on allekirjoitettava digitaalisesti yksityisellä avaimella ennen kuin sen voi asentaa tai jakaa. Allekirjoitus upotetaan APK- tai AAB-tiedostoon, ja se varmistaa, että kaikki sovelluksen tulevat päivitykset ovat peräisin samalta kehittäjältä. Jos kadotatte keystoren, ette voi enää julkaista sovellukselle päivitystä — joudutte julkaisemaan kokonaan uuden sovelluksen eri pakettinimellä. Varmuuskopioikaa keystore-tiedosto turvallisesti.
Mikä on keystore-tiedosto
Keystore on binääritiedosto (tyypillisesti .jks tai .keystore), joka sisältää yhden tai useamman kryptografisen avainparin. Se on suojattu kahdella salasanalla: store password suojaa tiedostoa ja key password suojaa sisällä olevaa yksittäistä aliasta. Ajatelkaa sitä salasanalla suojattuna holvina, joka sisältää allekirjoitusidentiteettinne. Android käyttää tämän holvin sisällä olevaa avainta APK:n tai AAB:n allekirjoittamiseen.
APK vai AAB: kumpaa kannattaa käyttää
Google Play edellyttää nykyään Android App Bundleja (AAB) uusilta sovelluksilta (elokuusta 2021 alkaen). AAB on APK:ta pienempi, koska se sisältää kaikkien laitekokoonpanojen resurssit ja antaa Google Playn luoda jokaiselle käyttäjälle laitekohtaisen APK:n. Tämä pienentää latauskokoa 15–50 %. Paikalliseen testaukseen ja sivulataukseen käytetään edelleen APK-tiedostoja. Rakentakaa AAB Play Storeen lähetettäviä versioita varten ja APK vain suoraan asennettaviin sovelluksiin tai Play Storen ulkopuoliseen sisäiseen testaukseen.
// eas.json — build AAB for production
{
'build': {
'production': {
'android': {
'buildType': 'app-bundle' // produces .aab
}
},
'preview': {
'android': {
'buildType': 'apk' // produces .apk for side-loading
}
}
}
}Keystoren luominen keytoolilla
Javan keytool-apuohjelma luo avainsäilöjä. Tärkeimmät parametrit ovat: -genkeypair uuden avainparin luomiseen, -keystore tulostiedoston nimeä varten, -alias avaimen aliasta varten (avaimen nimi avainsäilön sisällä), -validity määrittämään, kuinka monta päivää varmenne on voimassa (25 vuotta = 9125 päivää on tyypillinen arvo sovelluksen allekirjoittamiseen) sekä -keyalg RSA -keysize 2048 kryptografista algoritmia varten.
# Generate a release keystore
keytool -genkeypair \
-keystore myapp-release-key.jks \
-alias myapp-key \
-keyalg RSA \
-keysize 2048 \
-validity 9125 \
-storepass yourStorePassword \
-keypass yourKeyPassword
# You'll be prompted for:
# First and last name:
# Organizational unit:
# Organization:
# City or locality:
# State or province:
# Two-letter country code (e.g., US):
# Then type 'yes' to confirmEAS:n automaattisesti luoma avainsäilö
EAS Build voi luoda ja tallentaa avainsäilön puolestasi automaattisesti ja turvallisesti. Kun suoritat tuotantoon tarkoitetun Android-koontiversion ensimmäisen kerran, EAS pyytää Teitä luomaan uuden avainsäilön tai lataamaan olemassa olevan. Jos annatte EAS:n luoda sen, avainsäilö tallennetaan salattuna EAS:n pilvipalveluun — voitte ladata sen milloin tahansa komennolla eas credentials --platform android. Tämä on tiimeille turvallisin vaihtoehto, koska avainsäilöä ei tallenneta yhden kehittäjän kannettavalle tietokoneelle.
# Let EAS generate and manage the keystore
eas build --platform android --profile production
# EAS prompts:
# ? Would you like to set up an Android Keystore?
# > Generate new keystore <- choose this
#
# EAS creates and stores it securely.
# Download your keystore for backup:
eas credentials --platform android
# Select: Download existing keystoreManuaalisen allekirjoituksen määrittäminen build.gradle-tiedostossa
Jos käytätte paljasta React Native -työnkulkua (ettekä hallittua Expoa) ja haluatte allekirjoittaa paikallisesti EAS:n sijaan, määrittäkää allekirjoitus tiedostossa android/app/build.gradle. Lisätkää signingConfigs-lohko, joka viittaa avainsäilötiedostoon ja salasanoihin. Tallentakaa avainsäilön tunnistetiedot tiedostoon ~/.gradle/gradle.properties (älkää lähdekoodiin), jotta ne eivät päädy git-historiaan.
// android/app/build.gradle
android {
signingConfigs {
release {
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
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt')
}
}
}
// ~/.gradle/gradle.properties (NOT in git)
// MYAPP_UPLOAD_STORE_FILE=myapp-release-key.jks
// MYAPP_UPLOAD_STORE_PASSWORD=yourStorePassword
// MYAPP_UPLOAD_KEY_ALIAS=myapp-key
// MYAPP_UPLOAD_KEY_PASSWORD=yourKeyPasswordAllekirjoitetun AAB:n koonti EAS:llä
Kun tunnistetiedot on määritetty, käynnistäkää Androidin tuotantokoonti EAS:llä. Pilvipalvelun suoritusympäristö noutaa koodinne, ottaa käyttöön määrityslaajennukset, kokoaa AAB:n, allekirjoittaa sen avainsäilöllänne ja asettaa sen ladattavaksi tai suoraan Play Consoleen lähetettäväksi. Seuratkaa edistymistä komennolla eas build:list tai EAS-koontinäytössä. Valmis AAB on yleensä kooltaan 5–20 Mt sovelluksen koosta riippuen.
# Build signed AAB for Play Store
eas build --platform android --profile production
# Watch build progress (or use dashboard URL provided)
eas build:list --platform android --limit 5
# Download the .aab when complete
eas build:download --id <build-id>
# Alternatively: build AND auto-submit to Play Console
eas build --platform android --profile production --auto-submitPlay App Signing: turvallisuuden parantaminen
Google Play App Signing on ohjelma, jossa Google säilyttää sovelluksen toissijaista allekirjoitusavainta. Lataatte AAB:n, joka on allekirjoitettu latausavaimellanne (yksinkertaisemmalla itse luomallanne avaimella), ja Google allekirjoittaa sen uudelleen hallinnoidulla sovelluksen allekirjoitusavaimella ennen sen toimittamista käyttäjille. Hyötynä on se, että jos latausavain vaarantuu tai katoaa, Google voi myöntää uuden. Rekisteröitymistä ei voi perua, mutta sitä suositellaan vahvasti uusille sovelluksille.
// Play App Signing flow:
// You sign with: Upload Key (your keystore)
// |
// v
// [Upload to Play Console]
// |
// Google re-signs with:
// App Signing Key
// |
// v
// Device receives: App signed by Google's key
// Enroll when creating app in Play Console:
// Setup > App Signing > Use Google-managed keyAAB:n allekirjoituksen tarkistaminen
Varmistakaa ennen Play Consoleen lataamista, että AAB on allekirjoitettu oikein käyttämällä bundletool- tai apksigner-työkalua. Tarkistakaa allekirjoitusvarmenteen SHA-256-sormenjälki — Google Play odottaa tämän sormenjäljen täsmäävän. Latausvarmenteen ja Play Consolen tietoihin tallennetun varmenteen välinen ristiriita johtaa latauksen hylkäämiseen allekirjoitusvirheen vuoksi.
# Verify keystore details
keytool -list -v -keystore myapp-release-key.jks
# Shows: Certificate fingerprint (SHA-256):
# AB:CD:EF:... (copy this for your records)
# Check what signed an APK/AAB
apksigner verify --verbose myapp.apk
# Bundletool (download from Google)
bundletool dump manifest --bundle=myapp.aabAvainsäilön varmuuskopiointi
Avainsäilön varmuuskopio on elintärkeä — käsitelkää sitä kuten salasanaa tai yksityistä avainta. Tallentakaa se salasananhallintaohjelmaan, joka tukee tiedostoliitteitä, salattuun pilvitallennukseen (eri paikkaan kuin sama git-repositorio) ja halutessanne laitteistopohjaiseen turvalaitteeseen. Kirjatkaa sen yhteyteen tallennussalasana, avaimen alias ja avaimen salasana. Jos avainsäilö katoaa, ette voi enää päivittää sovellusta — joudutte julkaisemaan sen uudella pakettinimellä ja menetätte kaikki nykyiset käyttäjät ja arvostelut.
# Keystore backup checklist:
# 1. Store the .jks file in encrypted storage
# - 1Password, Bitwarden, or similar
# - Do NOT commit to git
# 2. Record credentials alongside it:
# Store file: myapp-release-key.jks
# Store password: [store securely]
# Key alias: myapp-key
# Key password: [store securely]
# 3. Test restoration:
# - Copy backup to a new machine
# - Run: keytool -list -keystore myapp-release-key.jks
# - Verify you can list the key alias
# 4. Tell your team where the backup livesVersion Code ja Version Name
Android käyttää kahta version tunnistetta: versionCode (kokonaisluku, jota on kasvatettava jokaisen Play Storeen ladattavan version yhteydessä) ja versionName (käyttäjille näytettävä merkkijono, esimerkiksi '1.2.3'). Play Console hylkää koontiversion, jos versionCode ei ole suurempi kuin viimeksi ladatun koontiversion arvo. Määrittäkää Expossa android.versionCode tiedostossa app.json ja kasvattakaa sitä jokaisen Playhin ladattavan uuden koontiversion yhteydessä.
// app.json
{
'expo': {
'version': '1.2.3', // versionName shown to users
'android': {
'versionCode': 12, // must be higher than previous upload
'package': 'com.yourcompany.myapp'
}
}
}
// After submitting to Play Console, before next build:
// Increment versionCode: 12 -> 13
// Update version if user-facing: '1.2.3' -> '1.2.4'
// EAS can auto-increment:
// eas.json: 'autoIncrement': true (in android profile)Pikatarkistus
Testatkaa, miten hyvin ymmärrätte tämän oppitunnin React Native -mobiilikehityksen käsitteet.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte: luomaan Android-avainsäilön keytoolilla tai EAS Buildilla, mitä eroa APK:lla ja AAB:llä on ja miksi Play Store edellyttää AAB:tä sekä määrittämään allekirjoituksen build.gradle-tiedostossa paljaan työnkulun projekteissa. Tutustuitte myös Google Play App Signing -toimintoon ja siihen, miksi avainsäilön varmuuskopiointi on ehdottoman tärkeää. Seuraavaksi määritämme Play Console -sovellussivun.
Opi JavaScript tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”Keystoren luominen ja AAB:n allekirjoittaminen” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa React Native Academy-oppimispolun 3 oppituntia, myös oppitunnin “Keystoren luominen ja AAB:n allekirjoittaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. React Native Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Keystoren luominen ja AAB:n allekirjoittaminen”?
Luokaa release-keystore keytoolilla, määrittäkää allekirjoitusasetukset gradle.properties- ja build.gradle-tiedostoissa ja muodostakaa allekirjoitettu Android App Bundle EAS Buildilla. Harjoittelet React Native Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni React Native Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin React Native Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Keystoren luominen ja AAB:n allekirjoittaminen”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä React Native Academy-oppitunnilla?
Kyllä. Jokainen React Native Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Keystoren luominen ja AAB:n allekirjoittaminen
- Play Console -kauppasivun määrittäminen
- Sisältöluokitukset, käytännöt ja tietosuoja
- Sisäinen testaus, vaiheittainen julkaisu ja tuotanto