.apk faila parakstīšana, izmantojot utilītu jarsigner. Kā pareizi parakstīt APK spēli vai lietojumprogrammu operētājsistēmā Android Kā nomainīt Android lietojumprogrammas parakstu

Tā kā es pats meklēju šo jautājumu kā parakstīt apk failu?", zinu, ka nav tik vienkārši visā atrast reāli strādājošu un saprotamu instrukciju.Tāpēc nolēmu pats uzrakstīt materiālu, kā pareizi parakstīt savu programmu vai spēli uz Android.

Kā tagad zināms Digitālais paraksts, Tavu radījumu nevar laist tirgū, un tas jau ir nopietni.. Daudzi jaunie Android izstrādātāji ir pamanījuši, tā teikt, iesācēji pilnībā aizmirst parakstīt savu pieteikumu un mēģina ar to vēlāk kaut ko darīt un visi brīnās, kāpēc viņi to nedara. ar viņu APK failu nav iespējams veikt šo vai citu darbību.

Tātad, nevilcināsim to un nekavējoties sāksim ar to, kā jūs varat parakstīt savu apk failu un kā to faktiski izmantot, lai sasniegtu vēlamo rezultātu.

Šī metode ir vispareizākā no visām uzskaitītajām, tāpēc mēs to aprakstīsim šajā materiālā. Mēs paši izveidosim atslēgas ar saviem datiem un sertifikātiem un izmantosim tās, lai parakstītu jūsu izveidoto lietojumprogrammu.

Darbam mums nepieciešams: OpenSSL un SignApk.

Vispirms izveidosim sertifikātu un parakstīšanas atslēgu. Instalējiet OpenSSL. Instalēšanas laikā instalēšanas programma liks jums kopēt komponentus uz Windows mapi, atlasiet mapi Bin, kas būs vieta, kur instalēsit visu OpenSSL.

Tagad sistēmas administratora vārdā (tas ir ļoti svarīgi!) atveriet komandrindu. Pēc tam komandrindā dodieties uz mapi bin, kas atrodas mapē, kurā instalējāt OpenSSL (piemēram, C:\OpenSSL\bin\ vai C:\Program Files\OpenSSL\bin\). Ja nezināt, pāreja uz citu mapi tiek veikta ar komandu cd. Tas ir, lai pārietu uz vēlamo mapi, jums vajadzētu palaist šādu komandu:

cd C:\OpenSSL\bin\

Kad esat mapē Bin, varat pāriet tieši uz sertifikāta un atslēgas izveidi.

1. darbība(Mēs veicam atslēgu ģenerēšanu ar garumu 1024 biti)

Palaidiet komandu:

openssl genrsa -out key.pem 1024

2. darbība(Pamatojoties uz atslēgu, mēs izveidojam sertifikāta pieprasījumu)

Palaidiet komandu:

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

Šajā posmā jums būs jāievada savi dati, kas jūs identificēs sertifikātā.

Solis 3 (Ģenerējiet privāto atslēgu no sertifikāta)

Palaidiet komandu:

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

4. darbība(Veikt publiskās atslēgas ģenerēšanu)

Palaidiet komandu:

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

Šajā posmā ir pabeigta to failu izveide, kas nepieciešami jūsu spēļu un lietojumprogrammu parakstīšanai. izmantojot ģenerēto atslēgu un sertifikātu, Android ierīcē varat parakstīt tik daudz spēļu un lietojumprogrammu, cik vēlaties.

Un tagad faktiski sāksim parakstīt pieteikumu. Izsaiņojiet arhīvu no SingApk, kas lejupielādēts no iepriekš minētās saites. Pārvietojieties no mapes Bin, kurā izveidojām sertifikātu un atslēgas 2 failus: sertifikāts.pem Un key.pk8 uz mapi, kurā izsaiņojāt SingApk. Sistēmai Windows vajadzētu parādīt faila aizstāšanas dialoglodziņu - aizstāt.

Tagad, lai parakstītu apk failu ar unikālu ciparparakstu, ko izveidojāt pats, vienkārši velciet apk failu uz sign_APK.bat. Lai nevilktu failu no viena loga uz otru (tas nav ērti), pārvietojiet apk failu uz mapi ar SingApk. Pēc izpildes mapē ar SingApk parādīsies fails apk_signed.apk, kas būs jūsu parakstītā aplikācija vai spēle.

Ar lietotņu pierakstīšanās funkciju Google Play Google var pārvaldīt jūsu lietotnes parakstīšanas atslēgu, aizsargāt šo atslēgu un izmantot to, lai parakstītu jūsu APK failus izplatīšanai. Šī uzglabāšanas metode pasargās jūs, ja atslēga tiek pazaudēta vai bojāta.

Svarīgs! Lai izmantotu Android App Bundle komplektus (ieteicamo formātu lietotņu publicēšanai), pirms App Bundle augšupielādes pakalpojumā Play Console ir jāreģistrējas Google Play lietotņu parakstīšanas programmā.

Reģistrēties var kontu īpašnieki un lietotāji ar globālām laidienu pārvaldības atļaujām, kuri ir pieņēmuši lietošanas noteikumus. Google Play lietotņu parakstīšanas programmā vienlaikus varat reģistrēt tikai vienu lietotni.

Darba principi

Izmantojot lietotņu parakstīšanas funkciju pakalpojumā Google Play, jūsu atslēgas tiek glabātas tajā pašā infrastruktūrā, kurā ir Google atslēgas, un tās aizsargā īpašs atslēgu pārvaldības pakalpojums. Detalizētu informāciju par Google tehnisko infrastruktūru var atrast Google Cloud drošības dokumentācijā.

Android lietotnes tiek parakstītas ar privāto atslēgu. Ar katru šādu atslēgu ir saistīts publisks sertifikāts, ko ierīces un pakalpojumi var izmantot, lai pārbaudītu lietojumprogrammu un to atjauninājumu drošību. Ierīcēs, kuru paraksts atbilst parakstam, tiek instalēti tikai tie atjauninājumi instalēta lietojumprogramma. Ja atļaujat uzņēmumam Google pārvaldīt jūsu lietotnes parakstīšanas atslēgu, process būs drošāks.

Piezīme. Lietotņu parakstīšanas funkciju pakalpojumā Google Play nav obligāti jāizmanto. Varat augšupielādēt APK un pārvaldīt savas atslēgas, neizmantojot lietotņu komplektus. Tomēr, ja zaudēsit piekļuvi atslēgu krātuvei vai tas tiks uzlauzts, jūs nevarēsit atjaunināt savu lietotni un būs atkārtoti jāpublicē ar citu pakotnes nosaukumu.

Atslēgu, priekšmetu un rīku apraksti
Nosacījumi Apraksts
Lietojumprogrammas parakstīšanas atslēga

Atslēga, ko Google Play izmanto, lai parakstītu APK failus, kas piegādāti lietotāja ierīcē. Reģistrējoties lietotņu parakstīšanas programmai pakalpojumā Google Play, varat augšupielādēt esošu parakstīšanas atslēgu vai ļaut uzņēmumam Google ģenerēt jaunu.

Lejupielādes atslēga

Ir divi veidi, kā ģenerēt augšupielādes atslēgu:

  • Izmantojiet lietojumprogrammas parakstīšanas atslēgu. Ja, reģistrējoties programmai, atļāvāt uzņēmumam Google ģenerēt lietotnes parakstīšanas atslēgu, augšupielādes atslēga būs atslēga, kuru izmantojāt, parakstot pirmo lietotnes laidienu.
  • Izmantojiet atsevišķu augšupielādes atslēgu. Ja, reģistrējoties programmai, iesniedzāt savu lietotnes parakstīšanas atslēgu, drošības nolūkos varat ģenerēt jaunu augšupielādes atslēgu. Ja nevēlaties to darīt, izmantojiet lietotnes parakstīšanas atslēgu kā lejupielādes atslēgu, lai parakstītu jaunus izdevumus.
Sertifikāts (.der vai .pem)

Sertifikāts, kas satur publisko atslēgu un papildu informāciju par tā īpašnieku. Publiskās atslēgas sertifikāts ļauj ikvienam uzzināt, kurš parakstījis App Bundle vai APK failu. Šo sertifikātu var koplietot, jo tajā nav iekļauta privātā atslēga.

Lai reģistrētu atslēgas pie API nodrošinātājiem, lapā varat lejupielādēt lietojumprogrammas parakstīšanas atslēgas publisko sertifikātu Pieteikuma parakstīšana Play Console. Publiskās atslēgas sertifikātu var koplietot ar visiem, jo ​​tas neietver privāto atslēgu.

Sertifikāta pirkstu nospiedums

Īss un unikāls sertifikāta identifikators. API pakalpojumu sniedzēji bieži pieprasa īkšķa nospiedumu kopā ar pakotnes nosaukumu, lai nodrošinātu piekļuvi saviem pakalpojumiem.

Lietojumprogrammu augšupielādes un parakstīšanas sertifikātu MD5, SHA-1 un SHA-256 pirkstu nospiedumus var atrast vietnē Pieteikuma parakstīšana Play Console. Varat arī saņemt cita veida digitālo pirkstu nospiedumu. Lai to izdarītu, tajā pašā lapā lejupielādējiet oriģinālo sertifikātu DER formātā.

Java atslēgu krātuve (.jks vai .keystore) Drošības sertifikātu un privāto atslēgu uzglabāšana.
PEPK rīks

Rīks privāto atslēgu eksportēšanai no Java krātuves un šifrēšanai iesniegšanai pakalpojumā Google Play.

Kad esat nodrošinājis Google ar savu lietotnes parakstīšanas atslēgu, izvēlieties eksportēt un augšupielādēt savu atslēgu (un tās publisko sertifikātu, ja nepieciešams), pēc tam izpildiet norādījumus, lai lejupielādētu un izmantotu rīku. Varat arī lejupielādēt, skatīt un izmantot atvērtā koda PEPK rīku.

Pieteikuma parakstīšanas process

Varat augšupielādēt APK failus, kas parakstīti ar sākotnējo lietotnes parakstīšanas atslēgu, pirms vai pēc lietotnes parakstīšanas pakalpojumā Google Play.

Ja veicat jaunināšanu uz Android App Bundle komplektiem, varat tos testēt testa versijās un izmantot esošos APK produkcijas versijās. Lūk, kā tas darbojas:

  1. Jūs parakstāt App Bundle vai APK un augšupielādējat to pakalpojumā Play Console.
  2. Lietotnes parakstīšanas process ir atkarīgs no tā, ko lejupielādējat.
    • App Bundle. Google optimizē APK failus lietotņu komplektā un pēc tam paraksta tos ar lietotņu parakstīšanas atslēgu.
    • APK fails, kas parakstīts ar augšupielādes atslēgu. Google verificē jūsu parakstu, noņem to un atkārtoti paraksta APK, izmantojot lietotnes parakstīšanas atslēgu.
    • APK fails, kas parakstīts ar lietojumprogrammas parakstīšanas atslēgu. Google pārbauda parakstu.
  3. Google piegādā lietotājiem parakstītus APK failus.

Kā reģistrēties Google Play lietotņu parakstīšanas programmā

Jaunas lietojumprogrammas

1. darbība. Izveidojiet augšupielādes atslēgu

  1. Izveidojiet augšupielādes atslēgu, izpildot norādījumus.
  2. Parakstiet jauno APK failu ar augšupielādes atslēgu.

2. darbība. Sagatavojiet izlaidumu

  1. ievērojot norādījumus.
  2. Kad esat atlasījis versijas veidu, konfigurējiet savas lietotnes parakstīšanas opcijas sadaļā “Ļaujiet Google nodrošināt un pārvaldīt jūsu lietotnes parakstīšanas atslēgu”.
  3. Ja noklikšķināsit Turpināt, ģenerētā atslēga kļūs par augšupielādes atslēgu, kas tiks izmantota turpmāko laidienu parakstīšanai. Varat arī izvēlēties kādu no tālāk norādītajām iespējām Papildu iestatījumi:
    • Izmantojiet vienu atslēgu dažādām lietojumprogrammām izstrādātāja kontā (2. iespēja).
    • Augšupielādējiet esošas lietojumprogrammas parakstīšanas atslēgu (2., 3. un 4. opcija), izvēloties sev piemērotāko eksportēšanas un augšupielādes metodi. Pēc lietojumprogrammas parakstīšanas atslēgas un tās publiskā sertifikāta augšupielādes varat izmantot lietojumprogrammas parakstīšanas atslēgu kā lietojumprogrammas parakstīšanas atslēgu.

Piezīme. Lai turpinātu, jums ir jāpiekrīt lietošanas noteikumiem un jāreģistrējas lietotņu parakstīšanas programmā.

3. darbība. Reģistrējiet savu lietotnes parakstīšanas atslēgu pie API nodrošinātājiem

Ja jūsu lietojumprogramma izmanto API, tad, lai autentificētos, visticamāk, būs jāreģistrē atslēgas sertifikāts, ar kuru Google paraksta jūsu pieteikumu. Lai atrastu sertifikātu:

  1. Pierakstieties pakalpojumā Play Console.
  2. Izvēlieties lietojumprogrammu.
  3. Kreisajā pusē esošajā izvēlnē atlasiet Izlaidumu pārvaldība > Pieteikuma paraksti.
    • Ja API nodrošinātājs pieprasa cita veida pirkstu nospiedumu, varat lejupielādēt oriģinālo sertifikātu DER formātā un pārveidot to pēc vajadzības, izmantojot atbilstošos rīkus.
Publicētie pieteikumi

1. darbība. Reģistrējieties Google Play lietotņu parakstīšanas programmai

  1. Pierakstieties pakalpojumā Play Console.
  2. Izvēlieties lietojumprogrammu.
  3. Kreisajā pusē esošajā izvēlnē atlasiet Izlaidumu pārvaldība > Pieteikuma paraksti.
  4. Ja nepieciešams, izlasiet Lietošanas noteikumus un noklikšķiniet uz Pieņemt.

2. darbība Iesniedziet sākotnējo atslēgu uzņēmumam Google un ģenerējiet augšupielādes atslēgu

  1. Atrodiet sākotnējo lietotnes parakstīšanas atslēgu.
  2. Pierakstieties pakalpojumā Play Console.
  3. Izvēlieties lietojumprogrammu.
  4. Kreisajā pusē esošajā izvēlnē atlasiet Izlaidumu pārvaldība > Pieteikuma paraksti.
  5. Augšupielādējiet esošo lietotnes parakstīšanas atslēgu tādā veidā, kas vislabāk atbilst jūsu izlaišanas procesam.
  1. un augšupielādējiet sertifikātu pakalpojumā Google Play.
    • Varat arī izmantot lietojumprogrammas parakstīšanas atslēgu kā augšupielādes atslēgu.
  2. Nokopējiet lietojumprogrammas parakstīšanas sertifikāta īkšķu nospiedumus (MD5, SHA-1 un SHA-256).
    • Testēšanas nolūkos jums, iespējams, būs jāreģistrē augšupielādes atslēgas sertifikāts pie API nodrošinātāja, izmantojot sertifikāta īkšķa nospiedumu un lietojumprogrammas parakstīšanas atslēgu.

4. darbība: parakstiet nākamo lietotnes atjauninājumu, izmantojot augšupielādes atslēgu

Izlaistie lietotņu atjauninājumi ir jāparaksta ar lejupielādes atslēgu.

Kā ģenerēt augšupielādes atslēgu un atjaunināt atslēgu krātuves

Varat ģenerēt augšupielādes atslēgu, kad reģistrējaties lietotņu parakstīšanas programmai pakalpojumā Google Play, vai arī varat to ģenerēt vēlāk sadaļā Izlaidumu pārvaldība > Pieteikuma paraksti.

Lai izveidotu augšupielādes atslēgu, veiciet šīs darbības:

  1. Izpildiet Android izstrādātāju vietnē sniegtos norādījumus. Glabājiet atslēgu drošā vietā.
  2. Eksportējiet sāknēšanas atslēgas sertifikātu PEM formātā. Aizstājiet šādus argumentus ar pasvītrojumiem:
    • $ keytool -export -rfc -keystore upload-keystore.jks -alias upload -file upload_certificate.pem
  3. Kad izlaišanas procesā tiek prasīts, augšupielādējiet sertifikātu, lai reģistrētu to Google tīklā.

Ja izmantojat augšupielādes atslēgu:

  • Augšupielādes atslēga ir reģistrēta tikai Google, lai autentificētu lietotnes veidotāja identitāti.
  • Jūsu paraksts tiek noņemts no visiem augšupielādētajiem APK failiem, pirms tie sasniedz lietotājus.
Ierobežojumi
  • Augšupielādes atslēgai ir jāizmanto RSA šifrēšana, un tai ir jābūt vismaz 2048 bitu lielai.
  • DSA un EC atslēgas un RSA atslēgas, kas ir mazākas par 2048 bitiem, netiek atbalstītas.
Notiek atslēgu krātuvju atjaunināšana

Kad esat izveidojis sāknēšanas atslēgu, pārbaudiet un pēc vajadzības atjauniniet tālāk norādītās atrašanās vietas.

  • vietējā sistēma;
  • drošs lokālais serveris (ar dažādiem piekļuves kontroles sarakstiem);
  • mākoņu sistēma (ar dažādiem piekļuves kontroles sarakstiem);
  • īpaši atslēgu pārvaldības pakalpojumi;
  • Git krātuves.

Kā atjaunināt parakstīšanas atslēgu jaunām lietotņu instalācijām

Dažos gadījumos varat pieprasīt lietotnes parakstīšanas atslēgas atjauninājumu. Jaunā atslēga tiks izmantota, lai parakstītu jaunas lietojumprogrammas instalācijas un atjauninājumus, savukārt mantotā atslēga tiks izmantota, lai atjauninātu parakstītās versijas, kuras lietotāji jau ir instalējuši.

Paraksta atslēgu var atjaunināt tikai vienu reizi vienā lietojumprogrammā. Maz ticamā gadījumā, ja vienu un to pašu parakstīšanas atslēgu izmantojat vairākām lietojumprogrammām vienā un tajā pašā procesā, atslēgu nevar atjaunināt.

Pieprasiet lietojumprogrammas parakstīšanas atslēgas atjauninājumu šādos gadījumos:

  • Jums ir nepieciešama kriptogrāfiski spēcīgāka atslēga.
  • Lietotnes parakstīšanas atslēga ir apdraudēta.

Piezīme. Pieprasījums atjaunināt lietotnes parakstīšanas atslēgu pakalpojumā Play Console nav saistīts ar atslēgas nomaiņu operētājsistēmā Android P un jaunākās versijās. Pakalpojumā Google Play pašlaik netiek atbalstīta šī atslēgas nomaiņa.

Svarīgas piezīmes par atslēgu atjaunināšanu

Pirms atslēgas atjauninājuma pieprasīšanas ir svarīgi saprast, kādas izmaiņas tas radīs.

  • Ja izmantojat vienu parakstīšanas atslēgu vairākām lietotnēm, lai izmantotu vienu un to pašu kodu vai datus, jums būs jāatjaunina lietotnes, lai atpazītu gan jaunās, gan mantotās atslēgas.
  • Ja jūsu lietotnē tiek izmantota API, pirms tās atjaunināšanas noteikti reģistrējiet jauno un mantoto lietotņu parakstīšanas atslēgu sertifikātus pie API nodrošinātāja. Sertifikāti ir pieejami lapā Pieteikuma parakstīšana Play Console.
  • Ja daudzi jūsu lietotnes lietotāji instalē atjauninājumus, izmantojot failu koplietošanas tīklus, viņi varēs instalēt tikai tos atjauninājumus, kas parakstīti ar to pašu atslēgu, kas ir instalēta viņu ierīcēs. Ja lietojumprogrammas nevar atjaunināt, jo instalētā versija parakstīts ar citu atslēgu, lietotāji var to atinstalēt un atkārtoti instalēt, lai saņemtu atjauninājumus.
Pieprasiet atslēgas atjauninājumu jaunām instalācijām. Lai to izdarītu, veiciet tālāk norādītās darbības.
  1. Pierakstieties pakalpojumā Play Console.
  2. Izvēlieties lietojumprogrammu.
  3. Kreisajā pusē esošajā izvēlnē atlasiet Izlaidumu pārvaldība > Pieteikuma paraksti.
  4. Kartītē “Atjaunināt parakstīšanas atslēgu jaunām lietotņu instalācijām” atlasiet Pieprasīt atslēgas atjauninājumu.
  5. Izvēlieties, ko darīt ar ierīci.
    • Atkarībā no izvēlētās opcijas, iespējams, jums būs jāsazinās ar atbalsta dienestu, lai pabeigtu pieprasījumu.
  6. Ļaujiet pakalpojumam Google Play ģenerēt jaunu lietotnes parakstīšanas atslēgu (ieteicams) vai lejupielādēt to.
    • Pēc lietotnes parakstīšanas atslēgas atjaunināšanas, ja atslēga bija tāda pati kā augšupielādes atslēga, varat turpināt izmantot veco lietotnes parakstīšanas atslēgu kā augšupielādes atslēgu vai izveidot jaunu.
  • Ja esat publicējis savu lietotni arī ārpus pakalpojuma Google Play vai plānojat to darīt, varat ģenerēt iepriekš kopīgotu lietotnes parakstīšanas atslēgu un augšupielādēt to Google tīklā, kad reģistrējaties Google Play lietotņu parakstīšanas programmai.
  • Lai aizsargātu savu kontu, ieslēdziet divpakāpju verifikāciju visiem kontiem, kuriem ir piekļuve Play Console.
  • Kad App Bundle ir publicēts testa vai ražošanas versijā, varat atvērt App Bundle pārlūkprogrammu un lejupielādēt ZIP arhīvu, kurā ir visi APK faili konkrētai ierīcei. Šie APK faili jau ir parakstīti ar lietotnes parakstīšanas atslēgu. Varat tos instalēt ierīcē no ZIP arhīva, izmantojot utilītu komandrinda komplekta rīks.
  • Lai nodrošinātu lielāku drošību, ģenerējiet jaunu augšupielādes atslēgu, kas atšķiras no lietotnes parakstīšanas atslēgas.
  • Ja vēlaties pārbaudīt APK, kas parakstīts ar augšupielādes atslēgu, reģistrējiet atslēgu pakalpojumā vai API, kas autentifikācijai izmanto lietotnes parakstu (piemēram, Google Maps API vai Facebook SDK).
  • Ja izmantojat Google API, varat reģistrēt augšupielādes sertifikātu pakalpojumā Google Cloud Console .

Ko darīt, ja atslēga ir pazaudēta vai uzlauzta

Ja esat zaudējis piekļuvi savai privātajai augšupielādes atslēgai vai tā ir uzlauzta, jautājiet savam konta īpašniekam. Sazinoties ar atbalsta dienestu, konta īpašniekam ir jāpievieno fails upload_certificate.pem.

Kad atbalsta komanda reģistrēs jaunu augšupielādes atslēgu, jūs saņemsiet e-pasta ziņojumu un pēc tam varēsiet atjaunināt atslēgu glabātuves un reģistrēt atslēgu pie API nodrošinātājiem.

Svarīgs! Augšupielādes atslēgas atiestatīšana neietekmē lietotnes parakstīšanas atslēgu, ko Google Play izmanto, lai parakstītu APK failus, pirms tie tiek nosūtīti lietotājiem.

Vai šī informācija bija noderīga?

Kā šo rakstu var uzlabot?

Dažreiz dažas Android lietojumprogrammas kāda iemesla dēļ lietotājam nav piemērotas. Piemērs ir kaitinošas reklāmas. Un tas notiek tā - visiem labi padodas programma, bet tikai tulkojums tajā ir vai nu greizs, vai vispār nav. Vai, piemēram, programma ir izmēģinājuma versija, bet nav iespējas iegūt pilno versiju. Kā mainīt situāciju?

Ievads

Šajā rakstā mēs runāsim par to, kā izjaukt APK ar lietojumprogrammu, aplūkosim tā iekšējo struktūru, izjaukt un dekompilēt baitkodu, kā arī mēģināsim veikt vairākas izmaiņas lietojumprogrammās, kas var sniegt mums vienu vai otru labumu.

Lai to visu paveiktu patstāvīgi, būs nepieciešamas vismaz pamatzināšanas par Java valodu, kurā tiek rakstītas Android lietojumprogrammas, un XML valodu, kas tiek lietota visur Android sistēmā – no pašas aplikācijas un tās piekļuves tiesību aprakstīšanas līdz saglabājot virknes, kas tiks parādītas ekrānā. Jums būs nepieciešama arī spēja apstrādāt specializētu konsoles programmatūru.

Tātad, kāda ir APK pakotne, kurā tiek izplatīta pilnīgi visa Android programmatūra?

Lietojumprogrammu dekompilācija

Rakstā strādājām tikai ar izjauktu aplikācijas kodu, tomēr, ja veiksiet nopietnākas izmaiņas lielajās lietojumprogrammās, smali kodu būs daudz grūtāk saprast. Par laimi, mēs varam dekompilēt dex kodu Java kodā, kas, lai arī nav oriģināls un nav kompilējams atpakaļ, ir daudz vieglāk lasāms un saprotams lietojumprogrammas loģiku. Lai to izdarītu, mums ir nepieciešami divi rīki:

  • dex2jar - Dalvik baitkoda tulkotājs uz JVM baitkodu, pamatojoties uz kuru mēs varam iegūt Java kodu;
  • jd-gui ir pats dekompilators, kas ļauj iegūt lasāmu Java kodu no JVM baitkoda. Varat arī izmantot Jad (www.varanecas.com/jad); lai gan tas ir diezgan vecs, dažos gadījumos tas ģenerē lasāmāku kodu nekā Jd-gui.

Tie ir jāizmanto šādi. Vispirms mēs palaižam dex2jar, kā argumentu norādot ceļu uz apk pakotni:

%dex2jar.sh mail.apk

Rezultātā pašreizējā direktorijā parādīsies Java pakotne mail.jar, kuru jau var atvērt jd-gui, lai skatītu Java kodu.

APK pakotņu sakārtošana un iegūšana

Android lietojumprogrammu pakotne būtībā ir parasts ZIP fails, kuram nav nepieciešami īpaši rīki, lai skatītu saturu un izsaiņotu. Pietiek ar arhivētāju - 7zip priekš Windows vai konsoles unzip Linux. Bet tas ir par iesaiņojumu. Kas ir iekšā? Iekšpusē mums parasti ir šāda struktūra:

  • META-INF/- satur lietojumprogrammas digitālo sertifikātu, kas apliecina tās veidotāju, un pakotnes failu kontrolsummas;
  • res/ - dažādi resursi, ko lietojumprogramma izmanto savā darbā, piemēram, attēli, interfeisa deklaratīvs apraksts un citi dati;
  • AndroidManifest.xml- pieteikuma apraksts. Tas ietver, piemēram, nepieciešamo atļauju sarakstu, nepieciešamo Android versiju un nepieciešamo ekrāna izšķirtspēju;
  • klases.dex- apkopots lietojumprogrammas baitkods Dalvik virtuālajai mašīnai;
  • resursi.arsc- arī resursi, bet cita veida - jo īpaši virknes (jā, šo failu var izmantot rusifikācijai!).

Sarakstā minētie faili un direktoriji ir, ja ne visos, tad, iespējams, lielākajā daļā APK. Tomēr ir vēl daži mazāk izplatīti faili/direktoriji, kurus ir vērts pieminēt:

  • aktīviem- resursu analogs. Galvenā atšķirība ir tā, ka, lai piekļūtu resursam, ir jāzina tā identifikators, savukārt aktīvu sarakstu var iegūt dinamiski, lietojumprogrammas kodā izmantojot metodi AssetManager.list();
  • lib- vietējās Linux bibliotēkas, kas rakstītas ar NDK (Native Development Kit) palīdzību.

Šo direktoriju izmanto spēļu ražotāji, lai ievietotu savu spēļu dzinēju, kas rakstīts C/C++ valodā, kā arī augstas veiktspējas lietojumprogrammu veidotāji (piemēram, Google Chrome). Saprata ierīci. Bet kā iegūt interesējošās lietojumprogrammas pakotnes failu? Tā kā nav iespējams iegūt APK failus no ierīces bez saknes (tie atrodas direktorijā / data / app), un sakņu izveide ne vienmēr ir ieteicama, ir vismaz trīs veidi, kā iegūt lietojumprogrammas failu datorā:

  • APK Downloader paplašinājums pārlūkam Chrome;
  • Īsta APK Leecher lietotne;
  • dažādu failu mitināšana un warezniki.

Kuru lietot, tas ir gaumes jautājums; mēs dodam priekšroku atsevišķu lietojumprogrammu izmantošanai, tāpēc mēs aprakstīsim Real APK Leecher lietošanu, jo īpaši tāpēc, ka tas ir rakstīts Java un attiecīgi tas darbosies pat Windows, pat nix.

Pēc programmas palaišanas jums jāaizpilda trīs lauki: E-pasts, Parole un Ierīces ID - un jāizvēlas valoda. Pirmie divi ir jūsu Google konta e-pasts un parole, ko izmantojat ierīcē. Trešais ir ierīces ID, un to var iegūt, sastādot kodu zvanītājā # #8255## un pēc tam atrodiet rindu Ierīces ID. Aizpildot, jāievada tikai ID bez android prefiksa.

Pēc aizpildīšanas un saglabāšanas bieži tiek parādīts ziņojums “Kļūda savienojuma laikā ar serveri”. Tam nav nekāda sakara ar Google Play, tāpēc droši ignorējiet to un meklējiet jūs interesējošās pakotnes.

Pārskatīšana un modificēšana

Pieņemsim, ka atradāt jūs interesējošo pakotni, lejupielādējāt to, izpakojāt... un, mēģinot apskatīt kādu XML failu, jūs pārsteigts atklājāt, ka fails nav teksta fails. Kā to dekompilēt un kā vispār strādāt ar pakotnēm? Vai tiešām ir nepieciešams instalēt SDK? Nē, jums nav jāinstalē SDK. Faktiski, lai veiktu visas APK pakotņu izpakošanas, modificēšanas un iepakošanas darbības, ir nepieciešami šādi rīki:

  • ZIP arhivētājs izsaiņošanai un iepakošanai;
  • smali- Dalvik virtuālās mašīnas baitu koda montētājs/demontētājs (code.google.com/p/smali);
  • aapt- rīks resursu pakošanai (pēc noklusējuma resursi tiek glabāti binārā formā, lai optimizētu lietojumprogrammas veiktspēju). Iekļauts Android SDK, taču to var iegūt atsevišķi;
  • Parakstītājs- rīks modificētas pakotnes digitālai parakstīšanai (bit.ly/Rmrv4M).

Jūs varat izmantot visus šos rīkus atsevišķi, taču tas ir neērti, tāpēc labāk ir izmantot augstāka līmeņa programmatūru, kas izveidota uz to pamata. Ja izmantojat operētājsistēmu Linux vai Mac OS X, ir pieejams rīks apktool . Tas ļauj izpakot resursus to sākotnējā formā (ieskaitot bināros XML un arsc failus), pārbūvēt pakotni ar modificētiem resursiem, taču tas nezina, kā parakstīt pakotnes, tāpēc parakstītāja utilīta būs jāpalaiž manuāli. Neskatoties uz to, ka utilīta ir rakstīta Java valodā, tās instalēšana ir diezgan nestandarta. Vispirms jums jāiegūst pats jar fails:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ eksportēt PATH=~/bin:$PATH

Ja strādājat operētājsistēmā Windows, tad tam ir lielisks rīks Virtual Ten Studio , kas arī uzkrāj visus šos rīkus (ieskaitot pašu apktool), bet CLI interfeisa vietā nodrošina lietotājam intuitīvu grafisko interfeisu, ar kuru veikt izpakošanas, izjaukšanas un dekompilēšanas darbības ar dažiem klikšķiem. Šis rīks ir ziedojumu trauks, tas ir, dažreiz parādās logi ar ierosinājumu iegūt licenci, bet galu galā to var pieļaut. Nav jēgas to aprakstīt, jo interfeisu var saprast dažu minūšu laikā. Bet apktool, ņemot vērā tā konsoles raksturu, ir jāapspriež sīkāk.


Apsveriet apktool opcijas. Īsāk sakot, ir trīs galvenās komandas: d (dekodēt), b (build) un if (instalēt ietvaru). Ja ar pirmajām divām komandām viss ir skaidrs, tad ko dara trešā, nosacījuma operators? Tas izpako norādīto UI ietvaru, kas ir nepieciešams sistēmas pakotnes sadalīšanai.

Apsveriet interesantākās pirmās komandas iespējas:

  • -s- neizjauciet dex failus;
  • -r- neizpakot resursus;
  • -b- neievietojiet atkļūdošanas informāciju dex faila izjaukšanas rezultātos;
  • -- rāmja ceļš- izmantojiet norādīto lietotāja interfeisa sistēmu, nevis iebūvēto apktool. Tagad apsveriet dažas komandas b iespējas:
  • -f- piespiedu montāža bez izmaiņu pārbaudes;
  • -a- norādiet ceļu uz aapt (rīks APK arhīva izveidei), ja kāda iemesla dēļ vēlaties to izmantot no cita avota.

Apktool izmantošana ir ļoti vienkārša, vienkārši norādiet vienu no komandām un ceļu uz APK, piemēram:

$ apktool d mail.apk

Pēc tam visi izvilktie un izjauktie pakotņu faili parādīsies pasta direktorijā.

Sagatavošana. Atspējot reklāmas

Teorija, protams, ir laba, bet kāpēc tā ir vajadzīga, ja nezinām, ko darīt ar neizpakoto iepakojumu? Mēģināsim pielietot teoriju savā labā, proti, modificējam kādu programmatūru tā, lai tā mums nerādītu reklāmas. Piemēram, lai tas būtu Virtual Torch - virtuālā lāpa. Mums šī programmatūra ir ideāla, jo tā ir pilna ar kaitinošām reklāmām un ir pietiekami vienkārša, lai nepazustu koda mežonībā.


Tātad, izmantojot kādu no iepriekš minētajām metodēm, lejupielādējiet lietojumprogrammu no tirgus. Ja nolemjat izmantot Virtuous Ten Studio, vienkārši atveriet lietojumprogrammā APK failu un izpakojiet to, kuram izveidojiet projektu (Fails -> Jauns projekts), tad konteksta izvēlne projektu, izvēlieties Importēt failu. Ja jūsu izvēle bija apktool, tad pietiek ar vienas komandas izpildi:

$ apktool d com.kauf.particle.virtualtorch.apk

Pēc tam direktorijā com.kauf.particle.virtualtorch parādīsies failu koks, kas ir līdzīgs iepriekšējā sadaļā aprakstītajam, bet ar papildu smali direktoriju dex failu un faila apktool.yml vietā. Pirmajā ir izjaukts lietojumprogrammas izpildāmā dex faila kods, otrajā ir pakalpojuma informācija, kas nepieciešama apktool, lai apkopotu pakotni atpakaļ.

Pirmā vieta, kas mums jāmeklē, protams, ir AndroidManifest.xml. Un šeit mēs uzreiz saskaramies ar šādu rindu:

Ir viegli uzminēt, ka viņa ir atbildīga par interneta pieslēguma lietošanas atļauju piešķiršanu lietojumprogrammai. Patiesībā, ja mēs vienkārši vēlamies atbrīvoties no reklāmām, mums, visticamāk, pietiks ar aplikācijas aizliegšanu internetā. Mēģināsim to izdarīt. Izdzēsiet norādīto rindu un mēģiniet kompilēt programmatūru, izmantojot apktool:

$ apktool b com.kauf.particle.virtualtorch

Iegūtais APK fails parādīsies direktorijā com.kauf.particle.virtualtorch/build/. Taču to nevar instalēt, jo tai nav ciparparaksta un failu kontrolsummu (tam vienkārši nav META-INF/ direktorija). Mums ir jāparaksta pakotne ar utilītu apk-signer. Palaists. Interfeiss sastāv no divām cilnēm - pirmajā (Key Generator) mēs izveidojam atslēgas, otrajā (APK Signer) mēs parakstāmies. Lai izveidotu mūsu privāto atslēgu, aizpildiet šādus laukus:

  • Mērķa fails- atslēgu krātuves izvades fails; tas parasti glabā vienu atslēgu pāri;
  • Parole Un Apstiprināt- parole uzglabāšanai;
  • Alias- atslēgas nosaukums repozitorijā;
  • Alias ​​parole Un Apstiprināt- slepenās atslēgas parole;
  • Derīgums- Derīguma termiņš (gados). Noklusējuma vērtība ir optimāla.

Pārējie lauki parasti nav obligāti, taču jums ir jāaizpilda vismaz viens.


BRĪDINĀJUMS

Lai parakstītu lietojumprogrammu ar apk-signer, jums ir jāinstalē Android SDK un lietojumprogrammas iestatījumos jānorāda pilns ceļš uz to.

Visa informācija tiek sniegta tikai informatīviem nolūkiem. Ne redaktori, ne autors nav atbildīgi par iespējamo kaitējumu, ko nodara šī raksta materiāli.

Tagad varat parakstīt APK ar šo atslēgu. Cilnē APK parakstītājs atlasiet tikko ģenerēto failu, ievadiet tā paroli, atslēgas aizstājvārdu un paroli, pēc tam atrodiet APK failu un drosmīgi noklikšķiniet uz pogas "Parakstīt". Ja viss noritēs labi, paka tiks parakstīta.

INFORMĀCIJA

Tā kā mēs parakstījām pakotni ar savu atslēgu, tā būs pretrunā ar sākotnējo lietojumprogrammu, kas nozīmē, ka, mēģinot atjaunināt programmatūru, izmantojot tirgu, mēs saņemsim kļūdu.

Tikai trešās puses programmatūrai ir nepieciešams ciparparaksts, tādēļ, ja modificējat instalētās sistēmas lietojumprogrammas, kopējot tās direktorijā /system/app/, tās nav jāparaksta.

Pēc tam mēs nolaižam paketi viedtālrunī, instalējam un palaižam. Voila, reklāma ir pazudusi! Taču tā vietā parādījās ziņojums, ka mums nav interneta vai nav atbilstošu atļauju. Teorētiski ar to varētu pietikt, taču ziņa izskatās kaitinoša, un, godīgi sakot, mums vienkārši paveicās ar stulbu pieteikumu. Labi uzrakstīta programmatūra, visticamāk, noskaidros savus akreditācijas datus vai pārbaudīs interneta savienojumu un citādi vienkārši atteiksies sākt. Kā būt šajā gadījumā? Protams, rediģējiet kodu.

Parasti lietojumprogrammu autori izveido īpašas klases reklāmu rādīšanai un šo klašu metožu izsaukšanai lietojumprogrammas palaišanas laikā vai kādas no tās "aktivitātēm" (vienkāršāk sakot, lietojumprogrammu ekrāni). Mēģināsim atrast šīs klases. Mēs ejam uz smali direktoriju, tad com (orgā ir tikai atvērtā grafiskā bibliotēka cocos2d), tad kauf (tieši tur, jo tas ir izstrādātāja vārds un tur ir viss viņa kods) - un šeit tas ir, mārketinga direktorijs. Iekšpusē mēs atrodam virkni failu ar smali paplašinājumu. Tās ir klases, un visievērojamākā no tām ir Ad.smali klase, pēc kuras nosaukuma ir viegli uzminēt, ka tajā tiek rādītas reklāmas.

Mēs varētu mainīt tās darbības loģiku, taču būtu daudz vieglāk muļķīgi noņemt jebkuras tās metodes izsaukumus no pašas lietojumprogrammas. Tāpēc mēs izejam no mārketinga direktorijas un dodamies uz blakus esošo daļiņu direktoriju un pēc tam uz virtualtorch. Īpašu uzmanību šeit ir pelnījis fails MainActivity.smali. Šī ir standarta Android klase, ko ģenerē Android SDK un kas ir iestatīta kā lietojumprogrammas ieejas punkts (analoģiski C galvenajai funkcijai). Atveriet failu rediģēšanai.

Iekšā ir smali kods (vietējais montētājs). Tas ir diezgan mulsinoši un grūti lasāms sava zemā līmeņa dēļ, tāpēc mēs to nepētīsim, bet vienkārši atradīsim kodā visus pieminētos sludinājumus un komentēsim tos. Mēs iebraucam meklēšanā virknē "Reklāma" un nonākam 25. rindā:

Lauka privātā reklāma:Lcom/kauf/marketing/Ad;

Šeit tiek izveidota lauka reklāma, lai saglabātu klases Ad objektu. Mēs komentējam, rindas priekšā uzstādot zīmi ###. Turpinām meklēšanu. 423. rindiņa:

Jauna instance v3, Lcom/kauf/marketing/Ad;

Šeit tiek izveidots objekts. Mēs komentējam. Turpinām meklēšanu un 433., 435., 466., 468., 738., 740., 800. un 802. rindā atrodam Ad klases metožu izsaukumus. Mēs komentējam. Izskatās, ka tas ir viss. Mēs ietaupām. Tagad iepakojums ir jāsaliek atpakaļ un jāpārbauda tā veiktspēja un reklāmas klātbūtne. Eksperimenta tīrības labad mēs atgriežam no AndroidManifest.xml noņemto rindiņu, savācam pakotni, parakstām to un instalējam.

Mūsu jūrascūciņa. Redzama reklāma

Ak-pa! Reklāma pazuda tikai lietojumprogrammas darbības laikā, bet palika galvenajā izvēlnē, ko mēs redzam, palaižot programmatūru. Tātad, pagaidiet, bet ieejas punkts ir MainActivity klase, un sludinājums pazuda, kamēr lietojumprogramma darbojās, bet palika galvenajā izvēlnē, tāpēc ieejas punkts ir atšķirīgs? Lai atklātu patieso ievades punktu, mēs atkārtoti atveram failu AndroidManifest.xml. Un jā, tajā ir šādas rindas:

Viņi mums (un vēl svarīgāk, android) norāda, ka darbība ar nosaukumu Sākt ir jāuzsāk, reaģējot uz android.intent.action.MAIN nolūka (notikuma) ģenerēšanu no kategorijas android.intent.category.LAUNCHER. Šis notikums tiek ģenerēts, kad palaidējā pieskaraties lietojumprogrammas ikonai, tādējādi tas nosaka ievades punktu, proti, sākuma klasi. Visticamāk, programmētājs vispirms uzrakstīja lietojumprogrammu bez galvenās izvēlnes, kuras ieejas punkts bija standarta MainActivity klase, un pēc tam pievienoja jaunu logu (aktivitāti), kas satur izvēlni un aprakstīja klasē Sākt, un manuāli padarīja to par ierakstu. punktu.

Atveram failu Start.smali un atkal meklējam rindiņu "Ad", 153. un 155.rindiņā atrodam FirstAd klases pieminēšanu. Tas ir arī avota kodā un, spriežot pēc nosaukuma, ir atbildīgs par reklāmu rādīšanu galvenajā ekrānā. Mēs skatāmies tālāk, ir izveidota FirstAd klases instance un nolūks atbilstoši kontekstam, kas saistīts ar šo gadījumu, un pēc tam etiķete cond_10, nosacītā pāreja uz kuru tiek veikta tieši pirms klases gadījuma izveides. :

If-ne p1, v0, :cond_10 .line 74 new-instance v0, Landroid/content/Intent; ... :cond_10

Visticamāk, programma kaut kā nejauši aprēķina, vai galvenajā ekrānā ir jārāda reklāmas, un, ja nē, pāriet tieši uz cond_10. Labi, vienkāršosim viņas uzdevumu un aizstāsim nosacīto pāreju ar beznosacījumu pāreju:

#if-ne p1, v0, :cond_10 goto:cond_10

Kodā vairs nav pieminēts FirstAd, tāpēc mēs aizveram failu un atkārtoti saliekam savu virtuālo lāpu, izmantojot apktool. Kopējiet viedtālrunī, instalējiet, palaidiet. Voila, visas reklāmas ir pazudušas, apsveicam mūs visus.

Rezultāti

Šis raksts ir tikai īss ievads Android lietojumprogrammu atvēršanas un modificēšanas metodēm. Daudzas problēmas palika aizkulisēs, piemēram, aizsardzības noņemšana, neskaidra koda parsēšana, lietojumprogrammu resursu tulkošana un aizstāšana, kā arī lietojumprogrammu modificēšana, kas rakstītas ar izmantojot android NDK. Taču ar pamatzināšanām, to visu saprast ir tikai laika jautājums.

Ziņas skatījumi: 5 618

Android studija sniedz plašas iespējas gan lietojumprogrammu izstrādei, gan automatizācijas un komforta palielināšanai programmēšanas laikā.

Ja izmantojat veidošanas sistēmu gradle lai izveidotu savas lietojumprogrammas, varat arī iestatīt dažas opcijas parakstu izveidei savām lietojumprogrammām.

Jūs, iespējams, nevēlaties publicēt savas parakstīšanas atslēgas, paroles un lietotājvārdus publiskā (vai pat privātā) repozitorijā. Tāpēc atslēgu, paroli un lietotājvārdu varat definēt kā rekvizītus atsevišķā failā.

Pirms sākat parakstīt pieteikumu, failā gradle.properties ir jāizveido jauns rekvizīts. Sauksim to keys.repo un kā vērtību norādiet ceļu uz mapi, kurā pēc tam atradīsies atslēgu krātuve un fails ar rekvizītiem (piemēram, C:/Lietotāji/Lietotājvārds/.parakstīšana).

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

Pēc tam jums ir jāizveido šī mape vai, ja esat norādījis esošu, atveriet to. Tam ir jāizveido fails YourProjectName.properties, kurā kā rekvizīti šādā formā tiks ierakstīts ceļš uz atslēgu krātuvi, atslēgas aizstājvārds un parole.

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=KeyAlias RELEASE_KEY_PASS=******

Kā izveidot atslēgu krātuvi?

Ja jums nav atslēgu krātuves, varat to viegli izveidot, izmantojot Android Studio. Lai to izdarītu, atlasiet izvēlnes vienumu Būvēt -> Ģenerēt parakstītu APK.

Parādītajā logā noklikšķiniet uz Izveidot jaunu... Rezultātā tiks atvērts logs, kurā varēsiet norādīt, kur atradīsies atslēgu krātuve (šajā nodarbībā labāk ir uzreiz izvēlēties ceļu, kuru norādījāt YourProjectName.propertiesīpašumā RELEASE_STORE_FILE), kā arī dati par atslēgu.

Pēc tam jums ir jāizveido mape Jūsu projekta nosaukums un pārsūtiet tur vajadzīgo atslēgu krātuves failu.

Tagad varat pāriet tieši uz parakstīšanas procesu. Lai to izdarītu, projektā ir jāatver fails celt.gradle(atrodas lietotņu mapē). Tā iekšpusē blokā Android jums jāpievieno šāds kods.

SigningConfigs ( atkļūdošanas ( /* šeit nav izmaiņu */ ) laidiens ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/JūsuProjektaNosaukums.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"] keyParoles rekvizīti["RELEASE_KEY_PASS"] ) ) else ( println "==================== = ================================" println " - Lūdzu, konfigurējiet laidiena kompilācijas vidi, piemēram, ~/. parakstīšanas direktorijs" println "============================================== =========" ) ) )

Kādas ir parakstu shēmas?

Ir divas APK paraksta iegūšanas shēmas: v1 JAR Un v2 pilns APK.

Pirmajā gadījumā parakstieties JAR-fails, kas ir tradicionālais parakstīšanas veids. V1 paraksts neaizsargā dažas APK daļas, piemēram, ZIP metadatus. APK verificētājam ir jāapstrādā daudzas neuzticamas (vēl nav verificētas) datu struktūras un pēc tam jāizmet dati, kas nav parakstīti, atstājot daudz vietas uzbrukumiem. Turklāt APK verificētājam ir jāatspiež visi saspiestie ieraksti, kas tērē daudz laika un atmiņas. Lai risinātu šīs problēmas, tika izstrādāta otrā shēma v2 pilna APK.

Shēma v2 tika ieviesta Android 7.0 Nougat (API 25) un darbojas kopš versijas Android Studio 2.2 Un Android Gradle spraudnis 2.2. Šī shēma nodrošina ātrāku lietojumprogrammu instalēšanu un labu aizsardzību pret nesankcionētām APK izmaiņām. APK saturs tiek jaukts un parakstīts, pēc tam saņemts APK parakstu bloks ievietots APK.

Validācijas laikā v2 shēma apstrādā APK kā blob un veic paraksta verifikāciju visam failam. Jebkādas APK faila izmaiņas, tostarp ZIP metadatu izmaiņas, padara parakstu nederīgu. Šis pārbaudes veids ir daudz ātrāks un ļauj atklāt vairāk nesankcionētu modifikāciju.

Jaunais formāts ir saderīgs ar atpakaļejošu datumu, tāpēc ar jauno shēmu parakstītos APK failus var instalēt vecākās ierīcēs (kas vienkārši ignorēs jauno parakstu), ja vien šie APK faili ir parakstīti arī ar v1 shēmu.

Parakstīšanai pēc noklusējuma tiek izmantotas abas shēmas, lai lietojumprogrammas varētu instalēt jebkurā ierīcē. Tomēr, ja nepieciešams, varat atspējot v1 vai v2 parakstīšanu. Lai to izdarītu, iepriekš minētajā blokā esošajā kodā atbrīvot vienkārši pievienojiet šādas rindas.

V1SigningEnabled false

V2SigningEnabled false

Ir arī svarīgi ņemt vērā, ka pirms parakstīšanas ar v2 shēmu ir jāparaksta, izmantojot v1 shēmu, jo APK nepārsniegs v2, ja tas tiks parakstīts ar papildu sertifikātiem pēc tam, kad tas ir parakstīts ar v2 shēmu.

Pēc koda pievienošanas norādiet šo kodu blokā būvēšanas veidi iekšā atbrīvot. Piemēram:

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

Tagad jūs varat droši piekļūt izvēlnes vienumam Būvēt izvēlēties Veidojiet APK, iepriekš mainot montāžas veidu no atkļūdošana ieslēgts atbrīvot. Kā redzat, šī metode ir ērta ar to, ka tā ir automātiska, tā ir jākonfigurē tikai vienu reizi, un jūsu atslēgu krātuves var būt drošas.

Tātad, jūs esat strādājis daudzas dienas (un varbūt naktis), un tagad jūsu pirmā hibrīda mobilā lietojumprogramma ir gatava. Tas ir diezgan stabils, lielākā daļa kritisko kļūdu ir slēgtas. Ir palikuši mazi, bet, atceroties, ka perfekcionisms ir ļaunums, jūs pieņemat stingru lēmumu publicēt pieteikumu.

Priekšnoteikums tam ir parakstīta APK faila klātbūtne. Kā parakstīt apk failu, jūs uzzināsit no šī raksta.

neliela atkāpe

Kad mans mājdzīvnieku projekts tuvojās izlaišanai, sāku meklēt informāciju, kā ātri un nesāpīgi publicēt aplikāciju. Daudzi atrastie norādījumi izskatījās vienkārši. Es izvēlējos Ionic framework autoru norādījumus, uz kuriem tika izstrādāta aplikācija. Ne viss izdevās ar pirmo reizi, ir vairākas funkcijas. Parakstīšanas process ir aprakstīts šajā rakstā, ir izcelti svarīgi punkti.

Sākotnējie dati

Es pieņemu, ka jums ir viss nepieciešamais hibrīda izstrādei mobilās lietojumprogrammas izmantojot Apache Cordova. Jāinstalē:
  • Apache Cordova
  • Java izstrādes komplekts
  • Android SDK rīki
lcf tiek izmantots kā projekta un lietojumprogrammas nosaukums. Ja nepieciešams, aizstājiet ar sava projekta nosaukumu.

Aiziet

Vispirms jums ir jāizveido lietojumprogrammas laidiena versija. Bet pirms tam pārliecināsimies, ka visi nevajadzīgie spraudņi ir noņemti. Piemēram, mums nav nepieciešams spraudnis, kas drukā atkļūdošanas informāciju konsolē. Noņemsim to:

$ cordova spraudnis rm cordova-plugin-console
Lai ģenerētu Android versijas versiju, izmantojiet komandu būvēt ar karogu --atbrīvot:

$ cordova build — izlaidiet Android
Šī komanda izveidos neparakstīts APK fails direktorijā:

platformas/android/build/outputs/apk
Piemēram platformas/android/build/outputs/apk/ android-release-unsigned.apk. Pēc tam mums jāparaksta šis fails un jāpalaiž utilīta zipalign lai optimizētu un sagatavotu failu pakalpojumam Google Play.

Lai parakstītu failu, ir nepieciešams sertifikāts. Izveidosim to, izmantojot utilītu galvenais rīks kas ir iekļauts JDK:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -validity 10000
Svarīgs

Parametra -alias vērtība ir jāatceras, bet labāk to pierakstīt. Iepriekš minētajā piemērā tas ir vienāds ar lcf (ar Loyal Client Free lietojumprogrammas nosaukuma pirmajiem burtiem). Sīkāku informāciju šeit nesniegšu, ja interesē, rakstiet komentāros, pastāstīšu vairāk.

Alias ​​tiek izmantots katru reizi, parakstot * lietojumprogrammas. Lai to būtu vieglāk atcerēties, izmantojiet atslēgu krātuves faila nosaukumu kā aizstājvārdu, piemēram:


-keystore hello-world.keystore -alias hello-world -keystore weather-app.keystore -alias weather-app -keystore todo.keystore -alias todo
* Jums ir jāparaksta pieteikums ar katru atjauninājumu laidienu

Lietderība galvenais rīks uzdod virkni jautājumu. Kopā to būs 8. Lai jau iepriekš būtu priekšstats par jautājumiem un aptuvenām atbildēm, tie visi ir norādīti zemāk, zem spoilera.

atslēgas rīku jautājumi un atbilžu paraugi

1. Ievadiet atslēgu krātuves paroli:
Šeit jums jāievada faila parole (vismaz 6 rakstzīmes). Ievadītā parole ir jāpieraksta drošā vietā, tā nepieciešama katru reizi, parakstot iesniegumu.

2. Atkārtoti ievadiet jauno paroli:
Atkārtotas ievades parole.

3. Kāds ir tavs vārds un uzvārds?
: Ivans Petrovs
Jūsu vārds un uzvārds. Kvadrātiekavas norādītā vērtība ir noklusējuma vērtība.

4. Kāds ir jūsu organizatoriskās vienības nosaukums?
: IT
Jūsu uzņēmuma nodaļas nosaukums. Varat atstāt tukšu, es precizēju TO.

5. Kāds ir jūsu organizācijas nosaukums?
: 2 izstrādātāji
Jūsu organizācijas nosaukums. Norādiet, ja ir.

6. Kāds ir jūsu pilsētas vai apdzīvotās vietas nosaukums?
: Maskava
Pilsētas nosaukums

7. Kāds ir jūsu štata vai provinces nosaukums?
: MO
Reģiona nosaukums

8. Kāds ir šīs vienības divu burtu valsts kods?
: LV
Valsts kods. Es norādu RU.

: y

Apstipriniet, vai viss ir pareizi, vai nospiediet taustiņu Enter, lai ievadītu vēlreiz.


Beigās parādīsies ziņojums par veiksmīgu atslēgas ģenerēšanu. Jums tiks piedāvāts iestatīt privātās atslēgas paroli (ja vēlaties atstāt to pašu, ko sertifikātam, nospiediet taustiņu Enter):

Tiek ģenerēts 2 048 bitu RSA atslēgu pāris un pašparakstīts sertifikāts (SHA256arRSA) ar derīguma termiņu 10 000 dienas: CN=Ivans Petrovs, OU=IT, O=2attīstītāji, L=Maskava, ST=MO, C=RU Ievadiet atslēgu parole priekš (ATGRIEZT, ja tāda pati kā atslēgu krātuves parole):
Fails tiks izveidots pašreizējā direktorijā lcf.keystore.

Svarīgs

Izveidotais fails ir jāsaglabā drošā vietā. Ja izmantojat privātu repozitoriju, failu var pievienot kopā ar lietojumprogrammas pirmkodiem. Parasti sertifikātus vislabāk glabāt atsevišķi. Ja pazaudēsit sertifikātu, nevarēsit izlaist lietotņu atjauninājumus.

Atlikušas divas darbības, un jums būs pieejams izplatīšanai gatavs APK fails. Mēs turpinām tieši pie parakstīšanas.

Lai parakstītu apk failu, izmantojiet utilītu jarsigner, kas arī ir iekļauts JDK.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Sertifikāta nosaukums tiek norādīts aiz parametra - atslēgu krātuve, aizstājvārds - aiz faila nosaukuma.

Visbeidzot, lai optimizētu apk failu, mēs izmantosim utilītu zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Pēdējais parametrs ir faila nosaukums, kuru augšupielādēsit pakalpojumā Google Play.

Svarīgs.

Lietderība zipalign tā ir daļa no Android SDK rīkiem, un to var atrast šeit:

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

Secinājums

Tagad jums ir pieejams apk fails, kas ir gatavs izplatīšanai, ko var augšupielādēt pakalpojumā Google Play. Aizpildiet aprakstu, nosakiet sava pieteikuma vērtējumu un droši noklikšķiniet uz "Publicēt".
 
Raksti Autors temats:
Meklētājprogrammu vēsture
Sveiki visiem! Šodien būs raksts par pasaules meklētājprogrammām, kuras vispār pastāv, kad tās parādījās, kas brauc tieši Krievijā un kas ir uz visas zemeslodes. Raksts izrādījās milzīgs, tāpēc apsēdieties ērti, vēlams, sagatavojot tos
Veidi, kā palielināt datora RAM
Kā es varu zināt, vai mana datora atmiņu var jaunināt? Pienāk brīdis, kad sāc saprast, ka dators vairs netiek galā ar saviem uzdevumiem, taču tas nenozīmē, ka jāiegādājas jauns, it īpaši, ja procesoram ir tikai divi vai trīs gadi. Visas h
Kāpēc Pripjatas stalkera zvans izlido rentgena starā
Liels skaits Microsoft produktu lietotāju ziņo par Windows 10 aktivizēšanas zaudēšanu un Pro versijas pārveidošanu uz Home. Lietotāji tiek informēti par atslēgu, kurai beidzies derīguma termiņš, un, mēģinot atkārtoti aktivizēt, viņi saņem kļūdu 0x803fa067 for Windo
css elementa tipa atlasītājs
CSS atlasītājs ir šī elementa vai elementu grupas apraksts, kas pārlūkprogrammai norāda, kuru elementu atlasīt, lai tam piemērotu stilu. Apskatīsim pamata CSS atlasītājus.1) .x .topic-title ( fona krāsa: dzeltena; )