Sovelluksen allekirjoittaminen
Avaimet ja Play App Signing.
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 10000signingConfigs-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=superSecretPlay 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 uploadAvainten 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 tiedostostakeystore.properties. - Kootkaa allekirjoitettu
.aabkomennolla./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
keytoolja liittäkää sesigningConfigs-määritykseen. - Pidätte salasanat poissa Gitistä käyttämällä tiedostoja
keystore.propertiesja.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.
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
- Julkaisukoontiversion valmistelu
- Sovelluksen allekirjoittaminen
- Play Console ja sovelluksen tietosivu
- Julkaisut ja päivitykset