uy - Smart TV
Biz Android ilovalarini ochamiz, o'zgartiramiz va paketlaymiz. APK'ni qanday ochish va qanday tahrirlash kerak? Apk faylni qanday tahrirlash mumkin

Bu yana men va rasmlar bilan choynaklar va kofe choynaklar uchun mening ko'rsatmalar.

Bu safar men Android operatsion tizimining tizim komponentlarini vaziyat paneli modifikatsiyasini o'rnatish misolida almashtirish haqida batafsil gaplashaman.

Android - bu biroz Linux. Telefonning g'ishtga aylanmasligi uchun fayllarni almashtirishda bir qator qoidalarga rioya qilish kerak, bu faqat qurilmaning ichki xotirasidan barcha ma'lumotlarning yo'qolishi bilan to'liq miltillash orqali qayta tiklanishi mumkin. Ichki bo'limlar flesh-disklardagi FAT32 dan farqli fayl tizimida formatlanadi. Boshqa narsalar qatorida, fayl xususiyatlari turli foydalanuvchilar guruhlari (fayl egasi, fayl egasi guruhi, boshqa foydalanuvchilar) uchun ruxsatlarni saqlaydi. Tizim fayllari bilan ishlaganda, ular saqlanishi kerak, chunki yuklashda tizim ularga kirish imkoniga ega bo'lmasligi va normal yuklanmasligi mumkin.
Keling, asboblardan boshlaylik.

Bizga kerak bo'ladi:

  • Ildiz huquqlari va fayl ruxsatlari bilan ishlashi mumkin bo'lgan fayl menejeri. Root Explorer eng yaxshisi (siz uni sotib oldingiz, to'g'rimi?)
  • O'zgartirilgan faylning o'zi, biz tizim o'rniga qo'ymoqchimiz (maqolaning oxiridagi havola).

Endi biz Root Explorer-ning qulay funktsiyalaridan birini ishlatamiz. Kontekst menyusini ochish uchun kerakli faylni uzoqroq bosib turamiz

Va elementni bosing " Ushbu faylni zip qiling" faylni SD-kartadagi zip-arxivda saqlash uchun. Arxivlangandan so'ng biz quyidagi xabarni olamiz:

"tugmasini bosing Qoling" jildda qolib, yana bir narsani qilish uchun.

Endi hamma narsa faylni almashtirishga tayyor.
Men allaqachon har bir faylga kirish huquqlari haqida gapirganman. Ularni yangi faylda qayta yaratish uchun avval ularni eskisidan ko'rib chiqishingiz kerak. Ular "rwxrwxrwx" bir qator belgilar bilan ifodalanadi. 1-triada - egalik huquqi, 2-chi - egalari guruhlari, 3-chi - boshqa barcha foydalanuvchilar. Bizning faylimiz "rw-r--r--" ruxsatlariga ega.

Endi SD-kartaga o'ting, u erda o'zgartirilgan faylni toping va uning kontekst menyusidan elementni tanlang " Nusxalash", lekin darhol "/system/app" papkasini tanlashga shoshilmang, chunki biz darhol tizimga zarar etkazamiz. Buning o'rniga, faylni vaqtinchalik fayllar uchun "/data/local/tmp" uchun maxsus papkaga nusxa ko'chiring. faylni tizimni qabul qiladigan shaklga aylantiring.
Birinchidan, faylning kontekst menyusiga qo'ng'iroq qiling va "ni tanlang. Nomini o'zgartirish" va "SystemUI.apk" fayl nomini kiriting. To'g'ri, chunki Linuxda nomdagi harflar katta ahamiyatga ega, ya'ni "systemui.apk" va "SystemUI.apk" turli fayllar.
Keyinchalik, fayl ruxsatlarini o'zgartirishingiz kerak, chunki endi ular deyarli noto'g'ri o'rnatilgan. Buni amalga oshirish uchun yana uzoq tegish bilan faylning kontekst menyusiga qo'ng'iroq qiling va elementni tanlang " Ruxsatlar". Bizning "rw-r--r--" qiymatimiz uchun katakchalar quyidagicha qo'yilishi kerak:

"bosing" KELISHDIKMI" va yana kontekst menyusiga qo'ng'iroq qiling. Endi siz ushbu ilovaning egasi va guruhini o'zgartirishingiz kerak. Buning uchun elementni tanlang " Egasini almashtiring". Faylning joriy egasi haqidagi ma'lumotlarga ega oyna paydo bo'ladi.
Bu erda biz kichik bir chekinish qilishimiz kerak.
"/system/app" jildida barcha fayllar "root" (uid=0) va "root" guruhi (gid=0) foydalanuvchisiga, "/system/framework" jildida esa foydalanuvchiga " system" (gid=1000) egalik qiladi. va "system" (gid=1000) guruhi.
Yuqoridagilarga asoslanib, kerakli qiymatlarni o'rnating va "ni bosing. KELISHDIKMI".
Va uchinchi marta fayl uchun kontekst menyusiga qo'ng'iroq qiling va elementni tanlang " Nusxalash" va nusxa ko'chirish dialog oynasida "/system/app" jildiga o'ting. Endi bepul bosing " joylashtirish" va diqqat bilan o'qing.
Deyarli darhol tizim sizga holat paneli jarayoni to'satdan tugaganligi haqida xabar beradi va uni ishga tushirishni taklif qiladi. Barcha urinishlar muvaffaqiyatsiz bo'ladi. Derazalarning ko'rinishi o'rtasida siz bir qator harakatlarni bajarishga vaqtingiz bo'lishi kerak. Tugmani bosishdan oldin siz qurilmani o'chirish uchun menyuni chaqirishingiz kerak, u ogohlantirish ostida paydo bo'ladi. Endi siz barmog'ingizni taxminan tugmachaning chap tomoniga qo'yishingiz kerak. Endi ogohlantirishni yopish, o'chirish opsiyasini tanlash va niyatlaringizni tasdiqlash uchun vaqtingiz bo'lishi uchun barmog'ingizni uch marta juda tez bosishingiz kerak.
Endi biz telefonni o'chirishni kutamiz, uni qayta ishga tushiramiz va natijadan bahramand bo'lamiz yoki undan zavqlanmaymiz va xatolarni qidiramiz.

Ba'zida Android-dagi ba'zi ilovalar qaysidir ma'noda foydalanuvchiga mos kelmaydi. Masalan, intruziv reklama. Va shunday bo'ladiki, dastur hamma uchun yaxshi, lekin undagi tarjima yo egri yoki umuman yo'q. Yoki, masalan, dastur sinovdir, lekin to'liq versiyani olishning hech qanday usuli yo'q. Vaziyatni qanday o'zgartirish mumkin?

Kirish

Ushbu maqolada biz APK paketini ilova yordamida qanday qismlarga ajratish, uning ichki tuzilishini ko'rib chiqish, bayt kodini qismlarga ajratish va dekompilyatsiya qilish, shuningdek, bizga u yoki bu foyda keltirishi mumkin bo'lgan ilovalarga bir nechta o'zgartirishlar kiritishga harakat qilamiz.

Bularning barchasini o'zingiz qilish uchun sizga Android ilovalari yozilgan Java tili va Android-ning hamma joyida qo'llaniladigan XML tili haqida hech bo'lmaganda asosiy bilim kerak bo'ladi - ilovaning o'zi va unga kirish huquqlarini tavsiflashdan tortib, satrlarni saqlashgacha. ekranda aks etadi. Shuningdek, sizga maxsus konsol dasturiy ta'minotidan foydalanish qobiliyati kerak bo'ladi.

Xo'sh, barcha Android dasturlari tarqatilgan APK to'plami nima?

Ilovani dekompilyatsiya qilish

Ushbu maqolada biz faqat qismlarga ajratilgan dastur kodi bilan ishladik, lekin agar katta ilovalarga jiddiyroq o'zgarishlar kiritilsa, smali kodini tushunish ancha qiyin bo'ladi. Yaxshiyamki, biz dex kodini Java kodiga dekompilyatsiya qilishimiz mumkin, garchi u asl bo'lmasa ham, qayta kompilyatsiya qilinmagan bo'lsa ham, dastur mantig'ini o'qish va tushunish ancha oson. Buning uchun bizga ikkita vosita kerak bo'ladi:

  • dex2jar - Dalvik baytekodini JVM baytekodiga tarjimon, uning asosida Java tilida kod olishimiz mumkin;
  • jd-gui bu dekompilyatorning o'zi bo'lib, JVM baytkodidan o'qilishi mumkin bo'lgan Java kodini olish imkonini beradi. Muqobil sifatida siz Jad (www.varaneckas.com/jad) dan foydalanishingiz mumkin; U ancha eski bo'lsa-da, ba'zi hollarda u Jd-gui-ga qaraganda ko'proq o'qilishi mumkin bo'lgan kod ishlab chiqaradi.

Ulardan shunday foydalanish kerak. Birinchidan, biz argument sifatida apk paketiga yo'lni belgilab, dex2jar-ni ishga tushiramiz:

% dex2jar.sh mail.apk

Natijada, Java kodini ko'rish uchun jd-gui da ochilishi mumkin bo'lgan joriy katalogda mail.jar Java paketi paydo bo'ladi.

APK paketlarini tartibga solish va ularni qabul qilish

Android ilovalari toʻplami mohiyatan oddiy ZIP fayl boʻlib, uning mazmunini koʻrish yoki uni chiqarib olish uchun maxsus vositalarni talab qilmaydi. Arxivga ega bo'lish kifoya - Windows uchun 7zip yoki Linuxda konsolni ochish. Ammo bu o'rash haqida. Ichida nima bor? Umuman olganda, bizda quyidagi tuzilma mavjud:

  • META-INF/- ilovaning yaratuvchisini identifikatsiya qiluvchi raqamli sertifikat va paketli fayllarning nazorat summalarini o'z ichiga oladi;
  • res/ - dastur o'z ishida foydalanadigan turli xil resurslar, masalan, tasvirlar, interfeysning deklarativ tavsifi, shuningdek, boshqa ma'lumotlar;
  • AndroidManifest.xml- ilova tavsifi. Bunga, masalan, talab qilinadigan ruxsatlar ro'yxati, kerakli Android versiyasi va kerakli ekran o'lchamlari kiradi;
  • classes.dex- Dalvik virtual mashinasi uchun kompilyatsiya qilingan dastur baytkodi;
  • resurslar.arsc- shuningdek, resurslar, lekin boshqa turdagi - xususan, satrlar (ha, bu fayl ruslashtirish uchun ishlatilishi mumkin!).

Ro'yxatda keltirilgan fayllar va kataloglar, agar hammasi bo'lmasa, ehtimol, APK'larning ko'pchiligida. Biroq, eslatib o'tishga arziydigan yana bir nechta oddiy bo'lmagan fayllar/kataloglar mavjud:

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

Bu katalogdan C/C++ da yozilgan oʻyin dvigatellarini oʻsha yerga joylashtirgan oʻyin ishlab chiqaruvchilari, shuningdek, yuqori unumli ilovalarni yaratuvchilar (masalan, Google Chrome) tomonidan foydalaniladi. Biz qurilmani aniqladik. Lekin sizni qiziqtirgan ilovaning paket faylini qanday olish mumkin? APK fayllarini qurilmadan ildizsiz olishning iloji bo'lmagani uchun (ular /data/app katalogida joylashgan) va ildiz otish har doim ham tavsiya etilmaydi, ilova faylini kompyuteringizga olishning kamida uchta usuli mavjud:

  • Chrome uchun APK Downloader kengaytmasi;
  • Haqiqiy APK Leecher ilovasi;
  • turli fayl hosting va Varezniks.

Qaysi birini ishlatish ta'mga bog'liq; biz alohida ilovalardan foydalanishni afzal ko'ramiz, shuning uchun biz Real APK Leecher-dan foydalanishni tasvirlab beramiz, ayniqsa u Java-da yozilgani va shunga mos ravishda Windows yoki Nix-da ishlaydi.

Dasturni ishga tushirgandan so'ng siz uchta maydonni to'ldirishingiz kerak: Elektron pochta, Parol va Device ID - va tilni tanlang. Birinchi ikkitasi qurilmada foydalanadigan Google hisobingizning elektron pochta manzili va parolidir. Uchinchisi, qurilma identifikatori bo'lib, uni teruvchiga kodni kiritish orqali olish mumkin # #8255## va keyin Device ID qatorini toping. To'ldirishda siz android- prefiksisiz identifikatorni kiritishingiz kifoya.

To'ldirgandan va saqlagandan so'ng, ko'pincha "Serverga ulanishda xato" xabari paydo bo'ladi. Uning Google Play bilan hech qanday aloqasi yo'q, shuning uchun uni e'tiborsiz qoldirib, sizni qiziqtirgan paketlarni qidiring.

Ko'rish va o'zgartirish

Aytaylik, siz o'zingizni qiziqtirgan paketni topdingiz, uni yuklab oldingiz, uni ochdingiz... va ba'zi XML faylini ko'rishga harakat qilganingizda, fayl matn emasligini bilib hayron qoldingiz. Uni qanday dekompilyatsiya qilish va umuman paketlar bilan qanday ishlash kerak? Haqiqatan ham SDK ni o'rnatish kerakmi? Yo'q, SDK ni o'rnatish umuman shart emas. Aslida, APK paketlarini chiqarish, o'zgartirish va paketlash uchun barcha qadamlar quyidagi vositalarni talab qiladi:

  • ZIP arxivi o'rash va qadoqlash uchun;
  • smali- Dalvik virtual mashinasi bayt-kod assembler/disassembler (code.google.com/p/smali);
  • aapt- resurslarni qadoqlash vositasi (sukut bo'yicha, ilovalar ish faoliyatini optimallashtirish uchun resurslar ikkilik shaklda saqlanadi). Android SDK-ga kiritilgan, lekin uni alohida olish mumkin;
  • imzolovchi- o'zgartirilgan paketni raqamli imzolash uchun vosita (bit.ly/Rmrv4M).

Siz ushbu vositalarning barchasini alohida ishlatishingiz mumkin, ammo bu noqulay, shuning uchun ular asosida yaratilgan yuqori darajadagi dasturlardan foydalanish yaxshiroqdir. Agar siz Linux yoki Mac OS X da ishlasangiz, apktool deb nomlangan vosita mavjud. Bu sizga resurslarni asl ko'rinishida (jumladan, ikkilik XML va arsc fayllarini) ochishga, o'zgartirilgan resurslar bilan paketni qayta tiklashga imkon beradi, lekin u paketlarni qanday imzolashni bilmaydi, shuning uchun imzolovchi yordam dasturini qo'lda ishga tushirishingiz kerak bo'ladi. Yordamchi dastur Java-da yozilganiga qaramay, uning o'rnatilishi juda nostandart. Avval jar faylining o'zini 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 $ eksport PATH=~/bin:$PATH

Agar siz Windows-da ishlasangiz, buning uchun Virtuous Ten Studio deb nomlangan ajoyib vosita mavjud bo'lib, u barcha vositalarni (shu jumladan apktool-ning o'zini ham) to'playdi, ammo CLI interfeysi o'rniga u foydalanuvchiga intuitiv grafik interfeysni taqdim etadi, uning yordamida siz uni ishlatishingiz mumkin. bir necha marta bosish orqali ochish, demontaj qilish va dekompilyatsiya qilish operatsiyalarini bajarish. Ushbu vosita Donation-ware, ya'ni ba'zida sizdan litsenziya olishingizni so'ragan oynalar paydo bo'ladi, lekin oxir-oqibat bunga chidash mumkin. Uni tavsiflashning ma'nosi yo'q, chunki interfeysni bir necha daqiqada tushunishingiz mumkin. Ammo apktool, konsol xususiyati tufayli, batafsilroq muhokama qilinishi kerak.


Keling, apktool variantlarini ko'rib chiqaylik. Muxtasar qilib aytganda, uchta asosiy buyruq mavjud: d (dekodlash), b (qurilish) va if (ramkani o'rnatish). Agar birinchi ikkita buyruq bilan hamma narsa aniq bo'lsa, uchinchi, shartli bayonot nima qiladi? U ko'rsatilgan UI ramkasini ochadi, bu siz har qanday tizim paketini ajratgan hollarda kerak bo'ladi.

Keling, birinchi buyruqning eng qiziqarli variantlarini ko'rib chiqaylik:

  • -s- dex fayllarni qismlarga ajratmang;
  • -r- resurslarni paketdan chiqarmang;
  • -b- dex faylini demontaj qilish natijalariga disk raskadrovka ma'lumotlarini kiritmang;
  • --ramka-yo'l- apktool-ga o'rnatilgan UI o'rniga belgilangan UI ramkasidan foydalaning. Endi b buyrug'i uchun bir nechta variantni ko'rib chiqamiz:
  • -f- o'zgarishlarni tekshirmasdan majburiy yig'ish;
  • -a- agar biron sababga ko'ra uni boshqa manbadan foydalanmoqchi bo'lsangiz, aaptga (APK arxivini yaratish vositasi) yo'lni ko'rsating.

Buning uchun apktool-dan foydalanish juda oddiy, shunchaki buyruqlardan birini va APK-ga yo'lni belgilang, masalan:

$ apktool d mail.apk

Shundan so'ng, paketning barcha chiqarilgan va demontaj qilingan fayllari pochta katalogida paydo bo'ladi.

Tayyorgarlik. Reklamani o'chirish

Nazariya, albatta, yaxshi, lekin agar biz qadoqlanmagan paket bilan nima qilishni bilmasak, nima uchun kerak? Keling, nazariyani o'z foydamiz uchun qo'llashga harakat qilaylik, ya'ni ba'zi dasturiy ta'minotni bizga reklama ko'rsatmasligi uchun o'zgartiramiz. Misol uchun, bu Virtual mash'al bo'lsin - virtual mash'al. Ushbu dasturiy ta'minot biz uchun juda mos keladi, chunki u zerikarli reklama bilan to'ldirilgan va bundan tashqari, kod o'rmonida yo'qolmaslik uchun etarlicha sodda.


Shunday qilib, yuqoridagi usullardan birini ishlatib, dasturni bozordan yuklab oling. Agar siz Virtuous Ten Studio-dan foydalanishga qaror qilsangiz, shunchaki dasturda APK faylini oching va uni oching, loyiha yarating (Fayl -> Yangi loyiha), so'ngra loyiha kontekst menyusida Import File-ni tanlang. Agar sizning tanlovingiz apktool-ga tushgan bo'lsa, faqat bitta buyruqni bajaring:

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

Shundan so'ng, com.kauf.particle.virtualtorch katalogida oldingi bo'limda tasvirlanganga o'xshash fayl daraxti paydo bo'ladi, lekin dex fayllari va apktool.yml fayli o'rniga qo'shimcha smali katalogi mavjud. Birinchisi dasturning bajariladigan dex faylining qismlarga ajratilgan kodini o'z ichiga oladi, ikkinchisi paketni qayta yig'ish uchun apktool uchun zarur bo'lgan xizmat ma'lumotlarini o'z ichiga oladi.

Biz izlashimiz kerak bo'lgan birinchi joy, albatta, AndroidManifest.xml. Va bu erda biz darhol quyidagi qatorga duch kelamiz:

Ilovaga Internet ulanishidan foydalanishga ruxsat berish uchun javobgar ekanligini taxmin qilish qiyin emas. Aslida, agar biz shunchaki reklamadan xalos bo'lishni istasak, dasturni Internetdan bloklashimiz kerak bo'ladi. Keling, buni qilishga harakat qilaylik. Belgilangan qatorni o'chirib tashlaymiz va apktool yordamida dasturiy ta'minotni yaratishga harakat qilamiz:

$ apktool b com.kauf.particle.virtualtorch

Olingan APK fayli com.kauf.particle.virtualtorch/build/ katalogida paydo bo'ladi. Biroq, uni o'rnatib bo'lmaydi, chunki unda raqamli imzo va fayl nazorat summalari yo'q (shunchaki u META-INF/ katalogiga ega emas). Biz apk-signer yordam dasturidan foydalanib paketni imzolashimiz kerak. Ishga tushirildi. Interfeys ikkita yorliqdan iborat - birinchisida (Key Generator) biz kalitlarni yaratamiz, ikkinchisida (APK Signer) imzolaymiz. Shaxsiy kalitimizni yaratish uchun quyidagi maydonlarni to'ldiring:

  • Maqsadli fayl- kalit do'koni chiqish fayli; odatda bir juft kalitni saqlaydi;
  • Parol Va Tasdiqlang- saqlash uchun parol;
  • Taxallus- saqlashdagi kalitning nomi;
  • Taxallus parol Va Tasdiqlang- maxfiy kalit paroli;
  • Yaroqlilik- amal qilish muddati (yillarda). Standart qiymat optimal hisoblanadi.

Qolgan maydonlar, odatda, ixtiyoriy, lekin kamida bittasi to'ldirilishi kerak.


OGOHLANTIRISH

Apk-signer yordamida ilovani imzolash uchun siz Android SDK-ni o'rnatishingiz va ilova sozlamalarida unga to'liq yo'lni ko'rsatishingiz kerak.

Barcha ma'lumotlar faqat ma'lumot olish uchun taqdim etiladi. Na muharrirlar, na muallif ushbu maqola materiallaridan kelib chiqishi mumkin bo'lgan har qanday zarar uchun javobgar emas.

Endi siz ushbu kalit bilan APK-ni imzolashingiz mumkin. APK Signer yorlig'ida yangi yaratilgan faylni tanlang, parol, kalit taxallus va parolni kiriting, so'ng APK faylini toping va "Imzolash" tugmasini jasorat bilan bosing. Har bir narsa yaxshi bo'lsa, paket imzolanadi.

MA'LUMOT

Paketni o'z kalitimiz bilan imzolaganimiz sababli, u asl dasturga zid keladi, ya'ni biz dasturiy ta'minotni bozor orqali yangilashga harakat qilganimizda, biz xatoga duch kelamiz.

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

Shundan so'ng paketni smartfoningizga yuklab oling, o'rnating va ishga tushiring. Voila, reklama yo'qoldi! Buning o'rniga bizda Internet yo'q yoki tegishli ruxsatnomalar yo'q degan xabar paydo bo'ldi. Nazariy jihatdan, bu etarli bo'lishi mumkin, ammo xabar zerikarli ko'rinadi va rostini aytsam, biz shunchaki ahmoqona dastur bilan omadli bo'ldik. Odatda yozilgan dasturiy ta'minot, ehtimol, hisob ma'lumotlarini aniqlaydi yoki Internetga ulanishni tekshiradi va aks holda ishga tushirishni rad etadi. Bu holatda qanday bo'lish kerak? Albatta, kodni tahrirlang.

Odatda, dastur mualliflari ilova yoki uning "faoliyati" dan biri (oddiy qilib aytganda, ilova ekranlari) ishga tushirilganda reklamalarni ko'rsatish va ushbu sinflarni chaqirish usullari uchun maxsus sinflarni yaratadilar. Keling, ushbu sinflarni topishga harakat qilaylik. Biz smali katalogiga o'tamiz, keyin com (orgda faqat ochiq grafik kutubxonasi cocos2d), keyin kauf (bu erda, chunki bu ishlab chiquvchining nomi va uning barcha kodi o'sha erda) - va bu erda, marketing katalogi. Ichkarida biz smali kengaytmali bir qator fayllarni topamiz. Bular sinflar bo'lib, ulardan eng diqqatga sazovori Ad.smali sinfidir, uning nomidan reklamani ko'rsatadigan sinf ekanligini taxmin qilish oson.

Biz uning ishlash mantig'ini o'zgartirishimiz mumkin edi, ammo dasturning o'zidan uning har qanday usullariga qo'ng'iroqlarni olib tashlash ancha oson bo'lar edi. Shuning uchun biz marketing katalogini tark etamiz va qo'shni zarrachalar katalogiga, keyin esa virtual mash'alaga o'tamiz. MainActivity.smali fayli bu erda alohida e'tiborga loyiqdir. Bu standart Android klassi bo'lib, u Android SDK tomonidan yaratilgan va ilovaga kirish nuqtasi sifatida o'rnatiladi (C tilidagi asosiy funksiyaga o'xshash). Faylni tahrirlash uchun oching.

Ichkarida smali kodi (mahalliy assembler) mavjud. Bu past darajadagi tabiati tufayli juda chalkash va o'qish qiyin, shuning uchun biz uni o'rganmaymiz, shunchaki koddagi Reklama sinfiga barcha havolalarni topamiz va ularga izoh beramiz. Qidiruvda "Reklama" qatorini kiritamiz va 25-qatorga o'tamiz:

Dala shaxsiy e'lon: Lcom/kauf/marketing/Ad;

Bu yerda Reklama sinfi obyektini saqlash uchun reklama maydoni yaratiladi. Biz chiziq oldiga ### belgisini qo'yish orqali izoh beramiz. Biz qidiruvni davom ettiramiz. 423-qator:

Yangi namunali v3, Lcom/kauf/marketing/Ad;

Bu erda ob'ektni yaratish sodir bo'ladi. Keling, fikr bildiraylik. Biz qidiruvni davom ettiramiz va 433, 435, 466, 468, 738, 740, 800 va 802-qatorlarda E'lonlar sinfining usullariga qo'ng'iroqlarni topamiz. Keling, fikr bildiraylik. Qarang, shunday. Saqlash. Endi paketni qayta birlashtirish va funksionallik va reklama mavjudligini tekshirish kerak. Tajribaning tozaligi uchun biz AndroidManifest.xml dan olib tashlangan chiziqni qaytaramiz, paketni yig'amiz, imzolaymiz va o'rnatamiz.

Bizning gvineya cho'chqamiz. Ko'rinadigan reklama

Voy! Reklama faqat dastur ishlayotgan paytda yo'qoldi, lekin biz dasturiy ta'minotni ishga tushirganimizda ko'ramiz asosiy menyuda qoldi. Xo'sh, kuting, lekin kirish nuqtasi MainActivity sinfidir va dastur ishlayotgan paytda reklama yo'qolgan, lekin asosiy menyuda qolgan, shuning uchun kirish nuqtasi boshqacha? Haqiqiy kirish nuqtasini aniqlash uchun AndroidManifest.xml faylini qayta oching. Va ha, unda quyidagi qatorlar mavjud:

Ular bizga (va eng muhimi, androidga) android.intent.category.LAUNCHER toifasidan android.intent.action.MAIN niyatini (voqea) yaratishga javoban Start nomli faoliyatni ishga tushirish kerakligini aytadi. Ushbu hodisa ishga tushirgichdagi ilova belgisini bosganingizda hosil bo'ladi, shuning uchun u kirish nuqtasini, ya'ni Start sinfini aniqlaydi. Ehtimol, dasturchi birinchi navbatda asosiy menyusiz dasturni yozgan, unga kirish nuqtasi standart MainActivity klassi bo'lgan, so'ngra menyuni o'z ichiga olgan va Start sinfida tasvirlangan yangi oynani (faoliyat) qo'shgan va uni qo'lda kiritgan. nuqta.

Start.smali faylini oching va yana "Reklama" qatorini qidiring, biz 153 va 155 qatorlarda FirstAd klassi haqida eslatma topamiz. U shuningdek, manba kodida va nomiga ko'ra, asosiy ekranda reklamalarni ko'rsatish uchun javobgardir. Keling, batafsilroq ko'rib chiqaylik, FirstAd sinfining namunasini yaratish va kontekstga ko'ra, ushbu misol bilan bog'liq bo'lgan niyat, keyin esa kond_10 yorlig'i, shartli o'tish namunani yaratishdan oldin amalga oshiriladi. sinfdan:

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

Ehtimol, dastur qandaydir tarzda reklamaning asosiy ekranda ko'rsatilishi kerakligini hisoblab chiqadi va agar bo'lmasa, to'g'ridan-to'g'ri cond_10 ga o'tadi. OK, keling, uning vazifasini soddalashtiramiz va shartli o'tishni shartsiz bilan almashtiramiz:

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

Kodda FirstAd haqida boshqa eslatma yo'q, shuning uchun biz faylni yopamiz va apktool yordamida virtual mash'alimizni qayta yig'amiz. Uni smartfoningizga nusxalang, o'rnating, ishga tushiring. Voila, barcha reklamalar yo'qoldi, buning uchun barchamizni tabriklaymiz.

Natijalar

Ushbu maqola Android ilovalarini buzish va o'zgartirish usullari haqida qisqacha ma'lumotdir. Himoyani olib tashlash, tushunarsiz kodni tahlil qilish, dastur resurslarini tarjima qilish va almashtirish, shuningdek, Android NDK yordamida yozilgan ilovalarni o'zgartirish kabi ko'plab muammolar sahna ortida qoldi. Biroq, asosiy bilimga ega bo'lish, barchasini tushunish uchun vaqt masalasidir.

Ushbu maqoladan siz Android ilovasi nimadan iboratligini, APK faylini qanday ochishni va qanday dasturlar bilan bilib olasiz.

APK fayli nima?

APK arxivlangan bajariladigan dastur fayllari uchun ishlatiladigan Android operatsion tizimining formati bo'lib, fayl nomi har qanday bo'lishi mumkin, lekin kengaytma faqat this.apk kabi ko'rinishi kerak. Boshqa operatsion tizimlardagi APK analoglari Windowsda .msi, Symbianda .sis, Linuxda .rpm yoki .deb.

Keling, ichkarida nima borligini ko'rib chiqaylik
Aslida, .apk ZIP arxividir, shuning uchun siz har qanday fayl menejeri yoki arxivator, masalan, WinRAR yoki X-plore mobil ilovasi yordamida ichki qurilmaga qarashingiz mumkin.





Shuni esda tutish kerakki, siz faqat ichki manbalarga vizual kirish huquqiga ega bo'lasiz;
Keling, strukturani ko'rib chiqaylik
.apk ichida biz bir qancha fayl va papkalarni ko'ramiz, keling ular nima uchun ekanligini bilib olaylik:
  • AndroidManifest.xml - bu ilovaning o'ziga xos "pasporti" bo'lib, undan barcha asosiy fikrlar, talablar, versiya, ruxsatlar va hokazolarni bilib olishingiz mumkin.
  • META-INF ushbu faylda metadata, ya'ni ma'lumotlar, nazorat summalari, ma'lumotlarga yo'llar, resurslarning yo'llari va nazorat yig'indilari, sertifikatlar haqidagi ma'lumotlar mavjud. Ushbu faylni istalgan matn muharriri bilan ochishingiz mumkin, lekin Notepad++ dan foydalanish tavsiya etiladi.
  • Res papkasida barcha dastur resurslari, grafikalar, piktogrammalar, rasmlar, matnlar va grafik interfeys elementlari mavjud. Bundan tashqari, jildga osongina kirishingiz mumkin.
  • classes.dex - bu Dalvik VM virtual mashinasi tomonidan bajariladigan to'g'ridan-to'g'ri dastur kodi; siz ushbu fayl ichida nima borligini faqat .apk ni dekompilyatsiya qilish orqali ko'rishingiz mumkin, biz bu haqda boshqa maqolalarda gaplashamiz. resources.arsc - kompilyatsiya qilingan XML fayli, bu fayl dasturda ishtirok etgan barcha resurslar haqidagi ma'lumotlarni o'z ichiga oladi.
  • lib - manbalariga faqat maxsus dasturlardan foydalanganda kirish mumkin bo'lgan mahalliy kutubxonalarga ega papka. APK'da com, org, udk kabi fayl va papkalar ham bo'lishi mumkin, lekin har doim ham emas.

Endi ichki tuzilmani batafsil ko'rib chiqaylik, buning uchun bizga dekompilyatsiya dasturi, Java va APK fayli kerak; .apk ni demontaj qilish uchun asosiy vosita Apktool, ammo bu dastur faqat chiziqdan ishlaydi, bu juda qulay emas. Tezroq va qulayroq tahlil qilish uchun siz APKing-dan foydalanishingiz mumkin, bu hali ham bir xil Apktool, ammo kontekst menyusidan ishlash qobiliyatiga ega.
Shunday qilib, biz APKingni Windows uchun har qanday dastur kabi o'rnatamiz va .apk ni tanlab, sichqonchaning o'ng tugmasi va Shift tugmasi bilan bir vaqtning o'zida bosing, shundan so'ng biz quyidagilarni ko'ramiz:


Va kerakli amalni tanlang, masalan, to'liq dekompilyatsiya qiling, keyin dastur operatsiyani yakunlaydi va xuddi shu nomdagi papkani yaratadi.


Jildni ochish orqali biz APK faylining barcha resurslariga kirish huquqiga ega bo'lamiz.


Endi barcha matnli fayllarni tahrirlash mumkin, asosiy qoidalarga rioya qilgan holda siz mashhur Notepad++ dasturidan foydalanishingiz mumkin, masalan, AndroidManifest.xml ni ko'rib chiqing.

Bizning veb-saytimizda Android uchun yuklab olishingiz mumkin bo'lgan Apk editor pro sizga mobil qurilmalar uchun har qanday ilova fayllari tarkibini buzish/o'zgartirish va uni o'zingizning xohishingizga ko'ra sozlash imkonini beradi.

Xususiyatlari

Dastur ilg'or foydalanuvchilar qo'lida Android uchun ilovalarni tahrirlash uchun kuchli vositaga aylanishi mumkin bo'lgan professional yordamchi dasturdir. Funktsionallik shaxsiy kompyuterlar uchun shunga o'xshash dasturlardan deyarli farq qilmaydi.

Ushbu yordamchi dastur nima qila oladi?

  1. Boshqa ilovalarning nomlarini o'zgartiring (tarjima qiling).
  2. Arxitektura tartibini, ranglarini, grafik sozlamalari shablonlarini o'zgartiring (masalan, piktogramma o'lchami).
  3. Ovoz dizaynini, media fayllarni o'zgartiring.
  4. Reklamani olib tashlash.
  5. Pulli kontentni bloklashni chetlab o'tish.
  6. Ilovani qurilmaning ichki xotirasidan SD kartaga o'tkazing.
  7. Ruxsatni o'zgartirish va boshqalar.

Yordamchi dasturdan qanday foydalanishni tushunish uchun apk muharriri pro-ni yuklab olishingiz va menyuga o'tishingiz kerak. Keyin Android-da allaqachon o'rnatilgan dasturni yoki uning apk faylini tanlang. Shundan so'ng, foydalanuvchi o'zgartirishi mumkin bo'lgan standart ma'lumotlar ochiladi:

  • resurslarni tahrirlash;
  • fayllarni almashtirish;
  • umumiy tahrirlash;
  • ma'lumotlarni tahrirlash.

Dastur o'zgartirilgan versiyani o'rnatishni taklif qiladi. Bu barcha holatlarda ishlamaydi, shuning uchun eski versiyani qo'lda olib tashlash va yangisini o'rnatish kerak. O'chirishdan so'ng, siz Android-dagi dasturlar orasida apk muharriri papkasini tanlashingiz kerak (qulaylik uchun siz ES Explorer-dan foydalanishingiz mumkin) va o'zgartirilgan dastur faylini topib, uni qurilmaga o'rnatishingiz kerak.

Dastur foydalanuvchi uchun qulay interfeysga ega. Navigatsiya juda oddiy, lekin foydalanuvchi uni tushunish uchun ingliz tilini asosiy bilimga ega bo'lishi kerak.

Afzalliklar va kamchiliklar

  1. Dastur foydalanuvchiga ilovalarni sozlash uchun keng imkoniyatlarni ochadi.
  2. Menyuda Yordam bo'limi mavjud bo'lib, unda muharrir dasturining ko'plab imkoniyatlarini sodda va batafsil tavsiflaydi. Shu sababli, dasturlashdan uzoq bo'lgan foydalanuvchilar uchinchi tomon manbalarida misollar va tahrirlash ko'rsatmalarini izlashlari shart emas.
  3. Dasturni bizning veb-saytimizda bepul yuklab olishingiz mumkin.

Ushbu yordam dasturidan foydalanish ba'zi ko'nikmalar va bilimlarni talab qiladi. Tajribasiz foydalanuvchi qo'lida tahrirlash fayl tizimining yaxlitligini buzishga olib kelishi mumkin, bu esa oxir-oqibat dasturning ishlamay qolishiga olib keladi. Yordam elementidagi menyuda rasmlar bilan konvertatsiya qilish misollari va Android-da apk muharriri pro-dan to'g'ri foydalanish bo'yicha maslahatlar mavjud. Shuning uchun, agar siz ushbu dasturni tushunmoqchi bo'lsangiz, faqat ko'rsatmalarga amal qiling.

Tahrirlovchi dasturning noqulay interfeysiga (rus tilini bilmaslik, doimiy reklama, bannerlar va boshqalar) duch kelganlar uchun juda foydali vositadir. Agar siz ushbu dasturdan allaqachon foydalangan bo'lsangiz, quyida sharhlarda o'z taassurotlaringizni baham ko'ring.



 


O'qing:



Ikki SIM-kartaga ega Nokia X2 smartfonida o'z musiqangizni kerakli kontaktga qanday o'rnatish mumkin

Ikki SIM-kartaga ega Nokia X2 smartfonida o'z musiqangizni kerakli kontaktga qanday o'rnatish mumkin

ibnlive.in.com Nokia Lumia-da qanday qilib musiqa o'rnatish mumkin? Odamlar telefon sotib olgandan so'ng darhol bu savolni berishadi. Axir, odatda, barcha zamonaviy ...

Windows uchun bepul dasturlar yuklab olish

Windows uchun bepul dasturlar yuklab olish

Microsoft .NET Framework ".NET" arxitekturasida ishlaydigan dasturlar uchun mo'ljallangan. Uning birinchi versiyasi 2002 yilda analog sifatida chiqarilgan...

Har qanday ISO tasvirini USB flesh-diskiga qanday yozish mumkin

Har qanday ISO tasvirini USB flesh-diskiga qanday yozish mumkin

Salom, do'stlar! Bugun biz yuklanadigan USB flesh-diskini yaratish haqida yana gaplashamiz. Qanday maqsadlarda foydalanish kerak ...

Noma'lum raqamlardan qo'ng'iroqlar

Noma'lum raqamlardan qo'ng'iroqlar

Yaqinda Rossiyada foydalanuvchilar "spam" ning yangi turiga duch kelishdi, unda abonent doimiy ravishda qo'ng'iroq qilinadi va noma'lum ...

tasma tasviri RSS