uy - Internet
Google Play'da ilovaga imzo qo'yish xususiyatidan qanday foydalanish kerak. Google Play-ga joylashtirish uchun gibrid mobil ilovangizga qanday imzo qo'yish kerak Apk faylini qanday imzolash kerak

Ilovaga kirish xususiyati tufayli Google Play Google ilovangizning imzolash kalitini boshqarishi, shuningdek, ushbu kalitni himoya qilishi va tarqatish uchun APK fayllaringizni imzolash uchun foydalanishi mumkin. Ushbu saqlash usuli kalit yo'qolgan yoki buzilgan taqdirda sizni himoya qiladi.

Muhim! Android App Bundles (tavsiya etilgan ilovalarni nashr qilish formati) dan foydalanish uchun Ilovalar toʻplamini Play Console-ga yuklashdan oldin Google Play ilovalarni imzolash dasturida roʻyxatdan oʻtishingiz kerak.

Roʻyxatdan oʻtish akkaunt egalari va xizmat koʻrsatish shartlarini qabul qilgan global ishlab chiqarishni boshqarish ruxsatiga ega foydalanuvchilar uchun ochiq. Google Play ilovasini imzolash dasturida bir vaqtning o'zida faqat bitta ilovani ro'yxatdan o'tkazishingiz mumkin.

Ish tamoyillari

Google Play ilovasini imzolash funksiyasidan foydalanganda kalitlaringiz Google kalitlarini saqlaydigan bir xil infratuzilmada saqlanadi va maxsus kalitlarni boshqarish xizmati tomonidan himoyalanadi. Batafsil ma'lumot Google texnik infratuzilmasini Google Cloud Security hujjatlarida topish mumkin.

Android ilovalari shaxsiy kalit bilan imzolanadi. Har bir bunday kalit umumiy sertifikat bilan bog'langan bo'lib, uning yordamida qurilmalar va xizmatlar ilovalar va ularning yangilanishlari xavfsizligini tekshirishi mumkin. Faqat imzosi imzoga mos keladigan yangilanishlar qurilmalarga o'rnatiladi o'rnatilgan dastur. Google ilovaga imzo kalitini boshqarishiga ruxsat berilsa, bu jarayon xavfsizroq bo‘ladi.

Eslatma. Google Play ilovasini imzolash xususiyatidan foydalanish ixtiyoriy. Siz App Bundles-dan foydalanmasdan APK-larni yuklab olishingiz va o'z kalitlaringizni boshqarishingiz mumkin. Biroq, agar siz kalit do'koniga kirish huquqini yo'qotib qo'ysangiz yoki u buzilgan bo'lsa, ilovangizni yangilay olmaysiz va uni boshqa paket nomi bilan qayta nashr qilishingiz kerak bo'ladi.

Kalitlar, ob'ektlar va asboblarning tavsiflari
Shartlar Tavsif
Ilova imzolash kaliti

Google Play tomonidan foydalanuvchi qurilmasiga yetkazilgan APK fayllarni imzolash uchun foydalaniladigan kalit. Google Play ilovasini imzolash dasturiga roʻyxatdan oʻtganingizda, yuklab olishingiz mumkin mavjud kalit imzolar yoki Google-ga yangisini yaratishga ruxsat bering.

Yuklab olish kaliti

Yuklab olish kalitini yaratishning ikki yo'li mavjud:

  • Ilova imzolash kalitidan foydalaning. Agar siz dasturga roʻyxatdan oʻtganingizda Google’ga ilovani imzolash kalitini yaratishga ruxsat bergan boʻlsangiz, yuklash kaliti ilovaning birinchi versiyasini imzolashda foydalangan kalit boʻladi.
  • Alohida yuklab olish kalitidan foydalaning. Agar siz dasturga ro'yxatdan o'tayotganda o'zingizning ariza imzolash kalitingizni taqdim etgan bo'lsangiz, yaratishingiz mumkin yangi kalit yuklamalar. Agar buni qilishni xohlamasangiz, yangi nashrlarni imzolash uchun yuklab olish kaliti sifatida ilova imzolash kalitidan foydalaning.
Sertifikat (.der yoki .pem)

Ochiq kalitni o'z ichiga olgan sertifikat va Qo'shimcha ma'lumot uning egasi haqida. Sertifikat umumiy kalit har kimga App Bundle yoki APK faylini kim imzolaganligini bilish imkonini beradi. Bu sertifikat ulashish mumkin, chunki u shaxsiy kalitni o'z ichiga olmaydi.

Kalitlaringizni API provayderlarida roʻyxatdan oʻtkazish uchun ilova imzolash kaliti uchun umumiy sertifikatni quyidagi manzildan yuklab olishingiz mumkin Ilovalarni imzolash Play Console'da. Ochiq kalit sertifikati hamma bilan bo'lishishi mumkin, chunki u shaxsiy kalitni o'z ichiga olmaydi.

Sertifikatning raqamli barmoq izi

Sertifikat uchun qisqa va noyob identifikator. Barmoq izi paket nomi bilan birga ko'pincha API provayderlari tomonidan xizmatlariga kirishni ta'minlash uchun so'raladi.

MD5, SHA-1 va SHA-256 yuklab olish va ilovalar imzo sertifikatlarining raqamli barmoq izlarini sahifada topish mumkin Ilovalarni imzolash Play Console'da. Siz boshqa turdagi raqamli barmoq izini ham olishingiz mumkin. Buning uchun xuddi shu sahifada DER formatidagi asl sertifikatni yuklab oling.

Java kalitlari doʻkoni (.jks yoki .keystore) Xavfsizlik sertifikatlari va shaxsiy kalitlarni saqlash.
PEPK vositasi

Java xotirasidan shaxsiy kalitlarni eksport qilish va ularni Google Play-ga o'tkazish uchun shifrlash vositasi.

Google’ga ilova imzolash kalitini taqdim etganingizdan so‘ng, o‘z kalitingizni (va ixtiyoriy ravishda uning umumiy sertifikatini) eksport qilish va yuklab olishni tanlang, so‘ngra asbobni yuklab olish va undan foydalanish bo‘yicha ko‘rsatmalarga rioya qiling. Shuningdek, siz ochiq manba PEPK vositasini yuklab olishingiz, ko'rishingiz va foydalanishingiz mumkin.

Arizani imzolash jarayoni

Ilovani Google Play’da imzolashdan oldin yoki keyin asl ilova imzolash kaliti bilan imzolangan APK fayllarini yuklab olishingiz mumkin.

Agar siz Android App Bundles-ga o'tayotgan bo'lsangiz, ularni sinov versiyalarida sinab ko'rishingiz va ishlab chiqarish versiyalarida mavjud APK'lardan foydalanishingiz mumkin. Bu qanday ishlaydi:

  1. Siz App Bundle yoki APK-ni imzolaysiz va uni Play Console-ga yuklaysiz.
  2. Ilovani imzolash jarayoni siz yuklab olayotgan narsaga bog'liq.
    • Ilovalar to'plami. Google App Bundle'dan APK fayllarni optimallashtiradi va keyin ularni ilova imzolash kaliti bilan imzolaydi.
    • APK fayli yuklab olish kaliti bilan imzolangan. Google imzoingizni tekshiradi, uni olib tashlaydi va APK fayllarini ilova imzolash kaliti bilan qayta imzolaydi.
    • Ilova imzolash kaliti bilan imzolangan APK fayli. Google imzoni tekshiradi.
  3. Google foydalanuvchilarga imzolangan APK fayllarni yetkazib beradi.

Google Play ilovasini ro'yxatdan o'tkazish dasturiga qanday ro'yxatdan o'tish mumkin

Yangi ilovalar

1-qadam: Yuklab olish kalitini yarating

  1. Ko'rsatmalarga rioya qilib, yuklab olish kalitini yarating.
  2. Yangi APK faylni yuklab olish kaliti bilan imzolang.

2-qadam: Chiqarishni tayyorlang

  1. , ko'rsatmalarga rioya qiling.
  2. Versiya turini tanlaganingizdan so‘ng, “Google’ga ilovani imzolash kalitini himoyalash va boshqarishga ruxsat bering” ostida ilovaga imzo qo‘yish sozlamalarini sozlang.
  3. Agar bossangiz Davom eting, yaratilgan kalit kelajakdagi nashrlarni imzolash uchun ishlatiladigan yuklab olish kalitiga aylanadi. Quyidagilarni ham tanlashingiz mumkin Kengaytirilgan sozlamalar:
    • Ishlab chiquvchi hisobidagi turli ilovalar uchun bitta kalitdan foydalaning (variant 2).
    • Mavjud ilovaning imzolash kalitini yuklang (variant 2, 3 va 4), eng mos eksport va yuklab olish usulini tanlang. Ilovaning imzo kaliti va uning umumiy sertifikatini yuklab olganingizdan so'ng, uni ilovaning imzolash kaliti sifatida ishlatishingiz mumkin.

Eslatma. Davom etish uchun siz Foydalanish shartlarini qabul qilishingiz va Ilovani imzolash dasturida ro‘yxatdan o‘tishingiz kerak.

3-qadam: Ilovani imzolash kalitini API provayderlarida ro‘yxatdan o‘tkazing

Agar ilovangiz API dan foydalansa, autentifikatsiya qilish uchun Google ilovangizni imzolash uchun foydalanadigan kalit sertifikatini roʻyxatdan oʻtkazishingiz kerak boʻladi. Sertifikatni topish uchun:

  1. Play Console tizimiga kiring.
  2. Ilovani tanlang.
  3. Chapdagi menyudan tanlang Chiqarish boshqaruvi > Ariza imzolari.
    • Agar API provayderi boshqa turdagi barmoq izini talab qilsa, siz DER formatidagi asl sertifikatni yuklab olishingiz va kerak bo'lganda tegishli vositalar yordamida o'zgartirishingiz mumkin.
Chop etilgan ilovalar

1-qadam: Google Play ilovasini imzolash dasturida roʻyxatdan oʻting

  1. Play Console tizimiga kiring.
  2. Ilovani tanlang.
  3. Chapdagi menyudan tanlang Chiqarish boshqaruvi > Ariza imzolari.
  4. Agar kerak bo'lsa, Foydalanish shartlarini o'qing va bosing Qabul qiling.

2-qadam: Asl kalitni Google-ga yuboring va yuklab olish kalitini yarating

  1. Asl ilova imzolash kalitini toping.
  2. Play Console tizimiga kiring.
  3. Ilovani tanlang.
  4. Chapdagi menyudan tanlang Chiqarish boshqaruvi > Ariza imzolari.
  5. Chiqarish jarayoniga eng mos keladigan usulda mavjud ilova imzolash kalitini yuklang.
  1. va sertifikatni Google Play-ga yuklang.
    • Yuklab olish kaliti sifatida ilovani imzolash kalitidan ham foydalanishingiz mumkin.
  2. Ilova imzolash sertifikatining raqamli barmoq izlaridan (MD5, SHA-1 va SHA-256) nusxa oling.
    • Sinovni o'tkazish uchun siz sertifikatning barmoq izi va ilova imzolash kaliti yordamida yuklash kaliti sertifikatini API provayderida ro'yxatdan o'tkazishingiz kerak bo'lishi mumkin.

4-qadam: Yuklab olish kalitingiz bilan keyingi ilova yangilanishini imzolang

Chiqarilgan ilova yangilanishlari yuklab olish kaliti bilan imzolanishi kerak.

Yuklab olish kalitini qanday yaratish va asosiy do'konlarni yangilash

Siz Google Play ilovasini imzolash dasturiga roʻyxatdan oʻtganingizda yuklab olish kalitini yaratishingiz mumkin yoki uni keyinroq yaratishingiz mumkin Chiqarish boshqaruvi > Ariza imzolari.

Yuklab olish kalitini yaratish uchun quyidagi amallarni bajaring:

  1. Android Developers saytidagi ko'rsatmalarga amal qiling. Kalitni xavfsiz joyda saqlang.
  2. Yuklash kaliti sertifikatini PEM formatida eksport qiling. Quyidagi argumentlarni pastki chiziq bilan almashtiring:
    • $ keytool -export -rfc -keystore upload-keystore.jks -taxallus yuklash -fayl upload_certificate.pem
  3. Sertifikatni chiqarish jarayonida soʻralsa, uni Google’da roʻyxatdan oʻtkazish uchun uni yuklab oling.

Agar siz yuklab olish kalitidan foydalansangiz:

  • Yuklab olish kaliti Google’da faqat ilova yaratuvchisining shaxsini tasdiqlash uchun ro‘yxatdan o‘tgan.
  • Imzongiz barcha APK yuklab olishlardan foydalanuvchilarga yetib borguncha olib tashlanadi.
Cheklovlar
  • Yuklab olish kaliti RSA shifrlashdan foydalanishi va hajmi kamida 2048 bit bo'lishi kerak.
  • DSA va EC kalitlari qo'llab-quvvatlanmaydi, shuningdek RSA kalitlari hajmi 2048 bitdan kam.
Kalit do'konlari yangilanmoqda

Yuklab olish kalitini yaratganingizdan so'ng, agar kerak bo'lsa, quyidagi joylarni tekshiring va yangilang:

  • mahalliy tizim;
  • xavfsiz mahalliy server (turli xil kirishni boshqarish ro'yxati bilan);
  • bulut tizimi (turli xil kirishni boshqarish ro'yxati bilan);
  • maxsus kalitlarni boshqarish xizmatlari;
  • Git omborlari.

Yangi ilovalarni o'rnatish uchun imzo kalitini qanday yangilash kerak

Ba'zi hollarda siz ilovani imzolash kalitini yangilashni so'rashingiz mumkin. Yangi kalit ilovaning yangi o'rnatishlari va yangilanishlarini imzolash uchun ishlatiladi, eskirgan esa foydalanuvchilar tomonidan allaqachon o'rnatilgan imzolangan versiyalarni yangilash uchun ishlatiladi.

Imzolash kaliti har bir ilova uchun faqat bir marta yangilanishi mumkin. Agar bir nechta ilovalarni bir xil jarayonda ishga tushirish uchun bitta imzo kalitidan foydalansangiz, kalitni yangilab bo‘lmaydi.

Quyidagi hollarda ilovani imzolash kalitini yangilashni talab qilishingiz kerak:

  • Sizga xavfsizroq kalit kerak.
  • Ilovani imzolash kaliti buzilgan.

Eslatma. Play Console’da ilovaga imzo qo‘yish kalitini yangilash so‘rovi Android P va keyingi versiyalarida kalitlarni almashtirish bilan bog‘liq emas. Ushbu kalitni almashtirish hozirda Google Play tomonidan qo'llab-quvvatlanmaydi.

Kalitlarni yangilash haqida muhim eslatmalar

Kalit yangilanishini talab qilishdan oldin, bu qanday o'zgarishlarga olib kelishini tushunish muhimdir.

  • Agar bir nechta ilovalar bir xil kod yoki maʼlumotlardan foydalanishi uchun bir xil imzo kalitidan foydalansangiz, yangi va eski kalitlarni tanib olish uchun ilovalarni yangilashingiz kerak boʻladi.
  • Agar ilovangiz APIdan foydalansa, ilovangizni yangilashdan oldin yangi va eski ilova imzolash kalitlari uchun sertifikatlarni API provayderida roʻyxatdan oʻtkazganingizga ishonch hosil qiling. Sertifikatlar sahifada mavjud Ilovalarni imzolash Play Console.
  • Agar ilovangizning koʻplab foydalanuvchilari yangilanishlarni fayl almashish tarmoqlari orqali oʻrnatsa, ular faqat oʻz qurilmalarida oʻrnatilgan ilova bilan bir xil kalit bilan imzolangan yangilanishlarni oʻrnatishlari mumkin boʻladi. Agar ilovalarni yangilab bo'lmasa, chunki o'rnatilgan versiya boshqa kalit bilan imzolangan bo'lsa, foydalanuvchilar yangilanishlarni olish uchun uni o'chirishi va qayta o'rnatishi mumkin.
Yangi o'rnatishlar uchun asosiy yangilanishni so'rang. Buning uchun quyidagi amallarni bajaring:
  1. Play Console tizimiga kiring.
  2. Ilovani tanlang.
  3. Chapdagi menyudan tanlang Chiqarish boshqaruvi > Ariza imzolari.
  4. "Yangi ilovalarni o'rnatish uchun imzolash kalitini yangilash" kartasida tanlang Kalit yangilanishini talab qiling.
  5. Qurilma bilan nima qilishni tanlang.
    • Siz tanlagan variantga qarab, so'rovingizni bajarish uchun qo'llab-quvvatlash xizmatiga murojaat qilishingiz kerak bo'lishi mumkin.
  6. Google Play Play Marketga yangi ilova imzolash kalitini yaratishga ruxsat bering (tavsiya etiladi) yoki uni yuklab oling.
    • Ilovani imzolash kalitini yangilagandan so‘ng, agar kalit yuklab olish kalitingizga mos kelsa, siz eski ilova imzolash kalitidan yuklab olish kaliti sifatida foydalanishni davom ettirishingiz yoki yangisini yaratishingiz mumkin.
  • Agar siz oʻz ilovangizni Google Play’dan tashqarida ham nashr qilgan boʻlsangiz yoki buni rejalashtirmoqchi boʻlsangiz, Google Play ilovasini imzolash dasturiga roʻyxatdan oʻtganingizda umumiy ilova imzolash kalitini yaratishingiz va uni Google’ga yuklashingiz mumkin.
  • Hisobingizni himoya qilish uchun, ikki bosqichli tekshirishni yoqing Play Console-ga kirish huquqiga ega barcha hisoblar uchun.
  • Ilovalar to'plamini sinov yoki ishlab chiqarish versiyasiga nashr qilganingizdan so'ng, App Bundle brauzerini ochib, ma'lum bir qurilma uchun barcha APK fayllarni o'z ichiga olgan ZIP arxivini yuklab olishingiz mumkin. Bu APK fayllari allaqachon ilova imzolash kaliti bilan imzolangan. Yordamchi dastur yordamida ularni ZIP arxividan qurilmangizga o'rnatishingiz mumkin buyruq qatori bundletool.
  • Kattaroq xavfsizlik uchun ilovani imzolash kalitidan farqli yangi yuklab olish kalitini yarating.
  • Yuklash kaliti bilan imzolangan APK’ni sinab ko‘rmoqchi bo‘lsangiz, kalitni autentifikatsiya qilish uchun ilova imzosidan foydalanadigan xizmat yoki API bilan ro‘yxatdan o‘tkazing (masalan, API Google xaritalari yoki Facebook Developer Pack).
  • Agar siz Google API dan foydalanayotgan bo‘lsangiz, yuklash sertifikatingizni Google Cloud Console’da ro‘yxatdan o‘tkazishingiz mumkin.

Kalit yo'qolgan yoki buzilgan bo'lsa nima qilish kerak

Agar kirish huquqini yo'qotgan bo'lsangiz shaxsiy kalit yuklab olingan yoki u buzilgan va hisobingiz egasidan so'rang. Yordam xizmatiga murojaat qilganda, hisob egasi upload_certificate.pem faylini biriktirishi kerak.

Qo'llab-quvvatlash jamoasi yangi yuklab olish kalitini ro'yxatdan o'tkazganida, siz olasiz elektron pochta, va keyin siz kalit do'konlaringizni yangilashingiz va kalitingizni API provayderlarida ro'yxatdan o'tkazishingiz mumkin.

Muhim! Yuklab olish kalitini asl holatiga qaytarish ilovaga kirish kalitiga ta'sir qilmaydi, Google Play foydalanuvchilarga ularni yuborishdan oldin APK fayllarni imzolash uchun foydalanadi.

Ushbu ma'lumot foydali bo'ldimi?

Ushbu maqolani qanday yaxshilash mumkin?

Oldingi bo'limda tasvirlangan keytool yordam dasturi jarsigner vositasining parametrlaridan biri bo'lgan raqamli sertifikatni yaratadi. Yana bir parametr - imzolanishi kerak bo'lgan Android paketi. Android paketini yaratish uchun Eclipse uchun ADT modulidagi Imzosiz ilovalar paketini eksport qilish yordam dasturidan foydalanishingiz kerak. Ushbu yordamchi dasturga qo'ng'iroq qilish uchun siz Eclipse-da Android loyihasini sichqonchaning o'ng tugmasi bilan bosishingiz kerak, tanlang kontekst menyusi Android asboblari va keyin Imzosiz ilovalar paketini eksport qilish-ni tanlang. Ishga tushgandan so'ng, ushbu yordamchi dastur disk raskadrovka sertifikati bilan imzolanmagan .apk faylini yaratadi.

Buni sinab ko'rish uchun Android loyihalaringizdan birida Imzosiz ilovalar paketini eksport qilish yordam dasturini ishga tushiring va yaratilgan .apk faylini biror joyda saqlang. IN bu misolda biz avval yaratilgan kalit do'koni papkasidan foydalanamiz va C:\android\release\myappraw.apk nomli .apk faylini yaratamiz.

Endi bizda .apk fayli va kalit do'koni mavjud, biz .apk faylini imzolash uchun jarsigner vositasini ishga tushirishimiz mumkin (14.2-ga qarang). Bunday holda, kalit do'koni fayli va .apk fayli uchun to'liq yo'llar ko'rsatilishi kerak.

.apk faylini imzolash uchun jarsigner yordam dasturiga kalit doʻkonining joylashuvi, kalit doʻkonining paroli, parol yuboriladi. maxfiy kalit, .apk fayliga yo'l va kalit do'koni elementining taxalluslari. Keyin Jarsigner kalit do'konidagi raqamli sertifikat yordamida .apk fayliga imzo qo'yadi. Jarsigner yordam dasturini ishga tushirish uchun siz asboblar oynasini ochishingiz kerak (2-bobga qarang) yoki buyruq satri oynasini yoki terminal oynasini ochishingiz va katalogdagi bin papkasini ochishingiz kerak.

JDK (agar ushbu jild o'zgaruvchida ko'rsatilmagan bo'lsa PATH muhitlari). Xavfsizlik nuqtai nazaridan, parollarni buyruq argumentlari sifatida o'tkazmaslik yaxshiroqdir, bu holda jarsigner ish vaqtida parollarni so'raydi. Shaklda. 14.3-rasmda jarsigner yordam dasturini chaqirish misoli keltirilgan. Siz buni rasmda payqagan bo'lishingiz mumkin. 14.3 jarsigner yordam dasturi faqat bitta parolni so'raydi. Buning sababi, agar do'kon va kalit o'tish bir xil bo'lsa, kalit o'tish so'ralmaydi. To'g'rirog'i, e 14.2 da jarsigner buyrug'i faqat -keypass parolini -storepass parolidan farq qilganda ko'rsatishi kerak.

Yuqorida aytib o'tilganidek, zararli dasturchilar ilovangizni o'z versiyalari bilan almashtirishlariga yo'l qo'ymaslik uchun Android ilovangiz raqamli imzolangan bo'lishini talab qiladi. Buning uchun Android ilova yangilanishlarini asl ilova bilan bir xil imzo bilan imzolashni talab qiladi. Agar ilova boshqa imzo bilan imzolangan bo'lsa, Android ularni boshqa ilovalar deb hisoblaydi. Shuning uchun, yana bir bor eslatib o'tamiz: kalit do'koni faylini ehtiyotkorlik bilan ishlating, shunda u keyinchalik ilova yangilanishini chiqarishingiz kerak bo'lganda foydalanish mumkin bo'ladi.

Shunday qilib, siz ko'p kunlar (va ehtimol tunlar) ishladingiz va bu sizning birinchi gibridingiz mobil ilova tayyor. Bu juda barqaror, aksariyat muhim xatolar yopilgan. Kichkina qolganlari bor, lekin mukammallik yomon ekanligini eslab, siz arizani nashr etishga qat'iy qaror qabul qilasiz.

Buning zaruriy sharti - imzolangan APK faylining mavjudligi. Qanday imzolash kerak apk fayli, siz ushbu maqoladan bilib olasiz.

Kichkina dam olish

Mening uy hayvonlari haqidagi loyiham chiqarilish arafasida bo'lganida, men ilovani qanday tez va og'riqsiz chop etish haqida ma'lumot izlay boshladim. Topilgan ko'rsatmalarning aksariyati oddiy ko'rinardi. Men dastur ishlab chiqilgan Ionic ramka mualliflarining ko'rsatmalarini tanladim. Hamma narsa birinchi marta amalga oshmadi; bir nechta o'ziga xosliklar mavjud. Imzolash jarayoni ushbu maqolada tasvirlangan, muhim nuqtalar ayniqsa ta'kidlangan.

Dastlabki ma'lumotlar

O'ylaymanki, sizda Apache Cordova yordamida gibrid mobil ilovalarni ishlab chiqish uchun hamma narsa sozlangan. O'rnatish kerak:
  • Apache Kordova
  • Java rivojlantirish to'plami
  • Android SDK vositalari
Loyiha va ilova nomi lcf. Agar kerak bo'lsa, loyiha nomi bilan almashtiring.

Bor

Avval siz ilovangizning relizlar majmuasini yaratishingiz kerak. Ammo bundan oldin, keling, barcha keraksiz plaginlar o'chirilganligiga ishonch hosil qilaylik. Misol uchun, bizga disk raskadrovka ma'lumotlarini konsolga chiqaradigan plagin kerak emas. Keling, uni o'chirib tashlaymiz:

$ cordova plagin rm cordova-plagin-konsol
Android uchun versiyani yaratish uchun buyruqdan foydalaning qurmoq bayroq bilan --ozod qilish:

$ cordova build -- Android-ni chiqarish
Ushbu buyruq yaratiladi imzosiz Katalogdagi APK fayli:

Platformalar/android/build/outputs/apk
Masalan, platformalar/android/build/outputs/apk/ android-release-unsigned.apk. Keyin biz ushbu faylni imzolashimiz va yordamchi dasturni ishga tushirishimiz kerak zipalign faylni Google Play uchun optimallashtirish va tayyorlash.

Faylni imzolash uchun sizga sertifikat kerak. Keling, uni yordamchi dastur yordamida yarataylik kalit vositasi JDK ga kiritilgan:

$ keytool -genkey -v -keystore lcf.keystore -alias lcf -keyalg RSA -keysize 2048 -validity 10000
Muhim

-alias parametrining qiymatini eslab qolish yoki yaxshiroq yozib olish kerak. Yuqoridagi misolda u lcf ga teng (Loyal Client Free ilova nomining birinchi harflari asosida). Men bu erda batafsil ma'lumot bermayman, agar sizni qiziqtirsa, sharhlarda yozing, men sizga batafsilroq aytib beraman.

Taxallus har safar imzolaganingizda ishlatiladi * ilovalar. Eslab qolishni osonlashtirish uchun kalit do'koni fayli nomidan taxallus sifatida foydalaning, masalan:


-keystore hello-world.keystore -alias hello-world -keystore weather-app.keystore -taxallus ob-havo ilovasi -keystore todo.keystore -alias todo
* Har safar yangilanishlar chiqarilganda ilovaga imzo chekishingiz kerak

Qulaylik kalit vositasi qator savollar beradi. Ulardan jami 8 ta bo'ladi. Savollar va taxminiy javoblar haqida oldindan tasavvurga ega bo'lish uchun ularning barchasi quyida, spoyler ostida berilgan.

Keytool savollari va ularga namuna javoblar

1. Kalit do'koni parolini kiriting:
Bu erda fayl uchun parolni kiritishingiz kerak (kamida 6 belgi). Kiritilgan parol xavfsiz joyda yozilishi kerak, u har safar arizaga imzo qo'yganingizda kerak bo'ladi.

2. Yangi parolni qayta kiriting:
Parolingizni qayta kiriting.

3. Ismingiz va familiyangiz nima?
: Ivan Petrov
Sizning ismingiz va familiyangiz. Kvadrat qavs ichidagi qiymat standart qiymatdir.

4. Tashkiliy birligingiz qanday nomlanadi?
: IT
Kompaniyangiz bo'linmasining nomi. Siz uni bo'sh qoldirishingiz mumkin, men ITni ko'rsataman.

5. Tashkilotingiz qanday nomlanadi?
: 2 ishlab chiquvchilar
Tashkilotingiz nomi. Agar mavjud bo'lsa, ko'rsating.

6. Shaharingiz yoki tumaningiz nomi nima?
: Moskva
Shahar nomi

7. Shtatingiz yoki viloyatingiz qanday nomlanadi?
: M.O.
Hudud nomi

8. Ushbu birlik uchun ikki harfli mamlakat kodi qanday?
: RU
Mamlakat kodi. Men RU ni ko'rsataman.

: y

Hammasi to'g'ri yoki yo'qligini tasdiqlang yoki yana kirish uchun Enter tugmasini bosing.


Oxirida kalitni muvaffaqiyatli ishlab chiqarishni ko'rsatadigan xabar paydo bo'ladi. Sizdan shaxsiy kalit uchun parol o'rnatish so'raladi (agar siz uni sertifikat bilan bir xil qoldirishni istasangiz, Enter tugmasini bosing):

2 048 bitli RSA kalit juftligi va o'z-o'zidan imzolangan sertifikat (SHA256withRSA) uchun 10 000 kunlik amal qilish muddati: CN=Ivan Petrov, OU=IT, O=2developers, L=Moskva, ST=MO, C=RU Enter kaliti yaratilmoqda uchun parol (Agar kalit do'koni paroli bilan bir xil bo'lsa, RETURN):
Joriy katalogda fayl yaratiladi lcf.keystore.

Muhim

Yaratilgan fayl xavfsiz joyda saqlanishi kerak. Agar siz shaxsiy ombordan foydalanayotgan bo'lsangiz, u holda fayl bilan birga topshirilishi mumkin manba kodlari ilovalar. Umuman olganda, sertifikatlarni alohida saqlash yaxshiroqdir. Sertifikatni yo'qotib qo'ysangiz, ilova yangilanishlarini chiqara olmaysiz.

Ikki qadam qoldi va siz tarqatish uchun tayyor APK faylga ega bo'lasiz. Keling, imzolashga o'tamiz.

Apk faylingizni imzolash uchun yordamchi dasturdan foydalaning jarsigner, bu ham JDK ga kiritilgan.

$ jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore lcf.keystore android-release-unsigned.apk lcf
Sertifikat nomi parametrdan keyin ko'rsatiladi - kalit do'koni, taxallus - fayl nomidan keyin.

Va nihoyat, apk faylini optimallashtirish uchun biz yordamchi dasturdan foydalanamiz zipalign:

$ zipalign -v 4 android-release-unsigned.apk LoyalClientFree.apk
Oxirgi parametr - siz Google Play-ga yuklaydigan fayl nomi.

Muhim.

Qulaylik zipalign u Android SDK Tools tarkibiga kiradi va uni bu yerda topish mumkin:

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

Xulosa

Endi sizda tarqatishga tayyor apk fayli bor, uni Google Play-ga yuklash mumkin. Tavsifni to'ldiring, arizangiz reytingini aniqlang va "Nashr etish" tugmasini bosing.

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 sinov, lekin olish to'liq versiya hech qanday imkoniyat 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

Plastik sumka Android ilovalari, aslida, oddiy ZIP fayl bo'lib, tarkibni ko'rish va uni chiqarib olish uchun maxsus vositalar talab qilinmaydi. Arxivatorga 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/ - ilova o'z ishida foydalanadigan turli resurslar, masalan, tasvirlar, interfeysning deklarativ tavsifi, shuningdek, boshqa ma'lumotlar;
  • AndroidManifest.xml- ilova tavsifi. Bunga, masalan, kerakli ruxsatlar ro'yxati, kerakli Android versiyasi va kerakli ekran o'lchamlari kiradi;
  • classes.dex- uchun kompilyatsiya qilingan dastur bayt-kodi virtual mashina Dalvik;
  • 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.

Ushbu katalogdan C/C++ da yozilgan o'yin mexanizmini joylashtirgan o'yin ishlab chiqaruvchilari, shuningdek, yuqori unumli dasturlarni yaratuvchilar (masalan, Gugl xrom). 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; foydalanishni afzal ko'ramiz individual ilovalar, shuning uchun biz Real APK Leecher-dan foydalanishni tasvirlab beramiz, ayniqsa u Java-da yozilgan 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'rmoqchi bo'lganingizda, fayl matn emasligini bilib hayron qoldingiz. Uni qanday dekompilyatsiya qilish va umuman paketlar bilan qanday ishlash kerak? SDK ni o'rnatish haqiqatan ham 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 ushbu 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 bir necha marta bosish orqali ochish, qismlarga ajratish 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.

apktool-dan foydalanish juda oddiy, buning uchun 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 u raqamli imzo va fayl nazorat summasiga ega emas (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.

Faqat raqamli imzo talab qilinadi uchinchi tomon dasturiy ta'minoti, shuning uchun agar siz modifikatsiya qilsangiz tizim ilovalari, ular /system/app/ katalogiga nusxa ko'chirish orqali o'rnatiladi, 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 (org faqat ochiq grafik kutubxonasini o'z ichiga oladi 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 sinfi bo'lib, 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 etib, qo'shni zarralar katalogiga, so'ngra virtual mash'alaga 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 dagi asosiy funktsiyaga 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, yozilgan ilovalarni o'zgartirish kabi ko'plab muammolar sahna ortida qoldi. Android yordamida NDK. Biroq, asosiy bilimga ega bo'lish, barchasini tushunish uchun vaqt masalasidir.

Ko'rishlar soni: 5 618

Android Studio ilovalarni ishlab chiqish uchun ham, dasturlashda avtomatlashtirish va qulaylikni oshirish uchun ham keng imkoniyatlar yaratadi.

Agar siz qurilish tizimidan foydalansangiz Gradle ilovalaringizni yaratish uchun siz ilovalaringiz uchun imzo yaratish uchun bir nechta opsiyalarni ham sozlashingiz mumkin.

Imzolash kalitlari, parollar va foydalanuvchi nomlaringizni umumiy (yoki hatto shaxsiy) omborga nashr qilishni xohlamasligingiz mumkin. Shuning uchun kalit, parol va foydalanuvchi nomini alohida fayldagi xususiyatlar sifatida belgilashingiz mumkin.

Ilovangizni imzolashni boshlashdan oldin gradle.properties faylida yangi xususiyat yaratishingiz kerak. Keling, unga qo'ng'iroq qilaylik Keys.repo va qiymat sifatida, kalit saqlanadigan papkaga yo'lni va keyinchalik xossalari bo'lgan faylni belgilang (masalan, C:/Users/UserName/.signing).

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

Keyin siz ushbu jildni yaratishingiz kerak yoki agar mavjud bo'lganini ko'rsatsangiz, uni oching. Unda fayl yaratishingiz kerak YourProjectName.properties, uning ichida kalitlar do'koniga yo'l, kalit taxallus va parol quyidagi shaklda xususiyatlar sifatida yoziladi.

RELEASE_STORE_FILE=/YourProjectName/KeyStoreName.jks RELEASE_STORE_PASS=******** RELEASE_ALIAS=Kalit taxallus RELEASE_KEY_PASS=******

Kalitlar omborini qanday yaratish mumkin?

Agar kalit do'koningiz bo'lmasa, Android Studio yordamida osongina yaratishingiz mumkin. Buning uchun menyu bandini tanlang Qurmoq -> Imzolangan APK yaratish.

Ko'rsatilgan oynada siz bosishingiz kerak Yangi yaratish... Natijada, kalitni saqlash joyini belgilashingiz mumkin bo'lgan oyna ochiladi (ushbu dars uchun darhol siz ko'rsatgan yo'lni tanlaganingiz ma'qul. YourProjectName.properties mulkda RELEASE_STORE_FILE), shuningdek, asosiy ma'lumotlar.

Keyin siz papka yaratishingiz kerak Loyihangizning nomi va uni u erga ko'chiring kerakli fayl asosiy do'konlar.

Endi siz to'g'ridan-to'g'ri imzolash jarayoniga o'tishingiz mumkin. Buning uchun loyihangizdagi faylni ochishingiz kerak build.gradle(ilova papkasida joylashgan). Uning ichida blokda android quyidagi kodni qo'shishingiz kerak.

SigningConfigs ( disk raskadrovka ( /* bu yerda oʻzgarishlar yoʻq */ ) chiqarish ( if (project.hasProperty("Keys.repo")) ( def projectPropsFile = file(project.property("Keys.repo") + "/YourProjectName.properties " ) agar (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 ​​rekvizitlari["RELEASE_ALIAS"] keyParol rekvizitlari["RELEASE_KEY_PASS"] ) ) else ( println "==================== = =================================================================================================================================================================“println” - Iltimos, chiqarish-kompilyatsiya muhitini sozlang - masalan ~/. imzolash katalogi" println "========================================== ================== ==========" )))

Imzo olishning turli sxemalari qanday?

APK imzosini olishning ikkita sxemasi mavjud: v1 JAR Va v2 To'liq APK.

Birinchi holda, u imzolanadi JAR-fayl, bu imzolashning an'anaviy usuli. v1 imzolanishi APKning baʼzi qismlarini, masalan, ZIP metamaʼlumotlarini himoya qilmaydi. APK tekshirgichi ko'plab ishonchsiz (hali tasdiqlanmagan) ma'lumotlar tuzilmalari bilan ishlashi va keyin imzolanmagan ma'lumotlarni o'chirib tashlashi va ko'plab hujum maydonini qoldirishi kerak. Bundan tashqari, APK tekshirgichi ko'p vaqt va xotirani behuda sarflaydigan barcha siqilgan yozuvlarni ochishi kerak. Ushbu muammolarni hal qilish uchun v2 Full APK ikkinchi sxemasi ishlab chiqilgan.

V2 sxemasi taqdim etilgan Android 7.0 Nougat (API 25) va versiyadan boshlab ishlaydi Android Studio 2.2 Va Android Gradle plagini 2.2. Ushbu sxema ko'proq narsani ta'minlaydi tez o'rnatish ilovalar va qarshi yaxshi himoya ruxsatsiz o'zgarishlar APK ichida. APK mazmuni xeshlanadi va imzolanadi, so'ngra hosil bo'ladi APK imzo bloki APK-ga kiritilgan.

Tekshiruv vaqtida v2 sxemasi APK-ni blok sifatida ko'radi va butun faylda imzo tekshiruvini amalga oshiradi. APK-ga kiritilgan har qanday o'zgartirishlar, jumladan ZIP meta-ma'lumotlariga kiritilgan o'zgartirishlar imzoni bekor qiladi. Tekshiruvning bu shakli ancha tezroq va ruxsatsiz o'zgartirishlarni aniqlay oladi.

Yangi format orqaga qarab mos keladi, shuning uchun yangi sxema bilan imzolangan APK'larni eski qurilmalarga o'rnatish mumkin (bu yangi imzoni e'tiborsiz qoldiradi), agar u APK'lar v1 sxemasi bilan imzolangan bo'lsa.

Odatiy bo'lib, imzolash ikkala sxemadan ham foydalanadi, shunda ilovalar har qanday qurilmaga o'rnatilishi mumkin. Biroq, agar bunday ehtiyoj mavjud bo'lsa, siz v1 yoki v2 imzosini o'chirib qo'yishingiz mumkin. Buning uchun blokdagi yuqoridagi kodda ozod qilish Quyidagi qatorlarni qo'shish kifoya.

V1SigningEnabled noto'g'ri

V2SigningEnabled noto'g'ri

Shuni ham ta'kidlash kerakki, v2 sxema bilan imzolashdan oldin v1 sxemasi bilan imzolash kerak, chunki APK v2 sxemasi bilan imzolangandan keyin qo'shimcha sertifikatlar bilan imzolangan bo'lsa, v2 sxema bo'yicha tekshiruvdan o'tmaydi.

Kod qo'shilgach, ushbu kodni blokga kiriting qurish turlari ichida ozod qilish. Masalan:

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

Endi siz xavfsiz menyu elementiga kirishingiz mumkin Qurmoq tanlang APK yaratish, oldindan yig'ish turini o'zgartirgan disk raskadrovka yoqilgan ozod qilish. Ko'rinib turganidek, bu usul qulay, chunki u avtomatik, siz uni faqat bir marta sozlashingiz kerak va kalitlarni saqlashingiz xavfsiz bo'lishi mumkin.



 


O'qing:



RAM vaqtlarini qanday qilib to'g'ri sozlash mumkin?

RAM vaqtlarini qanday qilib to'g'ri sozlash mumkin?

RAM chipsetning shimoliy ko'prigida joylashgan (Intel) yoki to'g'ridan-to'g'ri xotira tekshirgichining boshqaruv signallari asosida ishlaydi ...

Navitel-ni navigator va kompyuterga o'rnatish

Navitel-ni navigator va kompyuterga o'rnatish

Agar siz Garmin navigatoringizga xaritalarni o'rnatishingiz kerak bo'lsa, unda siz to'g'ri joyga keldingiz. Quyida biz buni amalga oshirishning bir necha usullarini ko'rib chiqamiz. Shunday qilib...

Minecraft serveridagi parolni shaxsiy hisobingiz va mijoz orqali o'zgartiring

Minecraft serveridagi parolni shaxsiy hisobingiz va mijoz orqali o'zgartiring

Minecraft o'yini mutlaqo har qanday o'yinchini qiziqtirishi mumkin, chunki unda siz o'zingizning shaxsiy ertakingizni yaratishingiz va...

Karnay kabeli nima

Karnay kabeli nima

Ovoz bilan professional ishda har xil turdagi uskunalarni almashtirishning asosiy tamoyillarini tushunish juda muhim, bu uni oson va tezroq qiladi...

tasma tasviri RSS