.apk ֆայլի ստորագրում jarsigner կոմունալ ծրագրի միջոցով: Ինչպես ճիշտ ստորագրել APK խաղը կամ հավելվածը Android-ում Ինչպես փոխել Android հավելվածի ստորագրությունը

Քանի որ ես ինքս գուգլեցի հարցը ինչպես ստորագրել apk ֆայլը», ես գիտեմ, որ ամեն ինչում այնքան էլ հեշտ չէ գտնել իսկապես աշխատող և հասկանալի հրահանգ: Այդ իսկ պատճառով ես որոշեցի ինքս նյութ գրել, թե ինչպես ճիշտ ստորագրել ձեր ծրագիրը կամ խաղը Android-ում:

Ինչպես այժմ հայտնի է թվային ստորագրություն, ձեր ստեղծագործությունը չի կարող տեղադրվել շուկայում, և սա արդեն լուրջ է: Շատ երիտասարդ Android ծրագրավորողներ նկատել են, այսպես ասած, սկսնակները ամբողջովին մոռանում են ստորագրել իրենց հավելվածը և փորձում են ինչ-որ բան անել դրա հետ ավելի ուշ, և բոլորը զարմանում են, թե ինչու են նրանք դա անում: Իրենց APK ֆայլով հնարավոր չէ կատարել այս կամ այն ​​գործողությունը։

Այսպիսով, եկեք չքաշենք այն և անմիջապես սկսենք նրանից, թե ինչպես կարող եք ստորագրել ձեր apk ֆայլը և ինչպես իրականում օգտագործել այն ցանկալի արդյունքի հասնելու համար:

Այս մեթոդը բոլոր թվարկվածներից ամենաճիշտն է, ուստի մենք այն նկարագրելու ենք այս նյութում: Մենք կպատրաստենք մեր սեփական բանալիները մեր տվյալներով և վկայագրերով և կօգտագործենք դրանք՝ ստորագրելու ձեր ստեղծած հավելվածը:

Աշխատանքի համար մեզ անհրաժեշտ են՝ OpenSSL և SignApk:

Նախ, եկեք պատրաստենք վկայագիր և ստորագրման բանալի: Տեղադրեք OpenSSL-ը: Տեղադրման ընթացքում տեղադրողը ձեզ հուշում է պատճենել բաղադրիչները Windows թղթապանակում, ընտրել Bin թղթապանակը, որը կլինի այն վայրը, որտեղ դուք տեղադրում եք ամբողջ OpenSSL-ը:

Այժմ բացեք համակարգի ադմինիստրատորի անունից (սա շատ կարևոր է) հրամանի տողը: Այնուհետև հրամանի տողում անցեք bin թղթապանակ, որը գտնվում է այն պանակում, որտեղ դուք տեղադրել եք OpenSSL-ը (օրինակ. C:\OpenSSL\bin\կամ C:\Program Files\OpenSSL\bin\) Եթե ​​չգիտեք, մեկ այլ թղթապանակ տեղափոխելը կատարվում է հրամանով cd. Այսինքն՝ ցանկալի թղթապանակ գնալու համար պետք է գործարկել հետևյալ հրամանը.

cd C:\OpenSSL\bin\

Երբ դուք գտնվում եք Bin թղթապանակում, կարող եք ուղղակիորեն անցնել վկայականի և բանալիի ստեղծմանը:

Քայլ 1(Մենք կատարում ենք բանալիների արտադրություն 1024 բիթ երկարությամբ)

Գործարկեք հրամանը.

openssl genrsa -out key.pem 1024

Քայլ 2(Բանալին հիման վրա մենք ստեղծում ենք վկայագրի հարցում)

Գործարկեք հրամանը.

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

Այս փուլում դուք պետք է մուտքագրեք ձեր տվյալները, որոնք վկայականում կբացահայտեն ձեզ:

Քայլ 3 (Ստեղծեք մասնավոր բանալի վկայականից)

Գործարկեք հրամանը.

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

Քայլ 4(Կատարել հանրային բանալիների ստեղծում)

Գործարկեք հրամանը.

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

Այս փուլում ավարտված է այն ֆայլերի ստեղծումը, որոնք մեզ անհրաժեշտ են ձեր խաղերի և հավելվածների ստորագրման համար: օգտագործելով ստեղծված բանալին և վկայականը, դուք կարող եք ստորագրել Android-ում այնքան խաղեր և հավելվածներ, որքան ցանկանում եք:

Եվ հիմա փաստորեն, եկեք սկսենք ստորագրել դիմումը: Բացեք արխիվը SingApk-ից, որը ներբեռնվել է վերևի հղումից: Տեղափոխեք Bin թղթապանակից, որտեղ մենք ստեղծել ենք վկայագիրը և բանալի 2 ֆայլ. վկայական.pemԵվ բանալի.pk8դեպի այն թղթապանակը, որտեղ դուք բացել եք SingApk-ը: Windows-ը պետք է ցուցադրի ֆայլի փոխարինման երկխոսություն՝ փոխարինել:

Այժմ, որպեսզի ստորագրեք apk ֆայլը եզակի թվային ստորագրությամբ, որը դուք ինքներդ եք ստեղծել, պարզապես քաշեք ձեր apk ֆայլը դեպի sign_APK.bat. Որպեսզի ֆայլը մի պատուհանից մյուսը չքաշեք (սա հարմար չէ), ձեր apk ֆայլը տեղափոխեք SingApk-ով թղթապանակ: Կատարումից հետո ֆայլը կհայտնվի SingApk թղթապանակում apk_signed.apk, որը կլինի ձեր ստորագրած դիմումը կամ խաղը։

Հավելվածի մուտքագրման գործառույթով Google Play Google-ը կարող է կառավարել ձեր հավելվածի ստորագրման բանալին և պաշտպանել այս բանալին և օգտագործել այն՝ ստորագրելու ձեր APK-ները բաշխման համար: Պահպանման այս մեթոդը կպաշտպանի ձեզ բանալին կորցնելու կամ կեղծելու դեպքում:

Կարևոր. Android App Bundles-ը (հավելվածների հրապարակման առաջարկվող ձևաչափը) օգտագործելու համար նախքան App Bundle-ը Play Console-ում վերբեռնելը պետք է գրանցվեք Google Play հավելվածների ստորագրման ծրագրում:

Հաշվի սեփականատերերը և գլոբալ արտադրության կառավարման թույլտվություններ ունեցող օգտվողները, ովքեր ընդունել են Օգտագործման պայմանները, կարող են գրանցվել: Դուք կարող եք միաժամանակ գրանցել միայն մեկ հավելված Google Play հավելվածների ստորագրման ծրագրում:

Աշխատանքային սկզբունքներ

Երբ դուք օգտագործում եք հավելվածների ստորագրման գործառույթը Google Play-ում, ձեր բանալիները պահվում են նույն ենթակառուցվածքում, ինչ Google բանալիները և պաշտպանված են բանալիների կառավարման հատուկ ծառայության կողմից: Google-ի տեխնիկական ենթակառուցվածքի մասին մանրամասն տեղեկություններ կարելի է գտնել Google Cloud-ի անվտանգության փաստաթղթերում:

Android հավելվածները ստորագրված են մասնավոր բանալիով: Յուրաքանչյուր նման բանալիի հետ կապված է հանրային վկայականը, որը սարքերն ու ծառայությունները կարող են օգտագործել՝ հաստատելու հավելվածների անվտանգությունը և դրանց թարմացումները: Միայն այդ թարմացումները տեղադրվում են այն սարքերում, որոնց ստորագրությունը համապատասխանում է ստորագրությանը տեղադրված հավելված. Եթե ​​թույլ տաք Google-ին կառավարել ձեր հավելվածի ստորագրման բանալին, գործընթացը ավելի ապահով կլինի:

Նշում. Google Play-ում հավելվածների ստորագրման գործառույթն օգտագործելը պարտադիր չէ: Դուք կարող եք վերբեռնել APK-ներ և կառավարել ձեր սեփական բանալիները՝ առանց App Bundles-ի օգտագործման: Այնուամենայնիվ, եթե դուք կորցնեք մուտքը բանալիների պահեստ կամ այն ​​վտանգի ենթարկվի, դուք չեք կարողանա թարմացնել ձեր հավելվածը և ստիպված կլինեք վերահրապարակել այն այլ փաթեթի անունով:

Բանալիների, առարկաների և գործիքների նկարագրություն
Պայմաններ Նկարագրություն
Դիմումի ստորագրման բանալի

Բանալին, որն օգտագործվում է Google Play-ի՝ օգտատիրոջ սարքին առաքված APK ֆայլերը ստորագրելու համար: Երբ գրանցվում եք հավելվածների ստորագրման ծրագրին Google Play-ում, կարող եք վերբեռնել առկա ստորագրման բանալի կամ թույլ տալ Google-ին ստեղծել նորը:

Ներբեռնման բանալին

Վերբեռնման բանալի ստեղծելու երկու եղանակ կա.

  • Օգտագործեք հավելվածի ստորագրման բանալին:Եթե ​​դուք թույլ եք տվել Google-ին ստեղծել հավելվածի ստորագրման բանալի, երբ գրանցվել եք ծրագրին, ապա վերբեռնման բանալին կլինի այն բանալին, որն օգտագործել եք հավելվածի առաջին թողարկումը ստորագրելու համար:
  • Օգտագործեք առանձին վերբեռնման բանալի:Եթե ​​դուք ներկայացրել եք ձեր սեփական հավելվածի ստորագրման բանալի, երբ գրանցվել եք ծրագրին, կարող եք ստեղծել նոր վերբեռնման բանալի անվտանգության համար: Եթե ​​դուք չեք ցանկանում դա անել, օգտագործեք հավելվածի ստորագրման բանալին որպես ներբեռնման բանալի՝ նոր թողարկումներ ստորագրելու համար:
Վկայական (.der կամ .pem)

Վկայական, որը պարունակում է հանրային բանալին և դրա սեփականատիրոջ մասին լրացուցիչ տեղեկություններ: Հանրային բանալին վկայականը թույլ է տալիս բոլորին իմանալ, թե ով է ստորագրել App Bundle-ը կամ APK ֆայլը: Այս վկայագիրը կարող է համօգտագործվել, քանի որ այն չի ներառում մասնավոր բանալի:

API պրովայդերների հետ բանալիներ գրանցելու համար կարող եք ներբեռնել էջի հավելվածի ստորագրման բանալի հանրային վկայականը Դիմումի ստորագրում Play Console-ում: Հանրային բանալու վկայագիրը կարող է համօգտագործվել բոլորի հետ, քանի որ այն չի ներառում մասնավոր բանալին:

Վկայական մատնահետք

Վկայագրի կարճ և եզակի նույնացուցիչ: Մեծ մատնահետքը, փաթեթի անվան հետ մեկտեղ, հաճախ պահանջվում է API մատակարարների կողմից՝ իրենց ծառայություններին հասանելիություն ապահովելու համար:

Հավելվածի վերբեռնման և ստորագրման վկայագրերի MD5, SHA-1 և SHA-256 մատնահետքերը կարող եք գտնել այստեղ՝ Դիմումի ստորագրում Play Console-ում: Դուք կարող եք նաև ստանալ այլ տեսակի թվային մատնահետք: Դա անելու համար նույն էջում ներբեռնեք բնօրինակ վկայականը DER ձևաչափով:

Java keystore (.jks կամ .keystore) Անվտանգության վկայականների և մասնավոր բանալիների պահպանում:
PEPK գործիք

Գործիք՝ մասնավոր բանալիները Java պահեստից արտահանելու և դրանք գաղտնագրելու համար՝ Google Play-ին ներկայացնելու համար:

Երբ Google-ին տրամադրեք ձեր հավելվածի ստորագրման բանալին, ընտրեք արտահանել և վերբեռնել ձեր սեփական բանալին (և անհրաժեշտության դեպքում դրա հանրային վկայականը), այնուհետև հետևեք գործիքը ներբեռնելու և օգտագործելու հրահանգներին: Կարող եք նաև ներբեռնել, դիտել և օգտագործել բաց կոդով PEPK գործիքը:

Դիմումի ստորագրման գործընթացը

Դուք կարող եք վերբեռնել APK ֆայլեր, որոնք ստորագրված են հավելվածի ստորագրման բնօրինակ բանալիով նախքան կամ դրանից հետո հավելվածը Google Play-ում ստորագրելը:

Եթե ​​դուք թարմացնեք Android հավելվածների փաթեթների, կարող եք դրանք փորձարկել փորձնական տարբերակներում և օգտագործել առկա APK-ները արտադրական տարբերակներում: Ահա թե ինչպես է այն աշխատում.

  1. Դուք ստորագրում եք App Bundle կամ APK և վերբեռնում այն ​​Play Console:
  2. Հավելվածի ստորագրման գործընթացը կախված է նրանից, թե ինչ եք ներբեռնում:
    • Հավելվածի փաթեթ: Google-ը օպտիմիզացնում է APK-ները App Bundle-ում և այնուհետև ստորագրում դրանք App Signing Key-ով:
    • APK ֆայլը ստորագրված է վերբեռնման բանալիով: Google-ը հաստատում է ձեր ստորագրությունը, հեռացնում այն ​​և նորից ստորագրում APK-ները հավելվածի ստորագրման բանալիով:
    • APK ֆայլ՝ ստորագրված հավելվածի ստորագրման բանալիով: Google-ը ստուգում է ստորագրությունը։
  3. Google-ը ստորագրված APK ֆայլեր է տրամադրում օգտատերերին:

Ինչպես գրանցվել Google Play հավելվածի ստորագրման ծրագրում

Նոր հավելվածներ

Քայլ 1. Ստեղծեք վերբեռնման բանալի

  1. Ստեղծեք վերբեռնման բանալի՝ հետևելով հրահանգներին:
  2. Ստորագրեք նոր APK ֆայլը վերբեռնման բանալիով:

Քայլ 2. Պատրաստեք թողարկումը

  1. հետևելով հրահանգներին.
  2. Երբ ընտրեք տարբերակի տեսակը, կազմաձևեք ձեր հավելվածի ստորագրման ընտրանքները «Թույլ տվեք Google-ին պաշտպանել և կառավարել ձեր հավելվածի ստորագրման բանալին»:
  3. Եթե ​​սեղմեք Շարունակել, ստեղծված բանալին կդառնա վերբեռնման բանալին, որը կօգտագործվի ապագա թողարկումները ստորագրելու համար: Կարող եք նաև ընտրել հետևյալից Առաջադեմ պարամետրերը:
    • Օգտագործեք մեկ բանալի տարբեր հավելվածների համար մշակողի հաշվում (տարբերակ 2):
    • Վերբեռնեք գոյություն ունեցող հավելվածի ստորագրման բանալին (տարբերակ 2, 3 և 4)՝ ընտրելով արտահանման և վերբեռնման եղանակը, որը լավագույնս համապատասխանում է ձեզ: Հավելվածի ստորագրման բանալին և դրա հանրային վկայականը վերբեռնելուց հետո կարող եք կամ օգտագործել հավելվածի ստորագրման բանալին որպես դիմումի ստորագրման բանալի:

Նշում.Շարունակելու համար դուք պետք է ընդունեք Օգտագործման պայմանները և գրանցվեք App Signing Program-ում:

Քայլ 3. Գրանցեք ձեր հավելվածի ստորագրման բանալին API մատակարարների հետ

Եթե ​​ձեր հավելվածն օգտագործում է API, ապա իսկությունը հաստատելու համար, ամենայն հավանականությամբ, ձեզ անհրաժեշտ կլինի գրանցել հիմնական վկայական, որով Google-ը ստորագրում է ձեր դիմումը: Վկայական գտնելու համար.

  1. Մուտք գործեք Play Console:
  2. Ընտրեք հավելված:
  3. Ձախ կողմում գտնվող ընտրացանկից ընտրեք Թողարկման կառավարում > Դիմումի ստորագրություններ.
    • Եթե ​​API մատակարարը պահանջում է այլ տեսակի մատնահետք, կարող եք ներբեռնել բնօրինակ վկայականը DER ձևաչափով և անհրաժեշտության դեպքում փոխարկել այն՝ օգտագործելով համապատասխան գործիքները:
Հրապարակված հավելվածներ

Քայլ 1. Գրանցվեք Google Play հավելվածի ստորագրման ծրագրին

  1. Մուտք գործեք Play Console:
  2. Ընտրեք հավելված:
  3. Ձախ կողմում գտնվող ընտրացանկից ընտրեք Թողարկման կառավարում > Դիմումի ստորագրություններ.
  4. Անհրաժեշտության դեպքում կարդացեք Օգտագործման պայմանները և սեղմեք Ընդունել.

Քայլ 2 Ներկայացրեք բնօրինակ բանալին Google-ին և ստեղծեք վերբեռնման բանալի

  1. Գտեք հավելվածի ստորագրման բնօրինակ բանալին:
  2. Մուտք գործեք Play Console:
  3. Ընտրեք հավելված:
  4. Ձախ կողմում գտնվող ընտրացանկից ընտրեք Թողարկման կառավարում > Դիմումի ստորագրություններ.
  5. Վերբեռնեք ձեր գոյություն ունեցող հավելվածի ստորագրման բանալին այնպես, որ լավագույնս համապատասխանում է ձեր թողարկման գործընթացին:
  1. և վերբեռնեք վկայագիրը Google Play-ում:
    • Կարող եք նաև օգտագործել հավելվածի ստորագրման բանալին որպես վերբեռնման բանալի:
  2. Պատճենեք հայտի ստորագրման վկայագրի մատնահետքերը (MD5, SHA-1 և SHA-256):
    • Փորձարկման նպատակներով ձեզ կարող է անհրաժեշտ լինել API մատակարարի մոտ գրանցել բեռնման բանալու վկայագիր՝ օգտագործելով վկայագրի մատնահետքը և հավելվածի ստորագրման բանալին:

Քայլ 4. Ստորագրեք ձեր հավելվածի հաջորդ թարմացումը վերբեռնման բանալիով

Հավելվածների թարմացումները, որոնք թողարկվում են, պետք է ստորագրվեն ներբեռնման բանալիով:

Ինչպես ստեղծել վերբեռնման բանալի և թարմացնել բանալիների պահեստները

Դուք կարող եք ստեղծել վերբեռնման բանալի, երբ գրանցվեք հավելվածի ստորագրման ծրագրին Google Play-ում, կամ կարող եք ստեղծել ավելի ուշ՝ բաժնում: Թողարկման կառավարում > Դիմումի ստորագրություններ.

Վերբեռնման բանալի ստեղծելու համար հետևեք հետևյալ քայլերին.

  1. Հետևեք Android ծրագրավորողների կայքի հրահանգներին: Բանալին պահեք ապահով տեղում:
  2. Արտահանել boot key վկայականը PEM ձևաչափով: Հետևյալ փաստարկները փոխարինի՛ր ընդգծումներով.
    • $ keytool -արտահանել -rfc -keystore upload-keystore.jks -alias upload -ֆայլ upload_certificate.pem
  3. Երբ թողարկման գործընթացում ձեզ հուշում է, վերբեռնեք վկայագիրը՝ այն Google-ում գրանցելու համար:

Եթե ​​դուք օգտագործում եք վերբեռնման բանալի.

  • Վերբեռնման բանալին գրանցված է միայն Google-ում՝ հավելվածի ստեղծողի ինքնությունը հաստատելու համար:
  • Ձեր ստորագրությունը հանվում է բոլոր վերբեռնված APK-ներից, նախքան դրանք հասանելի կլինեն օգտատերերին:
Սահմանափակումներ
  • Վերբեռնման բանալին պետք է օգտագործի RSA կոդավորումը և պետք է ունենա առնվազն 2048 բիթ չափ:
  • DSA և EC ստեղները և 2048 բիթից փոքր RSA ստեղները չեն ապահովվում:
Keystores-ի թարմացում

Երբ ստեղծեք ձեր բեռնման բանալին, անհրաժեշտության դեպքում ստուգեք և թարմացրեք հետևյալ վայրերը.

  • տեղական համակարգ;
  • անվտանգ տեղական սերվեր (տարբեր մուտքի վերահսկման ցուցակներով);
  • ամպային համակարգ (տարբեր մուտքի վերահսկման ցուցակներով);
  • հատուկ ծառայություններ հիմնական կառավարման համար;
  • Git պահոցներ.

Ինչպես թարմացնել ստորագրման բանալին նոր հավելվածների տեղադրման համար

Որոշ դեպքերում կարող եք պահանջել հավելվածի ստորագրման բանալի թարմացում: Նոր բանալին կօգտագործվի հավելվածի նոր տեղադրումներն ու թարմացումները ստորագրելու համար, իսկ հին բանալին կօգտագործվի արդեն իսկ տեղադրված ստորագրված տարբերակները թարմացնելու համար:

Ստորագրման բանալին կարող է թարմացվել միայն մեկ անգամ մեկ դիմումի համար: Այն անհավանական դեպքում, երբ դուք օգտագործում եք նույն ստորագրման բանալին մի քանի հավելվածների համար, որոնք գործարկվում են նույն գործընթացում, բանալին չի կարող թարմացվել:

Դուք պետք է խնդրեք թարմացնել հայտի ստորագրման բանալին հետևյալ դեպքերում.

  • Ձեզ անհրաժեշտ է կրիպտոգրաֆիկորեն ավելի ուժեղ բանալի:
  • Հավելվածի ստորագրման բանալին վտանգված է:

Նշում. Play Console-ում հավելվածի ստորագրման բանալին թարմացնելու հարցումը կապված չէ Android P-ում և ավելի ուշ բանալու փոխարինման հետ: Այս բանալու փոխարինումը ներկայումս չի աջակցվում Google Play-ի կողմից:

Կարևոր նշումներ ստեղների թարմացման վերաբերյալ

Նախքան հիմնական թարմացում խնդրելը, կարևոր է հասկանալ, թե դա ինչ փոփոխություններ կբերի:

  • Եթե ​​դուք օգտագործում եք նույն ստորագրման բանալին մի քանի հավելվածների համար՝ նույն կոդը կամ տվյալները օգտագործելու համար, ապա ձեզ հարկավոր է թարմացնել հավելվածները՝ ինչպես նոր, այնպես էլ հին բանալիները ճանաչելու համար:
  • Եթե ​​ձեր հավելվածն օգտագործում է API, նախքան այն թարմացնելը, համոզվեք, որ գրանցեք նոր և հին հավելվածների ստորագրման բանալիների վկայականները API մատակարարի մոտ: Վկայականները հասանելի են էջում Դիմումի ստորագրում Play Console.
  • Եթե ​​ձեր հավելվածի շատ օգտատերեր թարմացումներ են տեղադրում ֆայլերի փոխանակման ցանցերի միջոցով, նրանք կկարողանան տեղադրել միայն թարմացումներ, որոնք ստորագրված են նույն բանալիով, ինչ իրենց սարքերում տեղադրված հավելվածը: Եթե ​​հավելվածները չեն կարող թարմացվել, քանի որ տեղադրված տարբերակըստորագրված այլ բանալիով, օգտվողները կարող են հեռացնել և նորից տեղադրել այն՝ թարմացումներ ստանալու համար:
Նոր տեղադրումների համար հիմնական թարմացում պահանջեք: Դա անելու համար հետևեք հետևյալ քայլերին.
  1. Մուտք գործեք Play Console:
  2. Ընտրեք հավելված:
  3. Ձախ կողմում գտնվող ընտրացանկից ընտրեք Թողարկման կառավարում > Դիմումի ստորագրություններ.
  4. «Թարմացնել ստորագրման բանալի նոր հավելվածների տեղադրման համար» քարտում ընտրեք Բանալին թարմացնելու հարցում.
  5. Ընտրեք, թե ինչ անել սարքի հետ:
    • Կախված ձեր ընտրած տարբերակից, գուցե ստիպված լինեք կապ հաստատել աջակցության ծառայության հետ՝ ձեր հարցումը կատարելու համար:
  6. Թույլ տվեք Google Play-ին ստեղծել հավելվածի ստորագրման նոր բանալի (խորհուրդ է տրվում) կամ ներբեռնեք:
    • Հավելվածի ստորագրման բանալին թարմացնելուց հետո, եթե բանալին նույնն էր, ինչ վերբեռնման բանալին, կարող եք շարունակել օգտագործել հին հավելվածի ստորագրման բանալին որպես վերբեռնման բանալի կամ ստեղծել նորը:
  • Եթե ​​դուք նաև հրապարակել եք ձեր հավելվածը Google Play-ից դուրս կամ մտադիր եք դա անել, կարող եք ստեղծել նախապես համօգտագործվող հավելվածի ստորագրման բանալի և վերբեռնել այն Google-ում, երբ գրանցվեք Google Play հավելվածի ստորագրման ծրագրին:
  • Ձեր հաշիվը պաշտպանելու համար, միացնել երկքայլ հաստատումըբոլոր հաշիվների համար, որոնք հասանելի են Play Console-ին:
  • Երբ App Bundle-ը հրապարակվի փորձնական կամ արտադրական տարբերակով, կարող եք բացել App Bundle դիտարկիչը և ներբեռնել ZIP արխիվը, որը պարունակում է բոլոր APK-ները կոնկրետ սարքի համար: Այս APK-ներն արդեն ստորագրված են հավելվածի ստորագրման բանալիով: Դուք կարող եք դրանք տեղադրել սարքի վրա ZIP արխիվից՝ օգտագործելով կոմունալ ծրագիրը հրամանի տողփաթեթ գործիք.
  • Ավելի մեծ անվտանգության համար ստեղծեք նոր վերբեռնման բանալի, որը տարբերվում է հավելվածի ստորագրման բանալիից:
  • Եթե ​​ցանկանում եք փորձարկել վերբեռնման բանալիով ստորագրված APK-ն, գրանցեք բանալին ծառայության կամ API-ի հետ, որն օգտագործում է հավելվածի ստորագրությունը նույնականացման համար (օրինակ՝ Google Maps API-ն կամ Facebook SDK-ն):
  • Եթե ​​դուք օգտագործում եք Google API-ները, կարող եք գրանցել վերբեռնման վկայագիրը Google Cloud Console-ում:

Ինչ անել, եթե բանալին կորել կամ կոտրել են

Եթե ​​կորցրել եք մուտքը դեպի ձեր անձնական վերբեռնման բանալին կամ այն ​​կոտրվել է, հարցրեք ձեր հաշվի սեփականատիրոջը: Աջակցության հետ կապվելիս հաշվի սեփականատերը պետք է կցի upload_certificate.pem ֆայլը:

Երբ աջակցող թիմը գրանցում է նոր վերբեռնման բանալի, դուք կստանաք էլ.

Կարևոր.Վերբեռնման ստեղնի վերակայումը չի ազդում հավելվածի ստորագրման բանալիի վրա, որը Google Play-ն օգտագործում է APK ֆայլերը ստորագրելու համար, նախքան դրանք օգտատերերին ուղարկելը:

Արդյո՞ք այս տեղեկատվությունը օգտակար էր:

Ինչպե՞ս կարող է բարելավվել այս հոդվածը:

Երբեմն Android-ի որոշ հավելվածներ ինչ-ինչ պատճառներով չեն համապատասխանում օգտատիրոջը: Օրինակ՝ նյարդայնացնող գովազդները: Եվ դա այդպես է լինում՝ բոլորը լավ են հաղորդում ծրագրին, բայց միայն թարգմանությունն է դրա մեջ կա՛մ ծուռ, կա՛մ իսպառ բացակայում է։ Կամ, օրինակ, ծրագիրը փորձնական է, բայց ամբողջական տարբերակը ստանալու միջոց չկա։ Ինչպե՞ս փոխել իրավիճակը:

Ներածություն

Այս հոդվածում մենք կխոսենք այն մասին, թե ինչպես կարելի է ապամոնտաժել APK հավելվածը, դիտել դրա ներքին կառուցվածքը, ապամոնտաժել և ապակոմպիլացնել բայթ կոդը, ինչպես նաև կփորձենք մի քանի փոփոխություններ կատարել հավելվածներում, որոնք կարող են մեզ այս կամ այն ​​օգուտ բերել:

Այս ամենն ինքնուրույն անելու համար ձեզ հարկավոր կլինի Java լեզվի առնվազն տարրական իմացություն, որով գրված են Android հավելվածները, և XML լեզվի, որն օգտագործվում է ամենուր Android-ում՝ սկսած հավելվածի նկարագրությունից և մուտքի իրավունքից մինչև տողերի պահպանում, որոնք կցուցադրվեն էկրանին: Ձեզ անհրաժեշտ կլինի նաև հատուկ կոնսոլային ծրագրակազմ աշխատելու ունակություն:

Այսպիսով, ո՞րն է APK փաթեթը, որում բաշխված է Android-ի համար բացարձակապես բոլոր ծրագրերը:

Հավելվածի ապակոմպիլյացիա

Հոդվածում մենք աշխատել ենք միայն ապամոնտաժված հավելվածի կոդով, սակայն, եթե ավելի լուրջ փոփոխություններ կատարեք մեծ հավելվածներում, շատ ավելի դժվար կլինի հասկանալ smali կոդը։ Բարեբախտաբար, մենք կարող ենք ապակոմպիլյացիայի ենթարկել dex կոդը Java կոդի, որը թեև օրիգինալ չէ և չի կարող հետ կազմել, բայց շատ ավելի հեշտ է կարդալ և հասկանալ հավելվածի տրամաբանությունը: Դա անելու համար մեզ անհրաժեշտ է երկու գործիք.

  • dex2jar - Dalvik bytecode-ի թարգմանիչ JVM bytecode, որի հիման վրա կարող ենք ստանալ Java կոդ;
  • jd-gui-ն ինքնին ապակոմպիլյատոր է, որը թույլ է տալիս JVM բայթկոդից ստանալ ընթեռնելի Java կոդ: Որպես այլընտրանք, դուք կարող եք օգտագործել Jad-ը (www.varanecas.com/jad); չնայած այն բավականին հին է, որոշ դեպքերում այն ​​առաջացնում է ավելի ընթեռնելի կոդ, քան Jd-gui-ն:

Դրանք պետք է օգտագործվեն այսպես. Նախ, մենք գործարկում ենք dex2jar՝ որպես փաստարկ նշելով apk փաթեթի ուղին.

%dex2jar.sh mail.apk

Արդյունքում ընթացիկ գրացուցակում կհայտնվի mail.jar Java փաթեթը, որն արդեն կարող է բացվել jd-gui-ում՝ Java կոդը դիտելու համար։

APK փաթեթների կազմակերպում և դրանց ստացում

Android հավելվածի փաթեթը, ըստ էության, սովորական ZIP ֆայլ է, որը չի պահանջում որևէ հատուկ գործիք՝ բովանդակությունը դիտելու և փաթեթավորումը բացելու համար: Բավական է ունենալ արխիվատոր՝ 7zip Windows-ի համար կամ կոնսոլային unzip Linux-ում։ Բայց դա վերաբերում է փաթաթանին: Ի՞նչ կա ներսում: Ներսում մենք ընդհանուր առմամբ ունենք հետևյալ կառուցվածքը.

  • META-INF/- պարունակում է հավելվածի թվային վկայագիր, որը հավաստում է դրա ստեղծողին և փաթեթի ֆայլերի ստուգման գումարները.
  • res/ - տարբեր ռեսուրսներ, որոնք հավելվածն օգտագործում է իր աշխատանքում, ինչպիսիք են պատկերները, ինտերֆեյսի դեկլարատիվ նկարագրությունը և այլ տվյալներ.
  • AndroidManifest.xml- հայտի նկարագրությունը. Սա ներառում է, օրինակ, պահանջվող թույլտվությունների ցանկը, Android-ի պահանջվող տարբերակը և էկրանի պահանջվող լուծումը.
  • դասեր.dex- կազմված հավելվածի բայթկոդ Dalvik վիրտուալ մեքենայի համար;
  • ռեսուրսներ.arsc- նաև ռեսուրսներ, բայց այլ տեսակի, մասնավորապես, տողեր (այո, այս ֆայլը կարող է օգտագործվել ռուսացման համար):

Թվարկված ֆայլերը և գրացուցակները, եթե ոչ բոլորում, ապա, հավանաբար, APK-ների ճնշող մեծամասնությունում են: Այնուամենայնիվ, կան ևս մի քանի ավելի քիչ տարածված ֆայլեր/գրացուցակներ, որոնք արժե նշել.

  • ակտիվներ- ռեսուրսների անալոգը. Հիմնական տարբերությունն այն է, որ ռեսուրս մուտք գործելու համար անհրաժեշտ է իմանալ դրա նույնացուցիչը, մինչդեռ ակտիվների ցանկը կարելի է դինամիկ կերպով ձեռք բերել՝ օգտագործելով AssetManager.list() մեթոդը հավելվածի կոդում;
  • lib- բնիկ Linux գրադարաններ, որոնք գրվել են NDK-ի (Native Development Kit) օգնությամբ:

Այս գրացուցակը օգտագործվում է խաղերի արտադրողների կողմից՝ C/C++-ով գրված իրենց խաղային շարժիչը այնտեղ տեղադրելու համար, ինչպես նաև բարձր արդյունավետությամբ հավելվածներ ստեղծողների կողմից (օրինակ՝ Google Chrome) Հասկացել է սարքը. Բայց ինչպե՞ս ստանալ հետաքրքրության հայտի փաթեթային ֆայլը: Քանի որ հնարավոր չէ սարքից ստանալ APK ֆայլեր առանց արմատավորման (դրանք գտնվում են / data / app գրացուցակում), և արմատավորումը միշտ չէ, որ նպատակահարմար է, հավելվածի ֆայլը համակարգիչ հասցնելու առնվազն երեք եղանակ կա.

  • APK Downloader ընդլայնում Chrome-ի համար;
  • Իրական APK Leecher հավելված;
  • տարբեր ֆայլերի հոստինգ և warezniki:

Որն օգտագործել, ճաշակի հարց է. մենք նախընտրում ենք օգտագործել առանձին հավելվածներ, ուստի կնկարագրենք Real APK Leecher-ի օգտագործումը, հատկապես, որ այն գրված է Java-ով և, համապատասխանաբար, այն կաշխատի նույնիսկ Windows-ում, նույնիսկ nix-ում։

Ծրագիրը սկսելուց հետո անհրաժեշտ է լրացնել երեք դաշտ՝ Էլ.փոստ, գաղտնաբառ և սարքի ID և ընտրել լեզուն: Առաջին երկուսը ձեր Google հաշվի էլեկտրոնային փոստն ու գաղտնաբառը են, որոնք դուք օգտագործում եք սարքում: Երրորդը սարքի ID-ն է, և այն կարող եք ստանալ հավաքելով հավաքիչի կոդը # #8255## և այնուհետև գտնելով սարքի ID-ն: Լրացնելիս անհրաժեշտ է մուտքագրել միայն ID-ն առանց android- նախածանցի:

Լրացնելուց և պահպանելուց հետո հաճախ հայտնվում է «Սխալ սերվերին միանալու ժամանակ» հաղորդագրությունը: Այն կապ չունի Google Play-ի հետ, այնպես որ ազատ զգալ անտեսեք այն և փնտրեք ձեզ հետաքրքրող փաթեթներ:

Վերանայում և փոփոխում

Ենթադրենք, դուք գտել եք ձեզ հետաքրքրող փաթեթը, ներբեռնել եք այն, ապափաթեթավորել այն ... և երբ փորձեցիք դիտել XML ֆայլ, դուք զարմացաք՝ տեսնելով, որ ֆայլը տեքստային ֆայլ չէ: Ինչպե՞ս դեկոմպիլացնել այն և ընդհանրապես ինչպե՞ս աշխատել փաթեթների հետ: Իսկապե՞ս անհրաժեշտ է տեղադրել SDK-ն: Ոչ, ձեզ հարկավոր չէ տեղադրել SDK-ն: Փաստորեն, APK փաթեթները բացելու, փոփոխելու և փաթեթավորելու բոլոր քայլերի համար անհրաժեշտ են հետևյալ գործիքները.

  • ZIP արխիվատորփաթեթավորման և փաթեթավորման համար;
  • smali- Dalvik վիրտուալ մեքենայի բայթկոդի հավաքող/ապամոնտաժող (code.google.com/p/smali);
  • բն- ռեսուրսների փաթեթավորման գործիք (ըստ լռելյայն, ռեսուրսները պահվում են երկուական տեսքով՝ հավելվածի կատարողականը օպտիմալացնելու համար): Ներառված է Android SDK-ի հետ, բայց կարելի է ձեռք բերել առանձին.
  • Ստորագրող- փոփոխված փաթեթի թվային ստորագրման գործիք (bit.ly/Rmrv4M):

Դուք կարող եք օգտագործել այս բոլոր գործիքները առանձին, բայց դա անհարմար է, ուստի ավելի լավ է օգտագործել դրանց հիման վրա կառուցված ավելի բարձր մակարդակի ծրագրեր: Եթե ​​դուք Linux կամ Mac OS X-ում եք, կա մի գործիք, որը կոչվում է apktool: Այն թույլ է տալիս բացել ռեսուրսները իրենց սկզբնական ձևով (ներառյալ երկուական XML և arsc ֆայլերը), վերակառուցել փաթեթը փոփոխված ռեսուրսներով, բայց այն չգիտի, թե ինչպես ստորագրել փաթեթները, այնպես որ դուք պետք է գործարկեք ստորագրող կոմունալ ծրագիրը ձեռքով: Չնայած այն հանգամանքին, որ կոմունալ ծրագիրը գրված է Java-ով, դրա տեղադրումը բավականին ոչ ստանդարտ է: Սկզբում դուք պետք է ստանաք jar ֆայլը.

$ 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 $ արտահանման PATH=~/bin:$PATH

Եթե ​​դուք աշխատում եք Windows-ով, ապա դրա համար կա մի հիանալի գործիք, որը կոչվում է Virtual Ten Studio, որը նույնպես կուտակում է այս բոլոր գործիքները (ներառյալ հենց apktool-ը), բայց CLI ինտերֆեյսի փոխարեն այն օգտվողին տրամադրում է ինտուիտիվ գրաֆիկական ինտերֆեյս, որի միջոցով պետք է կատարել փաթեթավորումից հանելու, ապամոնտաժելու և կազմազերծելու գործողություններ մի քանի կտտոցով: Այս գործիքը Donation-ware-ն է, այսինքն՝ պատուհանները երբեմն հայտնվում են լիցենզիա ստանալու առաջարկով, բայց դա, ի վերջո, կարելի է հանդուրժել։ Անիմաստ է այն նկարագրել, քանի որ ինտերֆեյսը կարող եք հասկանալ մի քանի րոպեում: Բայց apktool-ը, ելնելով իր կոնսոլային բնույթից, պետք է ավելի մանրամասն քննարկվի:


Դիտարկենք apktool-ի տարբերակները: Մի խոսքով, կան երեք հիմնական հրամաններ՝ d (վերծանել), b (կառուցել) և if (տեղադրել շրջանակը): Եթե ​​առաջին երկու հրամաններով ամեն ինչ պարզ է, ապա ի՞նչ է անում երրորդը՝ պայմանական օպերատորը։ Այն բացում է նշված միջերեսի շրջանակը, որն անհրաժեշտ է համակարգային փաթեթը բաժանելիս:

Դիտարկենք առաջին հրամանի ամենահետաքրքիր տարբերակները.

  • - մի ապամոնտաժեք dex ֆայլերը.
  • - մի բացեք ռեսուրսները.
  • - մի տեղադրեք վրիպազերծման տեղեկատվությունը dex ֆայլի ապամոնտաժման արդյունքների մեջ.
  • - շրջանակ-ուղի- ներկառուցված apktool-ի փոխարեն օգտագործեք նշված UI շրջանակը: Այժմ դիտարկեք b հրամանի մի քանի տարբերակ.
  • - հարկադիր հավաքում առանց փոփոխությունների ստուգման.
  • - նշեք aapt-ի ուղին (APK արխիվ ստեղծելու գործիք), եթե ինչ-ինչ պատճառներով ցանկանում եք օգտագործել այն այլ աղբյուրից:

Apktool-ի օգտագործումը շատ պարզ է, ձեզ հարկավոր է ընդամենը նշել հրամաններից մեկը և APK-ի ուղին, օրինակ.

$ apktool d mail.apk

Դրանից հետո բոլոր արդյունահանված և ապամոնտաժված փաթեթի ֆայլերը կհայտնվեն փոստային գրացուցակում:

Նախապատրաստում. Անջատել գովազդը

Տեսությունը, իհարկե, լավն է, բայց ինչո՞ւ է դա անհրաժեշտ, եթե չգիտենք, թե ինչ անել չփաթեթավորված փաթեթի հետ: Փորձենք կիրառել տեսությունը մեր շահի համար, այն է՝ մենք փոփոխում ենք որոշ ծրագրեր, որպեսզի այն մեզ գովազդ չցուցադրի։ Օրինակ, թող լինի Virtual Torch - վիրտուալ ջահ: Մեզ համար այս ծրագրաշարը կատարյալ է, քանի որ այն լի է նյարդայնացնող գովազդներով և բավականաչափ պարզ է՝ չկորչելու կոդի վայրի մեջ:


Այսպիսով, օգտագործելով վերը նշված մեթոդներից մեկը, ներբեռնեք հավելվածը շուկայից։ Եթե ​​որոշել եք օգտվել Virtuous Ten Studio-ից, ապա պարզապես բացեք APK ֆայլը հավելվածում և ապափաթեթավորեք այն, որի համար ստեղծեք նախագիծ (Ֆայլ -> Նոր նախագիծ), այնուհետև համատեքստային մենյունախագիծ, ընտրեք Ներմուծել ֆայլ: Եթե ​​ձեր ընտրությունը ընկել է apktool-ի վրա, ապա բավական է կատարել մեկ հրաման.

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

Դրանից հետո com.kauf.particle.virtualtorch գրացուցակում կհայտնվի ֆայլի ծառ, որը նման է նախորդ բաժնում նկարագրվածին, բայց dex ֆայլերի և apktool.yml ֆայլի փոխարեն լրացուցիչ smali գրացուցակով: Առաջինը պարունակում է հավելվածի գործարկվող dex ֆայլի ապամոնտաժված կոդը, երկրորդը պարունակում է apktool-ին անհրաժեշտ ծառայությունների տեղեկատվությունը փաթեթը հետ հավաքելու համար:

Առաջին տեղը, որը մենք պետք է նայենք, իհարկե AndroidManifest.xml-ն է: Եվ այստեղ մենք անմիջապես հանդիպում ենք հետևյալ տողին.

Հեշտ է կռահել, որ նա պատասխանատու է հավելվածին ինտերնետ կապից օգտվելու թույլտվությունների տրամադրման համար: Իրականում, եթե մենք պարզապես ուզում ենք ազատվել գովազդից, ամենայն հավանականությամբ, մեզ համար բավական կլինի արգելել հավելվածը ինտերնետից։ Եկեք փորձենք դա անել: Ջնջեք նշված տողը և փորձեք ծրագրակազմը կազմել՝ օգտագործելով apktool.

$ apktool b com.kauf.particle.virtualtorch

Ստացված APK ֆայլը կհայտնվի com.kauf.particle.virtualtorch/build/ գրացուցակում: Այնուամենայնիվ, այն չի կարող տեղադրվել, քանի որ այն չունի թվային ստորագրություն և ֆայլերի ստուգման գումարներ (այն պարզապես չունի META-INF/ գրացուցակ): Մենք պետք է փաթեթը ստորագրենք apk-signer կոմունալով: Գործարկվել է. Ինտերֆեյսը բաղկացած է երկու ներդիրից՝ առաջինի վրա (Key Generator) մենք ստեղծում ենք ստեղներ, երկրորդի վրա (APK Signer) ստորագրում ենք։ Մեր անձնական բանալին ստեղծելու համար լրացրեք հետևյալ դաշտերը.

  • Թիրախային ֆայլ- keystore ելքային ֆայլ; այն սովորաբար պահում է մեկ զույգ բանալի;
  • ԳաղտնաբառԵվ Հաստատել- գաղտնաբառ պահեստավորման համար;
  • Այլանուն- պահեստում գտնվող բանալիի անվանումը.
  • Այլանուն գաղտնաբառԵվ Հաստատել- գաղտնի բանալի գաղտնաբառ;
  • Վավերականություն- Վավերականության ժամկետը (տարիներով): Լռելյայն արժեքը օպտիմալ է:

Մնացած դաշտերը, ընդհանուր առմամբ, ընտրովի են, բայց դուք պետք է լրացնեք առնվազն մեկը:


ԶԳՈՒՇԱՑՈՒՄ

Հավելվածը apk-signer-ով ստորագրելու համար դուք պետք է տեղադրեք Android SDK-ն և հավելվածի կարգավորումներում նշեք դրա ամբողջական ուղին:

Ամբողջ տեղեկատվությունը տրամադրվում է միայն տեղեկատվական նպատակներով: Ոչ խմբագիրները, ոչ հեղինակը պատասխանատվություն չեն կրում սույն հոդվածի նյութերի պատճառած հնարավոր վնասի համար:

Այժմ դուք կարող եք ստորագրել APK-ն այս բանալիով: APK Signer ներդիրում ընտրեք նոր ստեղծված ֆայլը, մուտքագրեք դրա գաղտնաբառը, հիմնական կեղծանունը և գաղտնաբառը, այնուհետև գտեք APK ֆայլը և համարձակորեն սեղմեք «Ստորագրել» կոճակը: Եթե ​​ամեն ինչ լավ ընթանա, փաթեթը կստորագրվի։

ՏԵՂԵԿՈՒԹՅՈՒՆՆԵՐ

Քանի որ մենք փաթեթը ստորագրել ենք մեր սեփական բանալիով, այն հակասում է սկզբնական հավելվածին, ինչը նշանակում է, որ երբ մենք փորձենք թարմացնել ծրագրաշարը շուկայի միջոցով, մենք սխալ կստանանք:

Միայն երրորդ կողմի ծրագրակազմին անհրաժեշտ է թվային ստորագրություն, այնպես որ, եթե դուք փոփոխում եք համակարգային հավելվածները, որոնք տեղադրված են՝ պատճենելով դրանք /system/app/ գրացուցակում, ապա ձեզ հարկավոր չէ ստորագրել դրանք:

Դրանից հետո մենք փաթեթը գցում ենք սմարթֆոնի վրա, տեղադրում և գործարկում։ Voila, գովազդն անհետացել է: Փոխարենը, սակայն, հաղորդագրություն հայտնվեց, որ մենք չունենք ինտերնետ կամ չունենք համապատասխան թույլտվություններ։ Տեսականորեն սա կարող էր բավարար լինել, բայց հաղորդագրությունը նյարդայնացնող տեսք ունի, և, ճիշտն ասած, մեզ ուղղակի բախտը բերեց մի հիմար դիմումի հետ: Լավ գրված ծրագրաշարը, ամենայն հավանականությամբ, կհստակեցնի իր հավատարմագրերը կամ կստուգի ինտերնետ կապի առկայությունը, այլապես պարզապես կհրաժարվի սկսելուց: Ինչպե՞ս լինել այս դեպքում: Իհարկե, խմբագրեք կոդը:

Որպես կանոն, հավելվածի հեղինակները ստեղծում են հատուկ դասեր գովազդի ցուցադրման և այդ դասերի զանգերի մեթոդների ցուցադրման համար հավելվածի կամ դրա «գործունեությունից» մեկի (պարզ ասած՝ հավելվածի էկրաններ) ընթացքում: Փորձենք գտնել այս դասերը։ Մենք գնում ենք smali գրացուցակ, այնուհետև com (օրգում կա միայն cocos2d-ի բաց գրաֆիկական գրադարան), այնուհետև kauf (հենց այնտեղ, քանի որ սա մշակողի անունն է և նրա ամբողջ ծածկագիրը կա) - և ահա, շուկայավարման գրացուցակ: Ներսում մենք գտնում ենք մի փունջ ֆայլեր smali ընդլայնմամբ: Սրանք դասեր են, և դրանցից ամենաուշագրավը Ad.smali դասն է, որի անունով հեշտ է կռահել, որ այն ցուցադրում է գովազդ։

Մենք կարող էինք փոխել նրա աշխատանքի տրամաբանությունը, բայց շատ ավելի հեշտ կլիներ հիմարաբար հեռացնել զանգերը դրա ցանկացած մեթոդին հենց հավելվածից: Հետևաբար, մենք դուրս ենք գալիս շուկայավարման գրացուցակից և գնում հարևան մասնիկների գրացուցակ, այնուհետև՝ virtualtorch: Այստեղ հատուկ ուշադրության է արժանի MainActivity.smali ֆայլը: Սա Android-ի ստանդարտ դաս է, որը ստեղծվում է Android SDK-ի կողմից և սահմանվում է որպես հավելվածի մուտքի կետ (ինչպես C-ի հիմնական ֆունկցիան): Բացեք ֆայլը խմբագրման համար:

Ներսում կա smali կոդը (տեղական assembler): Այն բավականին շփոթեցնող է և դժվար է կարդալ իր ցածր մակարդակի պատճառով, ուստի մենք չենք ուսումնասիրի այն, այլ պարզապես կոդում կգտնենք Ad դասի բոլոր հիշատակումները և մեկնաբանենք դրանք: Որոնման մեջ մենք քշում ենք «Գովազդ» տողով և հասնում 25-րդ տողին.

Դաշտային մասնավոր գովազդ:Lcom/kauf/marketing/Ad;

Այստեղ ստեղծվում է դաշտային գովազդ՝ Ad դասի օբյեկտը պահելու համար: Մեկնաբանում ենք՝ տողի դիմաց դնելով ### նշանը։ Մենք շարունակում ենք որոնումը։ Տող 423:

Նոր օրինակ v3, Lcom/kauf/marketing/Ad;

Այստեղ է ստեղծվում օբյեկտը: Մեկնաբանում ենք. Մենք շարունակում ենք որոնումը և 433, 435, 466, 468, 738, 740, 800 և 802 տողերում գտնում ենք Ad դասի մեթոդների զանգերը։ Մեկնաբանում ենք. Տեսեք, որ դա է: Մենք խնայում ենք. Այժմ փաթեթը պետք է հետ հավաքվի և ստուգվի դրա կատարողականության և գովազդի առկայության համար: Փորձի մաքրության համար մենք վերադարձնում ենք AndroidManifest.xml-ից հեռացված տողը, հավաքում ենք փաթեթը, ստորագրում և տեղադրում այն։

Մեր ծովախոզուկը։ Տեսանելի գովազդ

Op-pa! Գովազդն անհետացավ միայն հավելվածի գործարկման ժամանակ, բայց մնաց հիմնական ընտրացանկում, որը մենք տեսնում ենք ծրագրաշարը գործարկելիս: Այսպիսով, սպասեք, բայց մուտքի կետը MainActivity դասն է, և գովազդները անհետացել են հավելվածի գործարկման ժամանակ, բայց մնացել են հիմնական ընտրացանկում, ուրեմն մուտքի կետը տարբեր է: Ճշմարիտ մուտքի կետը բացահայտելու համար մենք նորից բացում ենք AndroidManifest.xml ֆայլը: Եվ այո, այն պարունակում է հետևյալ տողերը.

Նրանք մեզ ասում են (և ավելի կարևորը՝ android-ին), որ Start անունով գործունեությունը պետք է գործարկվի՝ ի պատասխան android.intent.action.MAIN մտադրության (իրադարձության) ստեղծման android.intent.category.LAUNCHER կատեգորիայից: Այս իրադարձությունը ստեղծվում է, երբ դուք հպում եք գործարկիչում հավելվածի պատկերակին, ուստի այն սահմանում է մուտքի կետը, այն է՝ «Սկսել» դասը: Ամենայն հավանականությամբ, ծրագրավորողը սկզբում գրել է ծրագիր առանց հիմնական ցանկի, որի մուտքի կետը ստանդարտ MainActivity դասն էր, այնուհետև ավելացրել է նոր պատուհան (գործունեություն), որը պարունակում է մենյու և նկարագրված է Start դասում, և ձեռքով այն դարձրել է մուտք: կետ.

Բացում ենք Start.smali ֆայլը և նորից փնտրում «Ad» տողը, 153 և 155 տողերում գտնում ենք FirstAd դասի հիշատակումը։ Այն կա նաև սկզբնաղբյուրում և, դատելով անունից, պատասխանատու է հիմնական էկրանին գովազդ ցուցադրելու համար։ Մենք նայում ենք հետագա, կա FirstAd դասի օրինակ և մտադրություն, ըստ այս օրինակի հետ կապված համատեքստի, և այնուհետև cond_10 պիտակը, որի պայմանական անցումը կատարվում է հենց դասի օրինակ ստեղծելուց առաջ: :

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

Ամենայն հավանականությամբ, ծրագիրը ինչ-որ կերպ պատահականորեն հաշվարկում է, թե արդյոք անհրաժեշտ է գովազդ ցուցադրել հիմնական էկրանին, և եթե ոչ, անմիջապես ցատկում է cond_10: Լավ, եկեք պարզեցնենք նրա խնդիրը և փոխարինենք պայմանական անցումը անվերապահով.

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

Կոդում FirstAd-ի մասին այլևս հիշատակումներ չկան, ուստի մենք փակում ենք ֆայլը և նորից հավաքում մեր վիրտուալ ջահը՝ օգտագործելով apktool: Պատճենել սմարթֆոնին, տեղադրել, գործարկել: Voila, բոլոր գովազդները չկան, շնորհավորում ենք բոլորիս:

Արդյունքներ

Այս հոդվածը պարզապես հակիրճ ներածություն է Android հավելվածների բացման և փոփոխման մեթոդներին: Շատ խնդիրներ մնացին կուլիսներում, ինչպիսիք են պաշտպանությունը հեռացնելը, խճճված կոդի վերլուծությունը, հավելվածի ռեսուրսների թարգմանությունն ու փոխարինումը, ինչպես նաև գրված հավելվածների փոփոխումը: օգտագործելով android NDK. Սակայն տարրական գիտելիքներ ունենալը, այս ամենը հասկանալը միայն ժամանակի խնդիր է։

Գրառման դիտումներ՝ 5 618

android ստուդիաապահովում է լայն հնարավորություններ ինչպես հավելվածներ մշակելու, այնպես էլ ծրագրավորման ժամանակ ավտոմատացման և հարմարավետության բարձրացման համար:

Եթե ​​դուք օգտագործում եք կառուցման համակարգը gradleձեր սեփական հավելվածները ստեղծելու համար կարող եք նաև ստեղծել մի քանի տարբերակներ՝ ձեր հավելվածների համար ստորագրություններ ստեղծելու համար:

Դուք հավանաբար չեք ցանկանում հրապարակել ձեր ստորագրման բանալիները, գաղտնաբառերը և օգտվողի անունները հանրային (կամ նույնիսկ մասնավոր) պահոցում: Այսպիսով, դուք կարող եք սահմանել բանալին, գաղտնաբառը և օգտվողի անունը որպես հատկություններ առանձին ֆայլում:

Նախքան դիմումը ստորագրելը, դուք պետք է ստեղծեք նոր սեփականություն gradle.properties ֆայլում: Եկեք այն անվանենք բանալիներ.ռեպոև որպես արժեք նշեք այն թղթապանակի ուղին, որտեղ հետագայում կտեղակայվեն բանալիների պահոցը և հատկություններով ֆայլը (օրինակ. C:/Users/UserName/.ստորագրում).

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

Այնուհետև դուք պետք է ստեղծեք այս թղթապանակը կամ, եթե նշել եք գոյություն ունեցողը, բացեք այն: Այն պետք է ստեղծի ֆայլ YourProjectName.properties, որի ներսում դեպի բանալիների պահեստ տանող ուղին, բանալիների կեղծանունը և գաղտնաբառը կգրվեն որպես հատկություններ հետևյալ ձևով։

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=****** RELEASE_ALIAS=Բանալի անուն՝ RELEASE_KEY_PASS=******

Ինչպե՞ս ստեղծել keystore:

Եթե ​​դուք չունեք բանալիների պահեստ, կարող եք հեշտությամբ ստեղծել այն՝ օգտագործելով Android Studio-ն: Դա անելու համար ընտրեք ցանկի տարրը Կառուցել -> Ստեղծեք ստորագրված APK.

Պատուհանում, որը հայտնվում է, սեղմեք Ստեղծել նոր...Արդյունքում կբացվի պատուհան, որում կարող եք նշել, թե որտեղ է գտնվելու բանալիների պահեստը (այս դասի համար ավելի լավ է անմիջապես ընտրել այն ուղին, որը դուք նշել եք. YourProjectName.propertiesսեփականության մեջ RELEASE_STORE_FILE), ինչպես նաև բանալու մասին տվյալներ։

Այնուհետեւ դուք պետք է թղթապանակ ստեղծեք YourProjectNameև այնտեղ տեղափոխեք ցանկալի keystore ֆայլը:

Այժմ դուք կարող եք ուղղակիորեն անցնել ստորագրման գործընթացին: Դա անելու համար ձեր նախագծում դուք պետք է բացեք ֆայլը build.gradle(գտնվում է հավելվածի թղթապանակում): Դրա ներսում բլոկում androidանհրաժեշտ է ավելացնել հետևյալ կոդը.

SigningConfigs ( վրիպազերծում ( /* այստեղ փոփոխություն չկա */ ) թողարկում ( 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"] ) ) այլ (println "==================== = =========================================== «Println» - Խնդրում ենք կազմաձեւել թողարկման-կազմման միջավայրը - E.G /: ստորագրման գրացուցակ" println "============================================ ==============)))

Որո՞նք են ստորագրության սխեմաները:

APK ստորագրություն ստանալու երկու սխեման կա. v1 JARԵվ v2 Ամբողջական APK.

Առաջին դեպքում ստորագրեք ՋԱՐ- ֆայլ, որը ստորագրման ավանդական եղանակն է։ v1 ստորագրությունը չի պաշտպանում APK-ի որոշ մասեր, օրինակ՝ ZIP մետատվյալները: APK ստուգիչը պետք է կառավարի բազմաթիվ անվստահելի (դեռ չստուգված) տվյալների կառուցվածքներ, այնուհետև հրաժարվի չստորագրված տվյալները՝ թողնելով շատ տեղ հարձակման համար: Բացի այդ, APK ստուգիչը պետք է ապասեղմի բոլոր սեղմված գրառումները, ինչը վատնում է շատ ժամանակ և հիշողություն: Այս խնդիրները լուծելու համար մշակվել է երկրորդ սխեման v2 Full APK:

Schema v2-ը ներդրվել է Android 7.0 Nougat (API 25)և աշխատում է տարբերակից Android Studio 2.2Եվ Android Gradle հավելված 2.2. Այս սխեման ապահովում է հավելվածի ավելի արագ տեղադրում և լավ պաշտպանություն APK-ի չարտոնված փոփոխություններից: APK-ի բովանդակությունը հեշվում և ստորագրվում է, այնուհետև ստացվում APK ստորագրության բլոկտեղադրված է APK-ում:

Վավերացման ընթացքում v2 սխեման վերաբերվում է APK-ին որպես բլբի և կատարում է ստորագրության ստուգում ամբողջ ֆայլի վրա: APK-ի ցանկացած փոփոխություն, ներառյալ ZIP մետատվյալների փոփոխությունները, անվավեր են դարձնում ստորագրությունը: Ստուգման այս ձևը շատ ավելի արագ է և թույլ է տալիս ավելի շատ չարտոնված փոփոխություններ հայտնաբերել:

Նոր ձևաչափը հետին համատեղելի է, ուստի նոր սխեմայով ստորագրված APK-ները կարող են տեղադրվել ավելի հին սարքերում (որոնք պարզապես անտեսում են նոր ստորագրությունը), քանի դեռ այդ APK-ները նույնպես ստորագրված են v1 սխեմայով:

Ստորագրումը լռելյայն օգտագործում է երկու սխեմաները, որպեսզի հավելվածները տեղադրվեն ցանկացած սարքի վրա: Այնուամենայնիվ, անհրաժեշտության դեպքում կարող եք անջատել v1 կամ v2 ստորագրումը: Դա անելու համար բլոկի վերը նշված կոդը ազատումպարզապես ավելացրեք հետևյալ տողերը.

V1SigningEnabled false

V2SigningEnabled false

Կարևոր է նաև նշել, որ նախքան v2 սխեմայով ստորագրելը պետք է ստորագրեք v1 սխեմայով, քանի որ APK-ն չի անցնի v2, եթե այն ստորագրվի լրացուցիչ վկայագրերով v2 սխեմայով ստորագրվելուց հետո:

Կոդը ավելացնելուց հետո նշեք այս կոդը բլոկում buildTypesներսում ազատում. Օրինակ:

BuildTypes (թողարկում (minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile(«proguard-android.txt»), «proguard-rules.pro» signingConfig signingConfigs.release) )

Այժմ դուք կարող եք ապահով կերպով մենյուի տարրում Կառուցելընտրել Կառուցեք APK, նախկինում փոխելով հավաքման տեսակը վրիպազերծելվրա ազատում. Ինչպես տեսնում եք, այս մեթոդը հարմար է նրանով, որ այն ավտոմատ է, այն պետք է կարգավորվի միայն մեկ անգամ, և ձեր բանալիների պահեստները կարող են անվտանգ լինել:

Այսպիսով, դուք աշխատել եք շատ օրեր (և գուցե գիշերներ), և այժմ ձեր առաջին հիբրիդային բջջային հավելվածը պատրաստ է: Այն բավականին կայուն է, կրիտիկական սխալների մեծ մասը փակ է: Մնացել են փոքրեր, բայց հիշելով, որ պերֆեկցիոնիզմը չարիք է, դուք վճռականորեն որոշում եք կայացնում հրապարակել դիմումը։

Դրա համար նախապայման է ստորագրված APK ֆայլի առկայությունը: Ինչպես ստորագրել apk ֆայլը, դուք կսովորեք այս հոդվածից:

փոքր շեղում

Երբ իմ կենդանիների նախագիծը մոտեցավ թողարկմանը, ես սկսեցի տեղեկություններ փնտրել, թե ինչպես արագ և ցավ չպատճառել հավելվածը հրապարակել: Գտնված հրահանգներից շատերը պարզ էին թվում: Ես ընտրել եմ Ionic Framework-ի հեղինակների հրահանգները, որոնց վրա մշակվել է հավելվածը։ Ամեն ինչ չէ, որ առաջին անգամ ստացվեց, կան մի քանի առանձնահատկություններ: Ստորագրման գործընթացը նկարագրված է այս հոդվածում, կարևորվում են կարևոր կետերը:

Նախնական տվյալներ

Ես ենթադրում եմ, որ դուք ունեք այն ամենը, ինչ անհրաժեշտ է հիբրիդը զարգացնելու համար բջջային հավելվածներօգտագործելով Apache Cordova: Պետք է տեղադրվի.
  • Ապաչի Կորդովա
  • Java Development Kit
  • Android SDK գործիքներ
lcf-ն օգտագործվում է որպես նախագծի և հավելվածի անվանում: Անհրաժեշտության դեպքում փոխարինեք ձեր նախագծի անվանումով:

Գնա

Սկզբում դուք պետք է ստեղծեք ձեր հավելվածի թողարկումը: Բայց մինչ այդ, եկեք համոզվենք, որ բոլոր ավելորդ փլագինները հեռացված են։ Օրինակ, մեզ պետք չէ մի փլագին, որը վրիպազերծման մասին տեղեկությունները տպում է վահանակում: Եկեք հեռացնենք այն.

$ cordova plugin rm cordova-plugin-console
Android-ի համար թողարկում ստեղծելու համար օգտագործեք հրամանը կառուցելդրոշով -- թողարկում:

$ cordova build --թողարկեք Android-ը
Այս հրամանը կստեղծի անստորագիր APK ֆայլ գրացուցակում.

հարթակներ/android/build/ելքեր/apk
Օրինակ՝ հարթակներ/android/build/outputs/apk/ android-release-unsigned.apk. Այնուհետև մենք պետք է ստորագրենք այս ֆայլը և գործարկենք կոմունալ ծրագիրը zipalignֆայլը Google Play-ի համար օպտիմալացնելու և պատրաստելու համար:

Ֆայլը ստորագրելու համար անհրաժեշտ է վկայական: Եկեք ստեղծենք այն, օգտագործելով կոմունալը առանցքային գործիքորը ներառված է JDK-ում.

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -վավերականություն 10000
Կարևոր

-alias պարամետրի արժեքը պետք է հիշել, բայց ավելի լավ է գրել այն: Վերևի օրինակում այն ​​հավասար է lcf-ի (Loyal Client Free հավելվածի անվան առաջին տառերով): Այստեղ մանրամասներ չեմ տա, եթե հետաքրքրված եք, գրեք մեկնաբանություններում, ավելին կասեմ։

Ալիասն օգտագործվում է ամեն անգամ ստորագրելիս * հավելվածներ։ Հիշելը ավելի հեշտ դարձնելու համար օգտագործեք keystore ֆայլի անունը որպես այլանուն, օրինակ՝


-keystore hello-world.keystore -alias hello-world -keystore weather-app.keystore -alias weather-app -keystore todo.keystore -alias todo
* Թարմացումների յուրաքանչյուր թողարկման հետ դուք պետք է ստորագրեք դիմումը

Կոմունալ առանցքային գործիքտալիս է մի շարք հարցեր. Ընդհանուր առմամբ դրանք կլինեն 8-ը։ Հարցերի և մոտավոր պատասխանների մասին նախապես պատկերացնելու համար բոլորը ներկայացված են ստորև՝ սփոյլերի տակ։

հիմնական գործիքների հարցեր և պատասխանների օրինակներ

1. Մուտքագրեք keystore գաղտնաբառը.
Այստեղ դուք պետք է մուտքագրեք գաղտնաբառ ֆայլի համար (առնվազն 6 նիշ): Մուտքագրված գաղտնաբառը պետք է գրվի ապահով տեղում, այն անհրաժեշտ է ամեն անգամ դիմումը ստորագրելիս։

2. Նորից մուտքագրեք նոր գաղտնաբառը.
Կրկին մուտքագրեք գաղտնաբառը:

3. Ո՞րն է քո անունն ու ազգանունը:
: Իվան Պետրով
Ձեր անունն ու ազգանունը. Քառակուսի փակագծերի արժեքը լռելյայն արժեքն է:

4. Ինչպե՞ս է կոչվում ձեր կազմակերպական միավորը:
: ՏՏ
Ձեր ընկերության ստորաբաժանման անվանումը: Դուք կարող եք այն դատարկ թողնել, ես նշում եմ Տ.Տ.

5. Ո՞րն է ձեր կազմակերպության անունը:
: 2 ծրագրավորողներ
Ձեր կազմակերպության անվանումը: Նշեք, եթե այդպիսիք կան:

6. Ո՞րն է ձեր քաղաքի կամ բնակավայրի անունը:
: Մոսկվա
Քաղաքի անվանումը

7. Ո՞րն է ձեր նահանգի կամ նահանգի անունը:
: MO
Տարածաշրջանի անվանումը

8. Ո՞րն է այս միավորի երկտառ երկրի կոդը:
: EN
Երկրի օրենսգիրք. Նշում եմ RU-ն:

: y

Հաստատեք, արդյոք ամեն ինչ ճիշտ է կամ սեղմեք Enter՝ նորից մուտք գործելու համար:


Վերջում կհայտնվի հաղորդագրություն բանալու հաջող ստեղծման մասին։ Ձեզ կառաջարկվի գաղտնաբառ սահմանել անձնական բանալիի համար (եթե ցանկանում եք թողնել նույնը, ինչ վկայագրի համար, սեղմեք Enter):

Ստեղծվում է 2 048 բիթ RSA բանալիների զույգ և ինքնստորագրված վկայագիր (SHA256withRSA) 10 000 օր վավերականությամբ՝ CN=Ivan Petrov, OU=IT, O=2developers, L=Moscow, ST=MO, C=RU Enter key գաղտնաբառը համար (ՎԵՐԱԴԱՐՁԵԼ, եթե նույնն է keystore գաղտնաբառը).
Ֆայլը կստեղծվի ընթացիկ գրացուցակում lcf.keystore.

Կարևոր

Ստեղծված ֆայլը պետք է պահվի ապահով տեղում: Եթե ​​դուք օգտագործում եք մասնավոր պահոց, ապա ֆայլը կարող է տեղադրվել հավելվածի կոդերի հետ միասին: Ընդհանուր առմամբ, վկայականները լավագույնս պահվում են առանձին: Եթե ​​կորցնեք ձեր վկայականը, դուք չեք կարողանա թողարկել հավելվածների թարմացումները:

Մնացել է երկու քայլ, և դուք կունենաք APK ֆայլ, որը պատրաստ է բաշխման: Մենք ուղղակիորեն անցնում ենք ստորագրմանը:

Ձեր apk ֆայլը ստորագրելու համար օգտագործեք կոմունալ ծրագիրը jarsigner, որը նույնպես ներառված է JDK-ում։

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Պարամետրից հետո նշվում է վկայագրի անվանումը - բանալիների պահեստ, alias - ֆայլի անունից հետո:

Ի վերջո, apk ֆայլը օպտիմալացնելու համար մենք կօգտագործենք կոմունալը zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Վերջին պարամետրը ֆայլի անունն է, որը դուք կբեռնեք Google Play:

Կարևոր.

Կոմունալ zipalignայն Android SDK Tools-ի մի մասն է և կարող եք գտնել այստեղ՝

/ուղի/դեպի/Android/sdk/build-tools/VERSION/zipalign

Եզրակացություն

Այժմ դուք ունեք apk ֆայլ, որը պատրաստ է բաշխման, որը կարող է վերբեռնվել Google Play-ում: Լրացրեք նկարագրությունը, որոշեք ձեր դիմումի վարկանիշը և ազատ զգալ սեղմեք «Հրապարակել»:
 
Հոդվածներ Ըստթեմա:
Որոնողական համակարգերի պատմություն
Բարեւ բոլորին! Այսօր հոդված է լինելու աշխարհի որոնողական համակարգերի մասին, որոնք հիմնականում գոյություն ունեն, երբ են հայտնվել, կոնկրետ ինչ է քշում Ռուսաստանում և ինչ կա ամբողջ աշխարհում: Հոդվածը հսկայական է, այնպես որ նստեք հարմարավետ, ցանկալի է դրանք պատրաստել
Համակարգչի RAM-ը մեծացնելու ուղիներ
Ինչպե՞ս կարող եմ իմանալ, արդյոք իմ համակարգչի հիշողությունը կարող է թարմացվել: Գալիս է մի պահ, երբ սկսում ես հասկանալ, որ համակարգիչն այլևս չի կարող հաղթահարել իր առաջադրանքները, բայց դա չի նշանակում, որ դուք պետք է նորը գնեք, հատկապես, եթե ձեր պրոցեսորն ընդամենը երկու կամ երեք տարեկան է: Բոլոր հ
Ինչու՞ է Պրիպյատի հետախուզական զանգը ռենտգենից դուրս թռչում
Microsoft-ի արտադրանքի մեծ թվով օգտատերեր հայտնում են Windows 10-ի ակտիվացման կորստի և Pro տարբերակը Home-ի փոխակերպման մասին: Օգտագործողները ծանուցվում են ժամկետանց բանալու մասին, և երբ նրանք փորձում են նորից ակտիվացնել, նրանք ստանում են սխալ 0x803fa067 Windo-ի համար:
css տարրի տեսակի ընտրիչ
Այն, ինչ ընտրիչն է css-ում, այդ տարրի կամ տարրերի խմբի նկարագրությունն է, որը բրաուզերին ասում է, թե որ տարրը պետք է ընտրի՝ ոճ կիրառելու համար: Եկեք նայենք հիմնական CSS ընտրիչներին:1) .x .topic-title (ֆոնի գույնը՝ դեղին;)