Android Academy · Oppitunti

Sovelluksen allekirjoittaminen

Avaimet ja Play App Signing.

Oppitunti 2/413 vaihetta

Sovelluksen allekirjoittaminen on ilmainen Android Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Android Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Android Academy-kurssilla on yhteensä 4 oppituntia.

Miksi sovellukset on allekirjoitettava

Android ei asenna sovellusta, ellei sitä ole digitaalisesti allekirjoitettu. Allekirjoitus todistaa kaksi asiaa: kuka sovelluksen julkaisi ja ettei APK:ta ole muutettu sen jälkeen.

Ratkaisevaa on, että allekirjoitukset yhdistävät päivitykset alkuperäiseen sovellukseen. Päivitys hyväksytään vain, jos se on allekirjoitettu samalla avaimella kuin asennettu versio. Jos kadotatte avaimen, ette voi enää koskaan päivittää sovellustanne.

Tässä oppitunnissa käsitellään keystoreja, allekirjoitusmäärityksiä ja Googlen turvallisempaa nykyaikaista lähestymistapaa: Play App Signing -palvelua.

Keystoret ja avaimet

Allekirjoitusidentiteettinne sijaitsee keystore-tiedostossa (.jks tai .keystore). Keystore voi sisältää useita avaimia; jokaisella avaimella on alias ja oma salasanansa.

  • Keystoren salasana — avaa tiedoston.
  • Avaimen alias — nimeää avaimen sen sisällä.
  • Avaimen salasana — avaa kyseisen avaimen.

Päivittäin suorittamanne debug-koontiversiot allekirjoitetaan automaattisesti väliaikaisella debug-keystorella. Release-versiota varten tarvitsette oman keystoren.

Keystoren luominen

Voitte luoda keystoren Android Studion valintaikkunassa tai JDK:n mukana toimitettavalla keytool-komennolla.

Käyttäkää pitkää voimassaoloaikaa (vähintään 25 vuotta) — jos avain vanhenee, ette voi julkaista päivityksiä. RSA 2048 on vakiintunut vaihtoehto.

keytool -genkeypair \
  -v \
  -keystore release.jks \
  -alias upload \
  -keyalg RSA \
  -keysize 2048 \
  -validity 10000

signingConfigs-lohko

Voitte allekirjoittaa sovelluksen automaattisesti Gradle-koonnin aikana määrittämällä signingConfigs-määrityksen ja liittämällä sen release-koontityyppiin.

Tämä toimii, mutta huomaatte, että salasanat ovat suoraan koontitiedostossa — korjaamme tämän seuraavaksi.

android {
    signingConfigs {
        create("release") {
            storeFile = file("release.jks")
            storePassword = "superSecret"
            keyAlias = "upload"
            keyPassword = "superSecret"
        }
    }
    buildTypes {
        release {
            signingConfig = signingConfigs.getByName("release")
            isMinifyEnabled = true
        }
    }
}

Pidä salaisuudet poissa Gitistä

Älkää koskaan tallentako salasanoja tai keystorea versionhallintaan. Lukekaa ne sen sijaan paikallisesta, git-ignoroidusta keystore.properties-tiedostosta.

Lisätkää keystore.properties ja *.jks tiedostoon .gitignore.

// top of app/build.gradle.kts
val keystoreProps = Properties().apply {
    val f = rootProject.file("keystore.properties")
    if (f.exists()) load(f.inputStream())
}

android {
    signingConfigs {
        create("release") {
            storeFile = file(keystoreProps["storeFile"] as String)
            storePassword = keystoreProps["storePassword"] as String
            keyAlias = keystoreProps["keyAlias"] as String
            keyPassword = keystoreProps["keyPassword"] as String
        }
    }
}

keystore.properties-tiedosto

Vastaava properties-tiedosto on yksinkertainen key=value-luettelo, joka pidetään poissa Gitistä ja tallennetaan turvallisesti (esimerkiksi salasananhallintaohjelmaan tai CI-palvelun secrets-säilöön).

CI-palvelimella nämä syötettäisiin ympäristöön perustuvina salaisuuksina sen sijaan, että ne tallennettaisiin versionhallintaan.

# keystore.properties  (git-ignored!)
storeFile=release.jks
storePassword=superSecret
keyAlias=upload
keyPassword=superSecret

Play App Signing

Nykyaikainen Play käyttää Play App Signing -palvelua. Google säilyttää tällöin varsinaisen sovelluksen allekirjoitusavaimen suojatussa infrastruktuurissaan ja käyttää sitä käyttäjille toimitettavien APK:iden allekirjoittamiseen.

Te hallinnoitte vain latausavainta: allekirjoitatte bundlen sillä ja lataatte sen. Play tarkistaa latausavaimen, poistaa sen ja allekirjoittaa bundlen uudelleen sovelluksen allekirjoitusavaimella.

Suuri etu on se, että jos kadotatte latausavaimen, voitte pyytää sen vaihtamista — mutta sovelluksen allekirjoitusavain, johon käyttäjät luottavat, pysyy turvassa Googlella.

Latausavain ja sovelluksen allekirjoitusavain

Kaksi avainta, kaksi tehtävää — älkää sekoittako niitä keskenään:

  • Latausavain — teidän avaimenne. Allekirjoittaa lataamanne AAB:n. Voidaan vaihtaa, jos se katoaa.
  • Sovelluksen allekirjoitusavain — Googlen avain (tai avain, jonka olette ladanneet kerran). Allekirjoittaa lopulliset käyttäjien asentamat APK:t. Pysyvä.

Kun otatte uuden sovelluksen käyttöön, yksinkertaisin tapa on antaa Googlen luoda sovelluksen allekirjoitusavain ja allekirjoittaa lataukset omalla latausavaimellanne.

Allekirjoituksen tarkistaminen

Voitte tarkistaa artefaktin allekirjoitustavan Android SDK:n build-tools-paketin apksigner-työkalulla. Se ilmoittaa allekirjoitusvarmenteen ja käytössä olevat allekirjoitusmallit (v1/v2/v3).

Varmenteen SHA-256-sormenjäljen vertaaminen on myös tapa rekisteröidä sovellus palveluihin, kuten Firebaseen tai Google Sign-Iniin.

# Verify and print signer certificates of an APK
apksigner verify --print-certs app-release.apk

# Show the SHA-256 fingerprint of a keystore key
keytool -list -v -keystore release.jks -alias upload

Avainten suojaaminen

Latausavainta on vaikea vaihtaa, ja sovelluksen allekirjoitusavain (jos hallinnoitte sitä itse) on mahdoton korvata. Käsitelkää niitä kuin kruununjalokiviä:

  • Varmuuskopioikaa keystore vähintään kahteen turvalliseen sijaintiin.
  • Säilyttäkää salasanat salasananhallintaohjelmassa, ei koskaan lähdekoodissa.
  • Käyttäkää Play App Signing -palvelua, jotta kadonneen latausavaimen voi palauttaa.
  • Rajoittakaa niiden tiimin jäsenten määrää, joilla on pääsy keystoreen.

Monet julkaistut sovellukset on jouduttu hylkäämään yksinkertaisesti siksi, että kehittäjä kadotti avaimen eikä voinut enää julkaista päivityksiä.

Kokonaisuuden yhdistäminen

Julkaisun allekirjoituksen koko työnkulku näyttää tältä:

  • Luokaa latauskeystore komennolla keytool.
  • Liittäkää se signingConfigs-määritykseen ja lukekaa salaisuudet tiedostosta keystore.properties.
  • Kootkaa allekirjoitettu .aab komennolla ./gradlew bundleRelease.
  • Ladatkaa tiedosto Playhin, joka allekirjoittaa sen uudelleen sovelluksen allekirjoitusavaimella ennen sen toimittamista käyttäjille.

Tästä lähtien jokainen päivitys on allekirjoitettava samalla latausavaimella.

Pikatarkistus

Kun Play App Signing on käytössä, millä avaimella te allekirjoitatte ladattavan bundlen, ja mitä tapahtuu, jos kadotatte avaimen?

Kertaus: sovelluksen allekirjoitus

Allekirjoitus tekee Android-sovelluksesta asennettavan ja päivitettävän:

  • Keystore sisältää avaimet; jokaisella avaimella on alias ja salasanat.
  • Luokaa pitkäkestoisesti voimassa oleva avain komennolla keytool ja liittäkää se signingConfigs-määritykseen.
  • Pidätte salasanat poissa Gitistä käyttämällä tiedostoja keystore.properties ja .gitignore.
  • Play App Signing jakaa avaimet palautettavissa olevaan latausavaimeen ja Googlen pysyvään sovelluksen allekirjoitusavaimeen.
  • Varmuuskopioikaa avaimet huolellisesti — kadonnut avain voi päättää sovelluksen elinkaaren.

Seuraavaksi määritetään Play Console ja sovelluksen kauppasivu.

Aloita maksutta

Opi Kotlin 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
36
Oppitunnit
152

Usein kysytyt kysymykset

Onko oppitunti ”Sovelluksen allekirjoittaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Android Academy-oppimispolun 3 oppituntia, myös oppitunnin “Sovelluksen allekirjoittaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Android Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Sovelluksen allekirjoittaminen”?

Avaimet ja Play App Signing. Harjoittelet Android Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Android Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Android Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Sovelluksen 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ä Android Academy-oppitunnilla?

Kyllä. Jokainen Android 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

  1. Julkaisukoontiversion valmistelu
  2. Sovelluksen allekirjoittaminen
  3. Play Console ja sovelluksen tietosivu
  4. Julkaisut ja päivitykset
← Takaisin: Android Academy