Internet Windows Android
Kengaytirish

O'rnatilgan ilovadan apkni qanday chiqarish mumkin. Android -da o'rnatilgan ilovaning apk faylini qanday chiqarish mumkin

Interpolatsiya, interpolatsiya- hisoblash matematikasida ma'lum bo'lgan qiymatlarning diskret to'plamidan miqdorning oraliq qiymatlarini topish usuli.

Ilmiy va muhandislik hisob -kitoblariga duch kelganlarning ko'pchiligi ko'pincha empirik yoki tasodifiy tanlab olish natijasida olingan qiymatlar majmuasida ishlashlari kerak. Qoida tariqasida, ushbu to'plamlar asosida boshqa aniqlangan qiymatlarni yuqori aniqlikda qabul qila oladigan funktsiyani tuzish talab qilinadi. Bu vazifa deyiladi yaqinlashtirish... Interpolatsiya - bu yaqinlashuvning bir turi, unda tuzilgan funksiyaning egri chizig'i aynan mavjud ma'lumotlar nuqtalari orqali o'tadi.

Ko'p sonli farqli interpolatsiya usullari mavjud. Ko'pchilik
Oldinga interpolatsiya qilish uchun Nyuton usuli (Nyuton-Gregori usuli) keng tarqalgan. Bu holda interpolatsion polinom quyidagi shaklga ega:

Biz C koeffitsientlarini quyidagi formula bo'yicha topamiz:

Dasturni C #da amalga oshirish:
tizimdan foydalanish; Nom maydoni Interpolatsiyasi (sinf dasturi ...

Dastur ikkita tarmoqqa bo'lingan, ulardan biri saralashni amalga oshiradi, ikkinchisi grafik interfeysini qayta chizadi. Tartiblash tugmachasini bosgandan so'ng, dastur RunSorting usulini chaqiradi, u tartiblash algoritmini belgilaydi va unda saralash jarayoni bilan yangi oqim hosil qiladi.
Maxsus bo'sh RunSo ...

Resurslarni almashish (CORS)-bu W3C spetsifikatsiyasi bo'lib, u brauzerda domenlararo muloqotga imkon beradi. XMLHttpRequest ob'ektining ustiga qurilgan holda, CORS ishlab chiquvchilarga bitta domen so'rovlari kabi bir xil iboralar bilan ishlashga imkon beradi. CORS -dan foydalanish holati oddiy. Tasavvur qiling, alice.com saytida bob.com olishni istagan ma'lumotlar bor. An'anaga ko'ra, bir xil brauzer kelib chiqish siyosatiga binoan, bunday so'rovga ruxsat berilmaydi. Biroq, CORS so'rovlarini qo'llab -quvvatlash orqali, alice.com bob.com -ga ma'lumotlarga kirishga ruxsat beruvchi maxsus javob sarlavhalarini qo'shishi mumkin. Ushbu misoldan ko'rinib turibdiki, CORS -ni qo'llab -quvvatlash server va mijoz o'rtasida muvofiqlashtirishni talab qiladi. Yaxshiyamki, agar siz mijoz tomonidan ishlab chiquvchi bo'lsangiz, siz ushbu tafsilotlarning ko'pchiligidan himoyalangansiz. Maqolaning qolgan qismida mijozlar o'zaro kelib chiqish so'rovlarini qanday yuborishlari va CORS-ni qo'llab-quvvatlash uchun serverlar o'zlarini qanday sozlashlari ko'rsatilgan. Davom etish ...

Hammaga salom, bugun men sizga boshqa loyihaning kodini ko'rsatmoqchiman, u umuman foydasiz va faqat o'yin -kulgi uchun yozilgan. Bir marta bizning darsimizda o'qituvchi yo'q edi va biz o'zimizni qandaydir hordiq chiqarish uchun Paskalda yozishni boshladik. Hammasi oddiy sirenadan boshlandi, bu auditoriyadagi tizim bloklari tez yordam mashinalarining sirenalari kabi tovush chiqarishga majbur qildi. Hammasi uyda tugadi, Linkin Parkning Numb qo'shig'ining parchasini yozdi.

Bu erda haqiqiy dastur kodi:
CRTdan foydalanadi; VAR i, temp, eslatma, eslatma2, eslatma4, eslatma8: Butun son; PROSEDUR PlayNote (f, p: butun son); BEGIN Ovoz (f); Kechikish (p); NoSound; Kechiktirish (20); OXIRI; TARTIB Pauza (p: butun son); BEGIN Kechiktirish (p); OXIRI; TARTIB Numb (temp, nota, note2, note4, note8: Butun son); I uchun boshlang: = 0 dan 1 gacha PlayNote boshlang (880, note4); PlayNote (1047, izoh 4); PlayNote (880, note4); PlayNote (1175, note2 + note4); PlayNote (1397, note2 + note4); PlayNote (1319, eslatma ...

Ko'pgina Android foydalanuvchilari Titanium Backup ilovasi yordamida ilovani qurilmadan apk fayli sifatida chiqarib olish mumkinligini bilishadi. Bugun biz ilovaning apk faylini to'g'ridan -to'g'ri Google Play do'konidan tortib olish usulini ko'rib chiqamiz.

Ushbu usulning afzalligi shundaki, dasturni qurilmaga oldindan o'rnatishga hojat yo'q. Afsuski, bu usul faqat bepul ilovalar uchun ishlaydi. Xo'sh, bizga nima kerak:

1. Google Chrome

Ish stolida Google Chrome uchun ikkinchi yorliq yarating.

Biz yorliqni bajaramiz, sichqonchaning o'ng tugmachasini bosing va "Xususiyatlar" ni tanlang. "Ob'ekt" maydoniga bo'sh joy bilan ajratilgan quyidagi buyruqlarni qo'shing:

Sertifikat xatolariga e'tibor bermang

Ishonchli bo'lmagan kontent

Bu shunday ko'rinadi:

... \ chrome.exe "--ignore-sertifikat-xatolar-ruxsat berilmagan-xavfsiz-xavfli-kontent

"Ilova" va "OK" ni bosing.

Ushbu operatsiyadan so'ng, dasturning barcha ishlaydigan misollarini yopib, brauzerni qayta ishga tushirishingiz kerak.

2. Google hisobining nomi va qurilma identifikatori

Aslida, biz dasturni qurilmaga yuklab olishni taqlid qilmoqchimiz, shuning uchun siz hisob qaydnomangiz nomini, ya'ni Google pochta qutingiz nomini, shuningdek Android qurilmangiz identifikatsiya raqamini bilishingiz kerak.

Qutida hamma narsa aniq, lekin qurilma identifikatorini bilish uchun smartfoningizdagi tergichni oching va * # * # 8255 # * # * ni tering.

Ko'rsatilgan ekranda siz "Device ID:" qatorini topishingiz kerak.

Identifikatsiya raqami-"android-" dan keyingi harflar va raqamlarning kombinatsiyasi. Masalan, agar siz "Device ID: android-1122aa33bb445577" qatorini ko'rsangiz, identifikator "1122aa33bb445577" kombinatsiyasidir. Bu kombinatsiyani yozing.

Agar biron sababga ko'ra siz qurilmangiz identifikatorini yuqoridagi usuldan foydalanib topa olmagan bo'lsangiz, Device ID ilovasini Google Play do'konidan yuklab olishingiz mumkin.

3. APK yuklab oluvchi

APK Downloader deb nomlangan brauzer kengaytmasini yuklab oling.

Ko'rsatilgan oynada Google hisobimizning manzilini, ya'ni elektron pochta manzilini kiriting. Parol (aha, qo'rqinchli), shuningdek, qurilma identifikatori. Shundan so'ng biz "Kirish" tugmasini bosamiz.

Keyingi oynada o'z mamlakatingizni va uyali aloqa operatorini tanlang va "Sozlamalarni saqlash" tugmasini bosing. Keyinchalik, kengaytmani muvaffaqiyatli faollashtirish haqida xabar bilan oyna paydo bo'lishi kerak.

4. Google Play do'koni

Endi bizning sevimli Google Play do'konimizga o'ting va har qanday bepul dasturni tanlang. Brauzerning manzil satrining o'ng tomonida o'qli xarakterli yashil bosh paydo bo'ladi.

Ushbu belgini bosing va dastur apk fayli sifatida kompyuteringizga muvaffaqiyatli yuklandi. Aslida, endi biz bepul ilovalarning mustaqil tarqatilishini yaratishga qodirmiz.

APK Downloader kengaytmasi ishlab chiqaruvchisining mutlaq adolatliligini tekshirish mumkin emas, shuning uchun hisobingiz ma'lumotlarini o'zingizning xavfingiz ostida kiriting. Bundan tashqari, bunday harakatlar, qoida tariqasida, Google Play do'konidan foydalanish shartlarini buzadi.

Salom saytimiz o'quvchilari. Mehmonlardan biri yordam so'raganida, u Android smartfonidan APK fayllarini chiqarib olishi kerak edi. Shunday qilib, biz ushbu savolga javobni ushbu maqolada tasvirlashga qaror qildik. Ushbu operatsiya yordamida siz smartfon, planshet yoki Android operatsion tizimida ishlaydigan boshqa gadjetlarda o'rnatilgan barcha ilovalarning zaxira nusxasini yaratishingiz mumkin.

O'rnatilgan ilovalar qachon zaxiralanadi?

Birinchi holat. Siz telefoningizni zavod parametrlariga qaytarishingiz kerak, lekin Internetga ulanmagan yoki faqat mobil. Keyinchalik Google Play -dan ilovalarni qayta yuklamoqchi emassiz, chunki bu uzoq davom etadi. Bunday holatlarda APK fayllarini Android qurilmasidan yoki undan olish mumkin.

Ikkinchi holat. Siz hayajonli o'yinni o'rnatdingiz, uning keshi "og'irligi" juda ko'p edi va do'stingizga yoqdi va u o'zi uchun xuddi shu o'yinchoqni xohladi, lekin yana Internetga kirish imkoni yo'q. Bu erda siz o'rnatilgan o'yinni bron qilishingiz kerak bo'ladi. O'yinlarni kesh bilan to'g'ri o'rnatish bo'yicha ko'rsatmalarni topishingiz mumkin.

Bunday holatlar juda ko'p.

APK fayllarini Android qurilmasidan qanday chiqarish mumkin?

Bu vazifani bajarish uchun bizga Google Play -da joylashgan ES Explorer bepul ilovasi kerak. Nega aynan shu konduktor? Bu oddiy, bu ajoyib va ​​ishlatish uchun qulay fayl menejeri va u allaqachon o'rnatilgan zaxiralash xususiyatiga ega. Bu funksiyadan foydalanib, Android qurilmalaridan kerakli APK fayllarini chiqarib olishingiz mumkin.

1 -usul. Shunday qilib, siz "ES Explorer" ni o'rnatdingiz, endi uni ishga tushiramiz:

1 -rasm

Buning uchun dastur menyusiga o'ting, qurilma ekranining yuqori chap burchagida biz ko'rsatgan tugmani bosing. "Kutubxonalar" bo'limini oching va "Ilovalar" ni bosing.

2 -rasm

Agar siz hamma narsani to'g'ri bajargan bo'lsangiz, sizning oldingizda maxsus dasturlar o'rnatilgan oyna ochiladi. Keyin, ajratmoqchi bo'lgan dasturni tanlang va tugmani bosing Zaxira ekranning pastki qismida.


3 -rasm 4 -rasm

Barcha chiqarilgan ilovalar papkada « Telefon xotirasi /zaxira nusxalari /ilovalar ". Siz 3 va 4 -rasmlarda ba'zi fayllar qizil yoki yashil rangda ajratilganini payqagan bo'lishingiz mumkin: ilgari zaxiralangan va papkada joylashgan ilovalar yashil rangda belgilangan. ilovalar va qizil rangda - ilgari chiqarilgan, lekin papkadan o'chirilgan ilovalar ilovalar (o'rnatilgan fayllar emas, faqat chiqarilgan fayllar o'chiriladi). Ya'ni, printsipial jihatdan, bu usul bilan qazib olish bilan bog'liq hamma narsa.

5 -rasm

Endi siz ushbu fayllar yordamida xohlagan narsani qilishingiz mumkin: ularni kompyuteringizga yuklang, Bluetooth yoki elektron pochta orqali do'stingizga yuboring. Sizga yana bir bor eslatib o'tamiz - bu usul faqat foydalanuvchi o'rnatgan ilovalarni zaxiralaydi, lekin tizim emas. Tizim ilovalarini zaxiralash uchun 2 -usuldan foydalaning.

2 -usul. Biz bir xil "ES Explorer" ni ishga tushiramiz. Ekranning yuqori qismida xotira bo'limlari tanlanadi (6 -rasm) yoki "Mahalliy saqlash" menyusiga o'ting (7 -rasm) va elementni tanlang. /Qurilma .


6 -rasm 7 -rasm

Keyinchalik, siz borishingiz kerak tizim / dastur ... Qurilmaga o'rnatilgan barcha ilovalar shu erda joylashgan: ham foydalanuvchi, ham tizim ilovalari. Keyin kerakli APK faylini qidiramiz va kerakli papkaga ko'chiramiz. Shunday qilib, siz boshqa gadjetlarga o'rnatish uchun tayyor APK faylini olasiz.

Ogohlantirish! Ikkala yo'l uchun ham kerak bo'lishi mumkin. Ayrim ishlab chiqarilgan APK fayllari boshqa Android qurilmalariga o'rnatilmasligi mumkin, chunki ular ma'lum bir dasturiy ta'minot uchun ishlab chiqilgan.

Hammasi shu.

Umid qilamizki, bu xabar muammoni hal qilishga yordam berdi va siz Android qurilmangizdan APK fayllarini chiqarib oldingiz. Agar siz dasturlarni zaxiralashning boshqa usullarini bilsangiz yoki shunga o'xshash savollaringiz bo'lsa - bizga yozing.

Kutib turing, oldinda hali ko'p qiziqarli narsalar bor.

Quyidagi vaziyatni tasavvur qiling: siz Android -ga o'yin o'rnatdingiz, o'ynadingiz va o'chirdingiz, lekin sizga bu yoqdi va ehtimol siz uni yana o'ynashni xohlaysiz. Ammo bu o'yinni unutmaslik va uni yana uzoq vaqt yuklamaslik uchun apk faylini chiqarib, keyinroq ishlatishingiz mumkin.

Ko'rsatmalar: apk -ni Android -dan chiqarib oling

1. ASTRO Fayl menejeriga o'ting va chapga suring.

2. Qo'shimcha vositalar ochiladi. "Ilova menejeri" ni tanlang.

3. Apk fayllari olinadigan ilovalarni tanlang. Buning uchun ularga teging. Agar siz barcha ilovalarni tanlashni xohlasangiz, ekranning yuqori qismidagi belgini bosing.

4. Pastki qismida ikkita yangi variant paydo bo'ladi. "Zaxiralash" ni bosing.

5. Shundan so'ng, fayllarni nusxalash boshlanadi.

Olingan apk -fayllar "zaxira nusxalari" papkasidagi SD -kartada, shuningdek "Nusxalangan ilovalar" bo'limidagi ASTRO fayl menejerida bo'ladi.

Hammasi shu. Umid qilamanki, bu darslik foydali bo'ldi.

Ba'zida Android -dagi ba'zi ilovalar foydalanuvchiga qaysidir ma'noda mos kelmaydi. Bunga zerikarli reklamalar misol bo'la oladi. Va bu shunday bo'ladi - hamma dasturda yaxshi, lekin undagi tarjima yo egri, yoki umuman yo'q. Yoki, masalan, dastur sinovdan o'tgan, lekin to'liq versiyasini olish mumkin emas. Vaziyatni qanday o'zgartirish mumkin?

Kirish

Ushbu maqolada biz APK paketini ilova bilan qanday qismlarga ajratish, uning ichki tuzilishini ko'rib chiqish, bayt kodni qismlarga ajratish va dekompilyatsiya qilish, shuningdek, bizga bu yoki boshqa foyda keltiradigan bir nechta o'zgartirishlar kiritish haqida gaplashamiz.

Bularning barchasini o'z -o'zidan amalga oshirish uchun sizga hech bo'lmaganda Android ilovalari yoziladigan Java tili va Android -ning hamma joylarida ishlatiladigan XML tili - dasturning o'zi va unga kirish huquqlarini tavsiflashdan boshlab asosiy bilim kerak bo'ladi. ekranda ko'rsatiladigan satrlarni saqlash. Shuningdek, sizga maxsus konsol dasturlarini boshqarish qobiliyati kerak bo'ladi.

Xo'sh, Android uchun barcha dasturiy ta'minot tarqatilgan APK to'plami aynan nima?

Ilovalarni dekompilyatsiya qilish

Ushbu maqolada biz faqat demontaj qilingan dastur kodi bilan ishladik, lekin agar siz katta ilovalarga jiddiy o'zgartirishlar kiritsangiz, smali kodini tushunish ancha qiyin bo'ladi. Yaxshiyamki, biz dex kodini Java kodiga aylantira olamiz, garchi u asl bo'lmagan va qayta tuzilmagan bo'lsa ham, dastur mantig'ini o'qish va tushunish ancha oson. Buning uchun bizga ikkita vosita kerak:

  • dex2jar - Dalvik bayt kodini JVM bayt kodiga tarjimon, uning asosida biz Java tilida kod olishimiz mumkin;
  • jd-gui-bu dekompilyatorning o'zi, bu sizga JVM bayt kodidan o'qiladigan Java kodini olish imkonini beradi. Shu bilan bir qatorda, siz Jad (www.varaneckas.com/jad) dan foydalanishingiz mumkin; juda eski bo'lsa-da, ba'zi hollarda u Jd-guiga qaraganda ko'proq o'qiladigan kodni yaratadi.

Ularni shunday ishlatish kerak. Birinchidan, biz argument sifatida apk paketining yo'lini ko'rsatib, dex2jar dasturini ishga tushiramiz:

% dex2jar.sh mail.apk

Natijada, joriy katalogda mail.jar Java to'plami paydo bo'ladi, u allaqachon Java kodini ko'rish uchun jd-gui-da ochilishi mumkin.

Qurilmaning APK-paketlari va ularni qabul qilish

Android ilovalar to'plami - bu oddiy ZIP fayli bo'lib, tarkibni ko'rish va ochish uchun maxsus vositalarni talab qilmaydi. Windows uchun 7zip yoki Linux uchun konsolni ochish uchun arxivchi bo'lishi kifoya. Ammo bu o'rash haqida. Ichkarida nima bor? Ichkarida biz odatda quyidagi tuzilishga egamiz:

  • META-INF /- ilovaning raqamli sertifikati, uning yaratuvchisini tasdiqlovchi va paketli fayllar chexlari;
  • res / - ilova o'z ishida ishlatadigan turli manbalar, masalan, tasvirlar, interfeysning deklarativ tavsifi va boshqa ma'lumotlar;
  • AndroidManifest.xml- dastur tavsifi. Bunga, masalan, kerakli ruxsatnomalar ro'yxati, Android -ning kerakli versiyasi va kerakli ekran o'lchamlari kiradi;
  • class.dex- Dalvik virtual mashinasi uchun dastur bayt kodi tuzilgan;
  • resurslar.arsc- shuningdek, resurslar, lekin boshqa turdagi - xususan, satrlar (ha, bu faylni ruslashtirish uchun ishlatish mumkin!).

Ro'yxatda keltirilgan fayllar va kataloglar, agar umuman bo'lmasa, ehtimol, APK -larning ko'pchiligida. Shunga qaramay, yana bir nechta umumiy bo'lmagan fayllar / kataloglar mavjud:

  • aktivlar- resurslarning analogi. Asosiy farq shundaki, aktivga kirish uchun siz uning identifikatorini bilishingiz kerak, aktivlar ro'yxatini esa dastur kodidagi AssetManager.list () usuli yordamida dinamik ravishda olish mumkin;
  • lib- NDK (Native Development Kit) bilan yozilgan mahalliy Linux kutubxonalari.

Ushbu katalog o'yin ishlab chiqaruvchilari tomonidan C / C ++ da yozilgan o'yin dvigatelini, shuningdek, yuqori mahsuldorli dastur ishlab chiqaruvchilarni (masalan, Google Chrome) joylashtirish uchun ishlatiladi. Qurilma tartibga solingan. Lekin qiziqish qo'llanilishi uchun paket faylini qanday olish mumkin? APK fayllarini qurilmadan ildizsiz olishning iloji bo'lmaganligi uchun (ular / data / app katalogida) va root har doim ham tavsiya qilinmaydi, dastur faylini kompyuterga o'tkazishning kamida uchta usuli bor:

  • Chrome uchun APK Downloader kengaytmasi;
  • Real APK Leecher ilovasi;
  • turli xil fayl almashish va warezniki.

Qaysi birini ishlatish ta'mga bog'liq; Biz alohida dasturlardan foydalanishni afzal ko'ramiz, shuning uchun biz Real APK Leecher dasturidan foydalanishni tasvirlab beramiz, ayniqsa u Java -da yozilgan va shunga mos ravishda Windows -da, hatto nixda ham ishlaydi.

Dasturni ishga tushirgandan so'ng, siz uchta maydonni to'ldirishingiz kerak: elektron pochta, parol va qurilma identifikatori - va tilni tanlang. Birinchi ikkitasi-bu sizning qurilmangizda foydalanadigan Google hisobingizning elektron pochtasi va paroli. Uchinchisi - bu qurilma identifikatori va siz uni teruvchi ustidagi kodni terish orqali olishingiz mumkin # #8255## va keyin "Device ID" qatorini toping. To'ldirish paytida siz identifikatorni android-prefiksisiz kiritishingiz kerak.

To'ldirish va saqlashdan so'ng, tez -tez "Serverga ulanishda xato" xabari paydo bo'ladi. Bu Google Play bilan hech qanday aloqasi yo'q, shuning uchun uni e'tiborsiz qoldiring va sizni qiziqtirgan paketlarni qidiring.

Ko'rish va o'zgartirish

Aytaylik, siz qiziqqan, yuklangan, ochilgan paketni topdingiz ... va ba'zi XML fayllarini ko'rmoqchi bo'lganimda, bu fayl matnli emasligiga hayron bo'ldim. Qanday qilib uni dekompilyatsiya qilish va umuman paketlar bilan qanday ishlash kerak? Haqiqatan ham SDK -ni o'rnatish kerakmi? Yo'q, siz SDK -ni o'rnatishingiz shart emas. Aslida, APK paketlarini ochish, o'zgartirish va qadoqlashning barcha bosqichlari quyidagi vositalarni talab qiladi:

  • ZIP arxivchi qadoqlash va qadoqlash uchun;
  • smali- Dalvik virtual mashinasining bayt -kodini yig'uvchi/ajratuvchi (code.google.com/p/smali);
  • aapt- resurslarni qadoqlash vositasi (sukut bo'yicha, resurslar ilovalarning ishlashini optimallashtirish uchun ikkilik shaklda saqlanadi). Android SDK -ga kiritilgan, lekin uni alohida -alohida olish mumkin;
  • imzo chekuvchi- o'zgartirilgan paketni raqamli imzolash vositasi (bit.ly/Rmrv4M).

Siz bu vositalarning barchasini alohida ishlatishingiz mumkin, lekin bu noqulay, shuning uchun ular asosida yaratilgan yuqori darajali dasturlardan foydalanish yaxshidir. Agar siz Linux yoki Mac OS X da ishlasangiz, apktool deb nomlangan vosita mavjud. Bu sizga resurslarni asl shaklda (shu jumladan ikkilik XML va arsc fayllarini) ochish, o'zgartirilgan resurslar bilan paketni qayta tiklash imkonini beradi, lekin u paketlarni imzolay olmaydi, shuning uchun siz imzo qo'yuvchi yordam dasturini qo'lda ishlatishingiz kerak bo'ladi. Yordamchi dastur Java-da yozilganiga qaramay, uni o'rnatish ancha nostandart. Avval jar faylini o'zi olishingiz kerak:

$ 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 $ export PATH = ~ / bin: $ PATH

Agar siz Windows -da ishlayotgan bo'lsangiz, unda Virtual Ten Studio deb nomlangan ajoyib vosita bor, u ham bu vositalarni to'playdi (shu jumladan apktool -ning o'zi ham), lekin CLI interfeysi o'rniga siz foydalanuvchiga intuitiv grafik interfeysni taqdim etasiz. ochish, demontaj qilish va bir necha marta bosish bilan dekompilyatsiya qilish bo'yicha operatsiyalar. Bu vosita "Donation-ware", ya'ni ba'zida litsenziya olishni taklif qiladigan derazalar bor, lekin oxir-oqibat bunga yo'l qo'yib bo'lmaydi. Buni tasvirlashning ma'nosi yo'q, chunki siz interfeysni bir necha daqiqada tushunishingiz mumkin. Ammo apktool, konsoli tabiati tufayli, batafsilroq muhokama qilinishi kerak.


Keling, apktool variantlarini ko'rib chiqaylik. Qisqacha aytganda, uchta asosiy buyruq mavjud: d (dekodlash), b (qurish) va agar (ramka o'rnatish). Agar birinchi ikkita buyruq bilan hamma narsa aniq bo'lsa, uchinchi shartli operator nima qiladi? U har qanday tizim paketini ajratganda kerak bo'lgan belgilangan interfeysni ochadi.

Birinchi buyruqning eng qiziqarli variantlarini ko'rib chiqaylik:

  • -s- dex fayllarini demontaj qilmang;
  • -r- resurslarni ochmang;
  • -b- dex faylini demontaj qilish natijalariga disk raskadrovka ma'lumotlarini kiritmang;
  • -ramka yo'li- apktool -ga o'rnatilgan interfeys o'rniga, belgilangan interfeysdan foydalaning. Keling, b buyrug'i uchun bir nechta variantni ko'rib chiqaylik:
  • -f- o'zgarishlarni tekshirmasdan majburiy yig'ish;
  • -a- agar biz biron sababga ko'ra uni boshqa manbadan ishlatmoqchi bo'lsangiz, biz aapt (APK arxivini yaratish vositasi) yo'lini ko'rsatamiz.

Apktool -dan foydalanish juda oddiy, buning uchun siz faqat buyruqlar va APKga yo'lni ko'rsatishingiz kerak, masalan:

$ apktool d mail.apk

Shundan so'ng, barcha chiqarilgan va ajratilgan paketli fayllar pochta katalogida paydo bo'ladi.

Disektsiya. Reklamalarni o'chirib qo'ying

Nazariya, albatta, yaxshi, lekin agar ochilmagan paket bilan nima qilishni bilmasak, nima uchun kerak? Keling, nazariyani o'z foydamizga tatbiq etishga harakat qilaylik, ya'ni ba'zi dasturiy ta'minotni reklamalarni ko'rsatmasligi uchun o'zgartiring. Masalan, Virtual mash'al bo'lsin - virtual mash'ala. Biz uchun bu dasturiy ta'minot juda zo'r, chunki u ko'zni zerikarli reklamalar bilan to'ldirilgan va bundan tashqari, kod o'rmonida adashib qolmaslik uchun juda oddiy.


Shunday qilib, yuqoridagi usullardan birini ishlatib, ilovani bozordan yuklab oling. Agar siz Virtuous Ten Studio dasturidan foydalanishga qaror qilsangiz, dasturdagi APK faylini oching va uni oching, buning uchun loyiha yaratiladi (Fayl -> Yangi loyiha), so'ngra loyihaning kontekst menyusidan Faylni import qilish -ni tanlang. Agar sizning tanlovingiz apktool -ga tushgan bo'lsa, unda bitta buyruqni bajarish kifoya:

$ apktool com.kauf.particle.virtualtorch.apk

Shundan so'ng, com.kauf.particle.virtualtorch katalogida oldingi bo'limda tasvirlangan fayl daraxti paydo bo'ladi, lekin dex fayllari va apktool.yml fayli o'rniga qo'shimcha smali katalogi bo'ladi. Birinchisida dasturning bajariladigan dex faylining demontaj qilingan kodi, ikkinchisida apktool tomonidan paketni qayta tiklash uchun zarur bo'lgan xizmat ma'lumotlari mavjud.

Biz qarashimiz kerak bo'lgan birinchi joy, albatta, AndroidManifest.xml. Va bu erda biz darhol quyidagi qatorni uchratamiz:

Siz taxmin qilganingizdek, u ilovaga Internetga ulanishga ruxsat berish uchun javobgardir. Darhaqiqat, agar biz shunchaki reklamalardan qutulmoqchi bo'lsak, katta ehtimol bilan biz dastur uchun Internetni o'chirib qo'yishimiz kerak bo'ladi. Keling, buni qilishga harakat qilaylik. Biz ko'rsatilgan qatorni o'chirib tashlaymiz va apktool yordamida dasturni yaratishga harakat qilamiz:

$ apktool b com.kauf.particle.virtualtorch

Olingan APK fayli com.kauf.particle.virtualtorch / build / katalogida paydo bo'ladi. Ammo siz uni o'rnatolmaysiz, chunki u raqamli imzo va fayllarni tekshirish summasiga ega emas (shunchaki META-INF / katalogi yo'q). Biz apk-signer yordam dasturi yordamida paketga imzo qo'yishimiz kerak. Ishga tushdi. Interfeys ikkita yorliqdan iborat - birinchisida (kalitlar ishlab chiqaruvchisi) biz kalitlarni yaratamiz, ikkinchisida (APK imzosi) biz imzo qo'yamiz. Shaxsiy kalitni yaratish uchun quyidagi maydonlarni to'ldiring:

  • Maqsadli fayl- kalit do'konining chiqish fayli; u odatda bitta kalit juftligini o'z ichiga oladi;
  • Parol va Tasdiqlash- saqlash uchun parol;
  • Boshqa ism- ombordagi kalit nomi;
  • Boshqa ism uchun parol va Tasdiqlash- maxfiy kalit parol;
  • Amal qilish muddati- amal qilish muddati (yillar bilan). Standart - optimal.

Qolgan maydonlar odatda ixtiyoriydir, lekin kamida bittasini to'ldirish kerak.


OGOHLANTIRISH

Apk-signer yordamida ilovaga imzo chekish uchun siz Android SDK-ni o'rnatishingiz va unga to'liq yo'lni dastur sozlamalarida ko'rsatishingiz kerak.

Barcha ma'lumotlar faqat ma'lumot olish uchun berilgan. Tahririyat ham, muallif ham ushbu maqola materiallari etkazishi mumkin bo'lgan zarar uchun javobgar emas.

Endi siz ushbu kalit bilan APK -ga imzo qo'yishingiz mumkin. APK Signer yorlig'ida yangi yaratilgan faylni tanlang, unga parol, kalit taxallusi va parolni kiriting, so'ng APK faylini toping va "Imzo" tugmasini jasorat bilan bosing. Agar hamma narsa yaxshi bo'lsa, paket imzolanadi.

INFO

Biz o'z kalitimiz bilan paketga imzo chekkanimiz uchun, u asl ilovaga zid keladi, ya'ni bozorda dasturiy ta'minotni yangilashga harakat qilsak, bizda xato bo'ladi.

Raqamli imzo faqat uchinchi tomon dasturlari uchun talab qilinadi, shuning uchun agar siz tizim ilovalarini / system / app / katalogiga nusxalash orqali o'zgartirayotgan bo'lsangiz, ularni imzolash shart emas.

Shundan so'ng, biz paketni smartfonga tashlaymiz, o'rnatamiz va ishga tushiramiz. Voila, reklamalar yo'qoldi! Ammo buning o'rniga bizda Internet yo'q yoki tegishli ruxsatnomalar yo'q degan xabar paydo bo'ldi. Nazariy jihatdan, bu etarli bo'lishi mumkin, lekin bu xabar zerikarli ko'rinadi va rostini aytsam, biz soqov dastur bilan omadli bo'ldik. Odatda yozilgan dastur o'z vakolatlarini aniqlab beradi yoki Internetga ulanishni tekshiradi, aks holda ishga tushishdan bosh tortadi. Bu holatda qanday bo'lish kerak? Albatta, kodni tahrir qiling.

Odatda, dastur mualliflari dasturni ishga tushirish paytida yoki uning "faoliyat" laridan birida (bu oddiy qilib aytganda, dastur ekranlarida) reklama va qo'ng'iroqlar usullarini ko'rsatish uchun maxsus sinflar yaratadilar. Keling, ushbu sinflarni topishga harakat qilaylik. Biz smali katalogiga o'tamiz, keyin com (org faqat ochiq grafik kutubxonasini o'z ichiga oladi cocos2d), keyin kauf (aynan o'sha erda, chunki bu ishlab chiqaruvchining ismi va uning barcha kodi o'sha erda) - va mana, marketing katalogi. . Ichkarida biz smali kengaytmasi bo'lgan ko'plab fayllarni topamiz. Bu sinflar va ularning eng diqqatga sazovorlari Ad.smali sinfidir, uning nomi bilan aynan nimani e'lon qilishini taxmin qilish oson.

Biz uning ishlash mantig'ini o'zgartirishimiz mumkin edi, lekin uning har qanday usullariga qo'ng'iroqlarni ilovaning o'zidan olib tashlash ancha osonroq bo'lardi. Shuning uchun biz marketing katalogidan chiqib, qo'shni zarrachalar katalogiga, so'ng virtualtorchga o'tamiz. MainActivity.smali fayli bu erda alohida e'tiborga loyiqdir. Bu Android SDK tomonidan yaratilgan va ilovaga kirish nuqtasi sifatida o'rnatilgan standart Android klassi (C asosiy funktsiyasiga o'xshash). Faylni tahrirlash uchun oching.

Ichida smali (mahalliy assembler) kodi bor. Bu past darajadagi tabiat tufayli o'qish juda chalkash va qiyin, shuning uchun biz uni o'rganmaymiz, faqat koddagi Ad sinfiga tegishli barcha havolalarni topamiz va ularga izoh beramiz. Biz qidiruvda "Reklama" qatorida ketamiz va o'zimizni 25 -qatorda topamiz:

Dala xususiy reklamasi: Lcom / kauf / marketing / Reklama;

Bu erda Ad sinfidagi ob'ektni saqlash uchun reklama maydoni yaratiladi. Qator oldiga ### belgisini qo'yish orqali fikr bildirish. Biz qidirishda davom etamiz. 423 -qator:

Yangi misol v3, Lcom / kauf / marketing / Reklama;

Bu erda ob'ekt yaratiladi. Biz sharh beramiz. Biz qidiruvni davom ettiramiz va 433, 435, 466, 468, 738, 740, 800 va 802 -qatorlarda reklama sinfining qo'ng'iroqlarini topamiz. Fikr bildiramiz. Aftidan, hammasi shu. Biz saqlaymiz. Endi siz paketni bir joyga to'plashingiz va uning ishlashini va reklamalarning mavjudligini tekshirishingiz kerak. Tajribaning tozaligi uchun biz AndroidManifest.xml -dan o'chirilgan satrni qaytaramiz, paketni yig'amiz, imzolaymiz va o'rnatamiz.

Bizning gvineya cho'chqasi. Ko'rinib turgan reklama

Afsus! Reklama faqat dastur ishlayotganda yo'q bo'lib ketdi, lekin biz dasturiy ta'minotni ishga tushirganimizda ko'rinadigan asosiy menyuda qoldi. Shunday qilib, kuting, lekin kirish nuqtasi MainActivity sinfidir va dastur ishlayotgan vaqtda reklamalar yo'qolgan, lekin asosiy menyuda qolgan, shuning uchun kirish nuqtasi boshqacha? Haqiqiy kirish nuqtasini aniqlash uchun AndroidManifest.xml faylini qayta oching. Va ha, u quyidagi satrlarga ega:

Ular bizga (va eng muhimi, android) "Start" nomli faoliyatni android.intent.category.LAUNCHER toifasidan niyat (hodisa) android.intent.action.MAIN yaratilishiga javoban boshlash kerakligini aytishdi. Bu hodisa ishga tushirish panelidagi dastur belgisiga bosilganda hosil bo'ladi, shuning uchun u kirish nuqtasini, ya'ni Boshlanish sinfini belgilaydi. Katta ehtimol bilan, dasturchi dastlab asosiy menyusiz dasturni yozgan, kirish nuqtasi standart MainActivity klassi bo'lgan, so'ngra menyuni o'z ichiga olgan va Start sinfida tasvirlangan yangi oyna (faoliyat) qo'shgan va uni qo'lda kiritgan. nuqta

Start.smali faylini oching va yana "Reklama" qatorini qidiring, 153 va 155 -qatorlarda FirstAd klassi haqida eslatmani toping. U manba kodida ham bor va nomiga ko'ra, asosiy ekranda reklamalarni ko'rsatish uchun aniq javobgar. Biz yana qaraymiz, bu misol bilan bog'liq kontekstga ko'ra, FirstAd sinfining misoli va niyati, keyin shartli o'tish sinfning namunasini yaratishdan oldin amalga oshiriladigan kond_10 yorlig'i mavjud. :

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

Katta ehtimol bilan, dastur tasodifiy ravishda asosiy ekranda reklamalarni ko'rsatish -bo'lmasligini hisoblab chiqadi, aks holda esa kond_10 ga o'tadi. OK, keling, uning vazifasini soddalashtiramiz va shartli sakrashni shartsiz bajarishga almashtiramiz:

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

Kodda FirstAdga boshqa havolalar yo'q, shuning uchun faylni yoping va apktool yordamida virtual mash'alamizni qayta yig'ing. Uni smartfonga nusxalash, o'rnatish, ishga tushirish. Voila, barcha e'lonlar yo'qoldi va barchamizni tabriklaymiz.

Natijalar

Bu maqola Android ilovalarini buzish va o'zgartirish texnikasi haqida qisqacha ma'lumot. Ko'p masalalar, masalan, himoyani olib tashlash, tushunarsiz kodni tahlil qilish, dastur manbalarini tarjima qilish va almashtirish, shuningdek Android NDK yordamida yozilgan ilovalarni o'zgartirish kabi ko'plab muammolar ortda qoldi. Biroq, boshlang'ich bilimga ega bo'lgan holda, bularning barchasini tushunish faqat vaqt masalasidir.