Računalniki Windows internet

Kako pravilno podpisati APK igro ali aplikacijo na Androidu. kako podpisati apk z gradle kako podpisati apk datoteko za google play

Tako ste delali že več dni (in morda noči) in zdaj je vaša prva hibridna mobilna aplikacija pripravljena. Je precej stabilen, večina kritičnih napak je zaprtih. Ostali so majhni, a če se spomnite, da je perfekcionizem zlo, se trdno odločite, da boste aplikacijo objavili.

Predpogoj za to je prisotnost podpisane datoteke APK. Kako podpisati datoteko apk, se boste naučili iz tega članka.

majhna digresija

Ko se je moj hišni projekt približal izdaji, sem začel iskati informacije, kako hitro in neboleče objaviti aplikacijo. Številna najdena navodila so bila videti preprosta. Izbral sem navodila avtorjev Ionic frameworka, na podlagi katerega je bila aplikacija razvita. Ni se vse izšlo prvič, obstaja več funkcij. Postopek podpisa je opisan v tem članku, poudarjene so pomembne točke.

Začetni podatki

Predvidevam, da imate nastavljeno vse, kar potrebujete za razvoj hibridnih mobilnih aplikacij z Apache Cordova. Namestiti mora biti:
  • Apache Cordova
  • Komplet za razvoj Java
  • Android SDK Tools
lcf se uporablja kot ime projekta in aplikacije. Po potrebi zamenjajte z imenom svojega projekta.

Pojdi

Najprej morate ustvariti različico za izdajo svoje aplikacije. Pred tem pa poskrbimo, da so vsi nepotrebni vtičniki odstranjeni. Na primer, ne potrebujemo vtičnika, ki na konzolo natisne informacije o odpravljanju napak. Odstranimo ga:

$ cordova plugin rm cordova-plugin-console
Če želite ustvariti različico za izdajo za Android, uporabite ukaz graditi z zastavo -- sprostitev:

$ cordova build --release android
Ta ukaz bo ustvaril nepodpisan APK datoteka v imeniku:

platforme/android/build/outputs/apk
Na primer platforme/android/build/outputs/apk/ android-release-unsigned.apk. Nato moramo to datoteko podpisati in zagnati pripomoček zipalign za optimizacijo in pripravo datoteke za Google Play.

Za podpis datoteke je potrebno potrdilo. Ustvarimo ga s pomočjo pripomočka ključno orodje ki je vključen v JDK:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -veljavnost 10000
Pomembno

Vrednost parametra -alias si je treba zapomniti, vendar je bolje, da jo zapišete. V zgornjem primeru je enak lcf (s prvimi črkami imena aplikacije Loyal Client Free). Tukaj ne bom dajal podrobnosti, če vas zanima, napišite v komentarjih, povedal vam bom več.

Vzdevek se uporablja vsakič pri podpisovanju * aplikacije. Da si ga olajšate zapomniti, uporabite ime datoteke shrambe ključev kot vzdevek, na primer:


-keystore hello-world.keystore -alias hello-world -keystore weather-app.keystore -alias weather-app -keystore todo.keystore -alias todo
* Aplikacijo morate podpisati z vsako izdajo posodobitev

Uporabnost ključno orodje postavlja vrsto vprašanj. Skupno jih bo 8. Za predstavo o vprašanjih in okvirnih odgovorih vnaprej, so vsa navedena spodaj, pod spojlerjem.

vprašanja o ključnih orodjih in vzorci odgovorov

1. Vnesite geslo za shranjevanje ključev:
Tukaj morate vnesti geslo za datoteko (vsaj 6 znakov). Vneseno geslo mora biti zapisano na varnem mestu, potrebno ga je vsakič ob podpisu aplikacije.

2. Ponovno vnesite novo geslo:
Geslo za ponovni vnos.

3. Kakšno je vaše ime in priimek?
: Ivan Petrov
Vaše ime in priimek. Vrednost v oglatih oklepajih je privzeta vrednost.

4. Kako se imenuje vaša organizacijska enota?
: IT
Ime oddelka vašega podjetja. Lahko pustite prazno, določim IT.

5. Kako se imenuje vaša organizacija?
: 2 razvijalca
Ime vaše organizacije. Navedite, če obstaja.

6. Kako se imenuje vaše mesto ali kraj?
: Moskva
Ime mesta

7. Kako se imenuje vaša država ali provinca?
: MO
Ime regije

8. Kakšna je dvočrkovna koda države za to enoto?
: EN
Koda države. Navedem RU.

: y

Potrdite, ali je vse pravilno, ali pritisnite Enter za ponovni vstop.


Na koncu se prikaže sporočilo o uspešni generaciji ključa. Pozvani boste, da nastavite geslo za zasebni ključ (če želite pustiti enako kot za potrdilo, pritisnite Enter):

Ustvarjanje 2 048-bitnega para ključev RSA in samopodpisanega potrdila (SHA256withRSA) z veljavnostjo 10 000 dni za: CN=Ivan Petrov, OU=IT, O=2razvijalci, L=Moskva, ST=MO, C=RU Vnesite ključ geslo za (VRNI, če je enako kot geslo za shranjevanje ključev):
Datoteka bo ustvarjena v trenutnem imeniku lcf.keystore.

Pomembno

Ustvarjena datoteka mora biti shranjena na varnem mestu. Če uporabljate zasebno skladišče, lahko datoteko potrdite skupaj z izvornimi kodami aplikacije. Na splošno je potrdila najbolje shraniti ločeno. Če izgubite potrdilo, ne boste mogli izdati posodobitev aplikacije.

Ostala sta še dva koraka in za distribucijo boste imeli pripravljeno datoteko APK. Nadaljujemo neposredno s podpisom.

Če želite podpisati datoteko apk, uporabite pripomoček jarsigner, ki je prav tako vključen v JDK.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Ime certifikata je navedeno za parametrom -shramba ključev, vzdevek - za imenom datoteke.

Na koncu bomo za optimizacijo datoteke apk uporabili pripomoček zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Zadnji parameter je ime datoteke, ki jo boste naložili v Google Play.

Pomembno.

Uporabnost zipalign je del orodij Android SDK in ga najdete tukaj:

/path/to/Android/sdk/build-tools/VERSION/zipalign

Zaključek

Zdaj imate datoteko apk pripravljeno za distribucijo, ki jo lahko naložite v Google Play. Izpolnite opis, določite oceno vaše aplikacije in kliknite »Objavi«.

Ker sem sam poguglal ​​vprašanje kako podpisati apk datoteko?", vem, da v vsem ni tako enostavno najti res delujočega in razumljivega navodila. Zato sem se odločil, da sam napišem gradivo, kako pravilno podpisati svoj program ali igro na Androidu.

Kot zdaj veste, brez digitalnega podpisa vaše stvaritve ni mogoče dati na trg in to je že resno. Veliko mladih razvijalcev Android je opazilo, da tako rekoč začetniki popolnoma pozabijo podpisati svojo aplikacijo in poskušajo nekaj narediti. z njim pozneje in se sprašujem, zakaj ne morejo izvesti določenih dejanj s svojo APK datoteko.

Torej, ne vlecimo ga in začnimo takoj s tem, kako lahko podpišete svojo apk datoteko in kako jo dejansko uporabiti za dosego želenega rezultata.

Ta metoda je najbolj pravilna od vseh naštetih, zato jo bomo opisali v tem gradivu. Izdelali bomo lastne ključe z našimi podatki in potrdili ter z njimi podpisali aplikacijo, ki ste jo ustvarili.

Za delo potrebujemo: OpenSSL in SignApk.

Najprej naredimo potrdilo in podpisni ključ. Namestite OpenSSL. Med namestitvijo vas bo namestitveni program pozval, da kopirate komponente v mapo Windows, izberite mapo Bin, kjer boste namestili celoten OpenSSL.

Zdaj odprite v imenu skrbnika sistema (to je zelo pomembno!) ukazno vrstico. Nato v ukazni vrstici pojdite v mapo bin, ki se nahaja v mapi, kjer ste namestili OpenSSL (npr. C:\OpenSSL\bin\ oz C:\Program Files\OpenSSL\bin\). Če ne veste, se premikanje v drugo mapo izvede z ukazom cd. To pomeni, da bi morali iti v želeno mapo, zagnati naslednji ukaz:

cd C:\OpenSSL\bin\

Ko ste v mapi Bin, lahko nadaljujete neposredno z ustvarjanjem potrdila in ključa.

Korak 1(Izvajamo generiranje ključa z dolžino 1024 bitov)

Zaženite ukaz:

openssl genrsa -out key.pem 1024

2. korak(Na podlagi ključa ustvarimo zahtevo za potrdilo)

Zaženite ukaz:

openssl req -new -key key.pem -out request.pem

Na tej stopnji boste morali vnesti svoje podatke, ki vas bodo identificirali v potrdilu.

korak 3 (Ustvarite zasebni ključ iz potrdila)

Zaženite ukaz:

openssl x509 -req -days 9999 -in request.pem -signkey key.pem -out certificate.pem

4. korak(Izvedite generiranje javnega ključa)

Zaženite ukaz:

openssl pkcs8 -topk8 -outform DER -in key.pem -inform PEM -out key.pk8 -nocrypt

Na tej stopnji je ustvarjanje datotek, ki jih potrebujemo za podpis vaših iger in aplikacij, končano. z ustvarjenim ključem in potrdilom lahko podpišete poljubno število iger in aplikacij na Androidu.

In zdaj pravzaprav začnimo podpisovati vlogo. Razpakirajte arhiv iz SingApk, ki ste ga prenesli z zgornje povezave. Premaknite se iz mape Bin, kjer smo ustvarili potrdilo in 2 datoteki ključa: certifikat.pem in ključ.pk8 v mapo, kjer ste odpakirali SingApk. Windows bi moral prikazati pogovorno okno za zamenjavo datoteke - zamenjaj.

Zdaj, če želite datoteko apk podpisati z edinstvenim digitalnim podpisom, ki ste ga izdelali sami, preprosto povlecite in spustite datoteko apk na sign_APK.bat. Da datoteke ne povlečete iz enega okna v drugo (to ni priročno), premaknite datoteko apk v mapo s SingApk. Po izvedbi se bo datoteka pojavila v mapi s SingApk apk_signed.apk, ki bo vaša podpisana aplikacija ali igra.

Ogledov objave: 5 618

android studio ponuja veliko možnosti tako za razvoj aplikacij kot za povečanje avtomatizacije in udobja pri programiranju.

Če uporabljate sistem gradnje gradle za ustvarjanje lastnih aplikacij lahko nastavite tudi nekaj možnosti za ustvarjanje podpisov za svoje aplikacije.

Svojih podpisnih ključev, gesel in uporabniških imen verjetno ne želite objaviti v javnem (ali celo zasebnem) skladišču. Zato lahko ključ, geslo in uporabniško ime definirate kot lastnosti v ločeni datoteki.

Preden začnete podpisovati aplikacijo, morate v datoteki gradle.properties ustvariti novo lastnost. Pokličimo ga ključi.repo in kot vrednost podajte pot do mape, kjer se bo nato nahajala shramba ključev in datoteka z lastnostmi (npr. C:/Users/UserName/.signing).

Keys.repo=C:/Users/UserName/.signing

Nato morate ustvariti to mapo ali, če ste določili obstoječo, jo odpreti. Ustvariti mora datoteko YourProjectName.properties, znotraj katerega bodo pot do shrambe ključev, vzdevek ključa in geslo zapisani kot lastnosti v naslednjem obrazcu.

RELEASE_STORE_FILE=/Ime vašega projekta/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=Vzdevek ključa RELEASE_KEY_PASS=******

Kako ustvariti shrambo ključev?

Če nimate shrambe ključev, jo lahko preprosto ustvarite s programom Android Studio. Če želite to narediti, izberite element menija Zgradite -> Ustvari podpisani APK.

V oknu, ki se prikaže, kliknite Ustvari novo ... Posledično se odpre okno, v katerem lahko določite, kje se nahaja shramba ključev (za to lekcijo je bolje, da takoj izberete pot, ki ste jo določili v YourProjectName.properties v lastnini RELEASE_STORE_FILE), pa tudi podatke o ključu.

Nato morate ustvariti mapo Ime vašega projekta in tja prenesite želeno datoteko shranjevanja ključev.

Zdaj lahko nadaljujete neposredno s postopkom podpisa. Če želite to narediti, morate v svojem projektu odpreti datoteko build.gradle(nahaja se v mapi aplikacije). V njem v bloku android morate dodati naslednjo kodo.

SigningConfigs ( debug ( /* ni sprememb tukaj */ ) izdaja ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties " ) if (projectPropsFile.exists()) (Properties props = new Properties() props.load(new FileInputStream(projectPropsFile)) storeFile file(file(project.property("Keys.repo") + props["RELEASE_STORE_FILE"] ) ) storePassword props["RELEASE_STORE_PASS"] keyAlias ​​props["RELEASE_ALIAS"] keyPassword props["RELEASE_KEY_PASS"] ) ) drugo ( println "==================== = =================================" println " - Konfigurirajte okolje za prevajanje za izdajo - npr. v ~/. podpisni imenik" println "============================================ == ========" ) ) )

Kakšne so sheme podpisov?

Obstajata dve shemi za pridobitev podpisa APK: v1 JAR in v2 Celoten APK.

V prvem primeru podpišite JAR-datoteka, ki je tradicionalni način podpisovanja. Podpis v1 ne ščiti nekaterih delov APK-ja, kot so metapodatki ZIP. Preverjevalnik APK mora obravnavati veliko nezaupljivih (še nepreverjenih) podatkovnih struktur in nato zavreči podatke, ki niso podpisani, kar pušča veliko prostora za napad. Poleg tega mora preverjevalnik APK razpakirati vse stisnjene zapise, kar zapravlja veliko časa in pomnilnika. Za reševanje teh težav je bil razvit drugi poln APK sheme v2.

Shema v2 je bila predstavljena v Android 7.0 Nougat (API 25) in deluje od različice naprej Android Studio 2.2 in Vtičnik za Android Gradle 2.2. Ta shema zagotavlja hitrejšo namestitev aplikacije in dobro zaščito pred nepooblaščenimi spremembami APK-ja. Vsebina APK-ja je zgoščena in podpisana, nato prejeta Blok podpisov APK vstavljeno v APK.

Med preverjanjem veljavnosti shema v2 obravnava APK kot blob in izvede preverjanje podpisa za celotno datoteko. Vsaka sprememba APK-ja, vključno s spremembami metapodatkov ZIP, razveljavi podpis. Ta oblika preverjanja je veliko hitrejša in omogoča odkrivanje več nepooblaščenih sprememb.

Nova oblika je združljiva nazaj, zato je APK-je, podpisane z novo shemo, mogoče namestiti na starejše naprave (ki bodo preprosto prezrle nov podpis), če so tudi ti APK-ji podpisani s shemo v1.

Podpisovanje privzeto uporablja obe shemi, tako da je mogoče aplikacije namestiti v katero koli napravo. Po potrebi pa lahko onemogočite podpisovanje v1 ali v2. Če želite to narediti, v zgornji kodi v bloku sprostitev samo dodajte naslednje vrstice.

V1SigningEnabled false

V2SigningEnabled false

Pomembno je tudi omeniti, da se morate pred podpisom s shemo v2 podpisati s shemo v1, ker APK ne bo prenesel v2, če je podpisan z dodatnimi potrdili, potem ko je bil podpisan s shemo v2.

Ko je koda dodana, jo označite v bloku buildTypes znotraj sprostitev. Na primer:

BuildTypes (izdaja (minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro" signingConfig signingConfigs.release)

Zdaj lahko varno v točki menija Zgradite izberite Zgradite APK, ki je predhodno spremenil vrsto sklopa iz odpravljanje napak na sprostitev. Kot lahko vidite, je ta metoda priročna, ker je samodejna, konfigurirati jo je treba le enkrat in vaše shrambe ključev so lahko varne.

V članku so posnetki zaslona, ​​ko se je trgovina z aplikacijami imenovala "Android Market". Odraščala je že generacija mačk, ki še nikoli niso slišali za to ime. Toda splošno načelo se ni spremenilo. Prepuščeno zgodovini. Ne morem se ponovno registrirati za nove posnetke zaslona.

Ker nas skrbi, bomo vadili na mačkah. Vzemimo na primer primer iz članka in ga poskusimo postaviti v Google Play. Če bo vse šlo, bo lažje.

Preden nadaljujete, se prepričajte, da imate pripravljene lastne ikone aplikacij in ime programa. Zelo čudno bo videti program s standardno ikono in imenom "HelloWorld" v trgovini z aplikacijami. Preverite tudi vse vnose v datoteki manifesta.

Prvi korak. On je najtežji

Vsaka prijava, objavljena v trgovini, mora imeti podpisano potrdilo. Certifikat vam omogoča, da se identificirate kot avtor programa. In če nekdo poskuša objaviti program z istim imenom kot vaše, bo zavrnjen zaradi spora z imenom. Ime aplikacije je polno ime paketa.

Ko zaženete svoje aplikacije na emulatorju ali telefonu, razvojno okolje samodejno podpiše program s potrdilom za odpravljanje napak. Potrdilo za odpravljanje napak ni primerno za distribucijo prek trgovine, zato morate aplikacijo podpisati s svojim edinstvenim potrdilom. Brezplačno je, brez registracije in SMS.

Ustvarimo podpisano APK datoteko, ki je nekaj takega kot izvedljiva datoteka notepad.exe v sistemu Windows. Če imate odprto razvojno okolje Android Studio, izberite v meniju zgraditi | Ustvari podpisani APK ....

Odpre se pogovorno okno čarovnika, ki ga morate izpolniti s podatki.

V prvem polju določite pot do shrambe ključev. Če ste že morali ustvariti programe, tudi v Eclipse, lahko določite obstoječe skladišče z gumbom Izberite obstoječe .... Če prvič ustvarjate repozitorij, izberite gumb Ustvari novo .... Pojavilo se bo novo pogovorno okno.

V prvem polju morate z gumbom izbrati mapo ... in vnesite ime za pomnilniško datoteko, ki bo dobila pripono jks.

Zdaj ustvarite ključ za aplikacijo. Na terenu vzdevek(Vzdevek) vnesite ime ključa, ki ga razumete vi in ​​mačke. Ni treba ustvariti vzdevka za vsako aplikacijo, lahko uporabite en vzdevek za svoje aplikacije in ločene vzdevke za aplikacije po meri.

Prav tako morate ustvariti geslo za ključ in ga potrditi.

Ključ je zasnovan za 25 let. Polje Veljavnost (leta) pustite nespremenjeno (razen če nimate utemeljenih razlogov za nasprotno).

Nazadnje izpolnite podatke o sebi.

Po izpolnjevanju polj se boste vrnili v prvo okno čarovnika.

Kliknite na gumb Naslednji in v naslednjem oknu vnesite drugo geslo za dostop do baze gesel.

Morda nimate tega koraka. Lahko se prikaže, če ste označili možnost »Zapomni si geslo«. Podrobnosti se ne spomnim, boš ugotovil sam.

Zadnji korak je, da pritisnete gumb Končaj.

To je bil včasih zadnji korak. Zdaj so nova potrditvena polja V1 (podpis kozarca) in V2 (Celoten APK podpis). Preverite vsaj prvo možnost V1- to ustreza staremu načinu. Druga metoda velja za varnejšo v smislu vdiranja in jo je mogoče uporabiti za kasnejše API-je po vaši presoji (glejte spodaj).

Kot rezultat zapletenih manipulacij s pogovornimi okni boste imeli dolgo pričakovani APK - vaš čar, ki vam bo odprl vrata v svet bogastva in sreče.

Pritisk na gumb Prikaži v Raziskovalcu, boste v računalniku zagnali File Explorer z mapo, ki vsebuje podpisano datoteko.

Bodite previdni pri ustvarjenem ključu. On je tisti, ki zagotavlja, da ste novo različico programa napisali vi. Če torej izgubite ustvarjeni ključ, boste morali program naložiti pod drugim imenom z novim ključem.

Studio ponuja način za samodejno ustvarjanje podpisane aplikacije. Desni klik na mapo app in v kontekstnem meniju izberite Odprite nastavitve modula. Izberite razdelek app v razdelku Moduli. Izberite zavihek Podpisovanje. Kliknite na gumb plus in izpolnite polja.

Pojdi na zavihek Vrste gradnje in izberite montažo sprostitev. Na spustnem seznamu Konfiguracija za podpisovanje izberite novo ustvarjeno konfiguracijo. Privzeto ima ime konfigur.

Kliknite v redu da shranite rezultate.

Vloge lahko podpišete tudi prek ukazne vrstice brez sodelovanja studia, če ste perverznež. Lahko si preberete dokumentacijo na to temo.

v2 Celoten APK

Leta 2017 je Google nekoliko spremenil postopek podpisovanja. Zdaj obstajata dve shemi za pridobitev podpisa APK: v1 JAR in v2 Full APK.

Podpis v1 (ki obstaja že od začetka) ne ščiti nekaterih delov APK-ja, kot so metapodatki ZIP. Preverjevalnik APK mora obravnavati veliko nezaupljivih podatkovnih struktur in nato zavreči podatke, ki niso podpisani, kar pušča veliko prostora za napad. Poleg tega mora preverjevalnik APK razpakirati vse stisnjene zapise, kar zapravlja veliko časa in pomnilnika. Za reševanje težav je bil razvit nov v2 Full APK, na katerega boste naleteli ob podpisu aplikacije.

Shema v2 deluje v Androidu 7.0 Nougat (API 25). Shema zagotavlja hitrejšo namestitev aplikacije in dobro zaščito pred nepooblaščenimi spremembami APK-ja. Vsebina APK-ja je zgoščena in podpisana, nato se nastali blok za podpisovanje APK-ja vstavi v APK.

Nova oblika je združljiva nazaj, zato je APK-je, podpisane z novo shemo, mogoče namestiti na starejše naprave (ki bodo preprosto prezrle nov podpis), če so tudi ti APK-ji podpisani s shemo v1.

V starejših aplikacijah pustim potrditveno polje poleg prve različice. Morda vas bodo kasneje prisilili, da na silo preklopite na drugo različico. Pomembno je omeniti, da se morate pred podpisom s shemo v2 podpisati s shemo v1, ker APK ne bo prenesel sheme v2, če je podpisan z dodatnimi potrdili, potem ko je bil podpisan s shemo v2.

Strogo gledano, lahko datoteko apk objavite na svojem spletnem mestu, vsi vaši obiskovalci pa jo lahko prenesejo in namestijo na svoje telefone. A to je v naši dobi nanotehnologije nekako nedostojno. Torej, pojdimo na naslednji korak.

Drugi korak. Moraš Fedya, moraš

Naslednji korak je zelo neprijeten. Tujcu morate dati 25 zimzelenih rastlin. Da ne bi bili tako užaljeni, se je ta operacija imenovala kotizacija. Potrebovali boste kreditno kartico z navedenim zneskom. Upoštevajte, da vam Visa Electron in še bolj diskontna kartica verige trgovin Perekrestok ne bo ustrezala. Če že imate zahtevano kartico, preskočite ta odstavek. Ostalim lahko svetujem, da si priskrbijo denarnico QIWI in tam dobijo virtualno kartico. Točno to sem tudi storil, saj je bil nerad iti na banko in pisati vse vrste izpiskov.

Samodejna posodobitev

Če ste ustvarili novo različico programa tako, da ste popravili različne napake in dodali nove fotografije mačke, morate številko različice v manifestu povečati za eno (atribut koda različice) in zamenjajte versionName zase (bo prikazano na strani Google Play). V najnovejših različicah studia te lastnosti zdaj niso v manifestu, ampak v datoteki build.gradle modul vaše aplikacije. Naložite novo različico v Google Play in uporabniki bodo posodobitev prejeli samodejno.

Sledite pregledom

Namestite aplikacijo Google Play Developer Console v svojo napravo, da ne boste zamudili novega pregleda svoje aplikacije. Ogledate si lahko tudi statistiko.

Spreminjanje gesel za trezor in vzdevke ključev

Že nekaj let mi ga ni bilo treba uporabljati, zato ne vem, ali so te informacije ažurne.

Recimo, da ste svoj program z izvornimi kodami prodali drugemu podjetju. Da lahko podjetje objavlja posodobitve programa, mora podpisati aplikacijo z istim ključem, s katerim ste podpisali vi. V nasprotnem primeru se bo program obravnaval kot drugačen in ime paketa bo treba spremeniti. Toda takrat stari uporabniki ne bodo mogli prejemati posodobitev.

Če pa na primer vse svoje programe podpišete z istim ključem in geslom mačka mačka, potem lahko podjetje podpiše vaše druge aplikacije z istim ključem, tako da njihove programe postavi z istim imenom paketa, vi pa nikomur ne boste ničesar dokazovali.

Zato morate poskrbeti za spremembo ključa za prenos na novega lastnika.

Recimo, da ima naše skladišče strukturo:

Ime shrambe ključev: old.keystore Geslo za shranjevanje ključev: cat1 Vzdevek: my_alias Geslo vzdevka: cat2

Naredite kopijo svojega trezorja in jo shranite drugam. To bi morali storiti že pri prvem ustvarjanju, saj če izgubite prostor za shranjevanje, med posodobitvijo ne boste mogli obnoviti dostopa do svojih programov.

Ponovno naredite kopijo svojega skladišča in ga preimenujte, npr. new.keystore. Z njim bomo delali.

Zaženite pripomoček ključno orodje z ukazom:

Keytool -storepasswd -keystore new.keystore

Pozvani boste, da vnesete svoje trenutno geslo in nato vnesete novo geslo in ga ponovite. Približno takole:

Vnesite geslo za shranjevanje ključev: Novo geslo za shranjevanje ključev: Ponovno vnesite novo geslo za shranjevanje ključev:

Prvi del naloge je opravljen, geslo trezorja je spremenjeno.

Če želite spremeniti tudi geslo za vzdevek, nato znova zaženite pripomoček z ukazom:

Keytool -keypasswd -keystore new.keystore -alias my_name

Pozvani boste, da vnesete svoje trenutno geslo za trezor (vaše novo geslo), nato geslo za vzdevek. Vnesete lahko novo geslo, ki bo nadomestilo staro geslo.

Vnesite geslo za shranjevanje ključev: Vnesite geslo za ključ

Geslo vzdevka je spremenjeno.

Če vam sprememba gesla ni dovolj in želite spremeniti ime vzdevka (morda ste uporabili ime svoje najljubše mačke, zakaj bi drugi vedeli za to), potem nadaljujemo z delom.

Zaženimo ukaz:

Keytool -changealias -keystore new.keystore -alias my_alias -destalias my_new_alias

Pozvani boste, da vnesete geslo za trezor, nato geslo za nov vzdevek (trenutno geslo), nato novo geslo in ga ponovite. Ime vzdevka bo spremenjeno.

Tako smo potrebovali tri korake, da smo ustvarili novo skladišče in vzdevek za prenos na tujca. Novi lastnik naj stori enako, da se prepriča, da ne boste izkoristili spremenjenih datotek. Vendar je to njegov problem.

Končano prijavo podpišemo

Tak primer se lahko pojavi, ko izgubite izvorno kodo in imate samo APK. To najverjetneje velja za pirate, ki ponovno podpišejo druge aplikacije (tega ne počnite s programi drugih ljudi).

Najprej spremenite razširitev iz apk v zip. Izbrišite mapo v arhivu META-INF. Obnovite razširitev. Izbrisali ste stari podpis.

Zdaj morate aplikacijo podpisati z novim ključem. Vnesite ukaz.

jarsigner -keystore keystore-file.jks -storepass keystore_password -keypass alias_password --signedjar signed-apk-file.apk apk-file.apk alias_name

Če bo uspešno, boste prejeli sporočilo, da je aplikacija podpisana. Nato izvedemo še en ukaz.

ANDROID_SDK_PATH/build-tools/LAST_BUILD_TOOLS_VERSION/zipalign -v 4 signed-apk-file.apk aligned-apk-file.apk

Rezultat bi morala biti datoteka APK, podpisana z novim ključem. Sam ga nisem nikoli uporabljal.

Shranjevanje Googlovih ključev

Leta 2017 je Google dodal novo možnost za shranjevanje ključev v oblaku. Glavna razlika je v tem, da aplikacijo podpišete s posebnim ključem za nalaganje, ki ga Google preveri in odstrani ter ga nadomesti z izvirnim ključem za podpisovanje aplikacije, ki ste ga navedli.

Omogoča vam upravljanje ključev za podpisovanje aplikacij za nove in objavljene aplikacije, ki jih bo Google shranil v svojo lastno shrambo ključev. Če se želite pridružiti temu programu, se morate naročiti nanj v svoji Konzoli Google Play. Omeniti velja, da se od njega ne bo več mogoče odjaviti.

Ta metoda je zelo uporabna – če je shramba ključev izgubljena, vam bo podpisovanje aplikacij Google Play omogočilo ponastavitev ključa za namestitev novega. Ni vam treba znova objaviti aplikacije z novim imenom in ključem paketa.

Dodatno branje

Android-keystore-password-recover by MaxCamillo - Če ste izgubili geslo, poskusite uporabiti to orodje. Sam ga nisem uporabljal, zato ne bom povedal.

Zadnja posodobitev: 30.10.2015

Ko ustvarimo aplikacijo, jo testiramo in odpravimo napake, jo lahko začnemo objavljati. Bistvo objave je ustvariti datoteko s pripono .apk, ki bo predstavljal aplikacijo, in njeno kasnejšo umestitev na Google Play Market ali druga zunanja spletna mesta. Privzeto je med postopkom odpravljanja napak in ustvarjanja aplikacije apk datoteka že ustvarjena in jo najdemo v mapi projekta ob poti Ime_projekta\app\build\outputs\apk. Privzeto je datoteka poimenovana app-debug.apk in predstavlja različico za odpravljanje napak.

Toda za popolno objavo te datoteke morda ne bo dovolj. In še vedno moramo narediti nekaj priprave projekta za izdajo. Če želite to narediti, v datoteki manifesta določite element Nastavljena sta atributa android:versionCode in android:versionName. Tudi v datoteki manifesta element ne sme vsebovati atributa android:debuggable

Poleg tega lahko na tej stopnji nastavite ikono za aplikacijo, ki bo prikazana na začetnem zaslonu pripomočka, ime aplikacije (atribut android:label na elementu), nastavite pa lahko tudi licenčno pogodbo.

Datoteka manifesta mora definirati tudi ime paketa (atribut paketa elementa ), ki bo kasneje uporabljen za aplikacijo. Pri razvoju v Android Studiu se privzeto začnejo paketi aplikacij z com.primer. Tega imena ne smete pustiti, saj bo ime paketa služilo kot edinstven identifikator za vašo aplikacijo. Na primer, spodaj v mojem primeru je ime paketa "com.maverics.eugene.telephonelist":

Poleg tega mora ime paketa na začetku datoteke v kodnih datotekah java ustrezati tudi paketu aplikacije.

Nastavitev zahtev

Zahteve za API lahko nastavite tudi v fazi pred izdajo. Naša aplikacija ima na primer določeno minimalno različico operacijskega sistema Android, tako da lahko nastavimo ustrezne atribute za element v datoteki manifesta

    android:minSdkVersion - minimalna različica Androida

    android:targetSdkVersion - optimalna različica API-ja

    android:maxSdkVersion - največja različica sistema

Recimo, da je minimalna različica Jelly Beans 4.1.2, optimalna različica pa KitKat 4.4.4:

//.............................

Podpis aplikacije

Ko je vse pripravljeno, mora biti aplikacija za Android podpisana s certifikatom, po katerem je mogoče prepoznati avtorja aplikacije. Ko testiramo aplikacijo tako, da jo namestimo prek Android Studio na napravo, se samodejno podpiše. Toda za ustvarjanje različice za izdajo moramo izvesti dodatno serijo dejanj.

Pri ustvarjanju potrdila ne pozabite, da bo sistem ob posodobitvi aplikacije primerjal potrdila stare in nove različice. In posodobitev bo izvedena, če se potrdila obeh različic ujemata. Če pa je nova različica podpisana z novim potrdilom, bo aplikacija obravnavana kot popolnoma nova, nepovezana s staro različico in predstavlja popolnoma drugo aplikacijo. V tem primeru bo morala nova različica za namestitev imeti drugačno ime paketa kot stara.

Najprej v Android Studio v meniju izberite Build -> Generate Signed APK. To bo odprlo okno čarovnika:

Kliknite na gumb Ustvari novo .... Po tem se odpre okno za ustvarjanje ključa:

V polje Pot do shrambe ključev vnesite pot do datoteke omrežnega potrdila, ki jo želite ustvariti. Če navedena mapa ne obstaja, jo ustvarite ali definirajte obstoječo mapo.

Določite geslo v polju Geslo/Potrdi.

Podajte vzdevek v polju Vzdevek. Lahko vnesete poljubno ime.

V polje Ime in priimek vnesite ime in priimek. Nato napišemo kodo enote, organizacije, mesta, države in države.

Na koncu kliknite V redu.

Po tem se bo prvo okno samodejno posodobilo:

Končno okno nam bo pokazalo pot do imenika, kjer se bo v izdajni različici nahajala podpisana apk aplikacija. Kliknite Dokončaj.

Zdaj lahko na navedeni poti najdete podpisan apk, ki bo imel ime app-release.apk:

Datoteko lahko preimenujemo, pri čemer ohranimo njeno končnico in jo naložimo na Play Market ali katero koli spletno mesto ali pa jo prenesemo neposredno na vašo mobilno napravo. Po prenosu v telefon/tablico samo kliknite nanj in s standardnim namestitvenim programom paketa bo aplikacija nameščena. Res je, tukaj moramo upoštevati tudi, da če ne namestimo aplikacije iz Play Marketa, moramo v nastavitvah dovoliti namestitev iz drugih virov - Varnost-> Neznani viri (Dovoli namestitev aplikacij iz drugih virov)