Mavzu
Bugungi darsda biz mobil ilovamizni Google xizmatlari (Firebase va Google Cloud) bilan rasman bog'lashni o'rganamiz. Ilovaning "raqamli barmoq izi" (SHA-1) nima ekanini, maxfiy kalitlarni qanday himoyalashni hamda Play Market'dagi zamonaviy AAB formatining afzalliklarini tushunib olamiz.
Asosiy tushunchalar
- applicationId (Package Name) — ilovaning butun dunyoda (Google Play'da) yagona bo'lgan unikal nomi (masalan,
uz.edu.myapp). - SHA-1 barmoq izi — ilovangiz aynan sizning kompyuteringizda yaratilganini tasdiqlovchi 40 belgili xavfsizlik sertifikati xeshi.
- google-services.json — Firebase va Google xizmatlarini loyihaga bog'lovchi maxsus konfiguratsiya fayli.
- local.properties — maxfiy API kalitlari saqlanadigan va internetga (GitHub) yuklanmaydigan xavfsiz fayl.
- APK (Android Package Kit) — ilovaning barcha resurslarini o'zida jamlagan an'anaviy to'liq o'rnatish paketi.
- AAB (Android App Bundle) — Google Play'ga yuklanadigan, faqat foydalanuvchi telefoniga kerakli qismlarni uzatuvchi zamonaviy yengil format.
1. Ilova nomi: applicationId
Har bir mobil ilova dunyo bo'yicha yagona identifikatorga ega bo'lishi kerak. Bu identifikator teskari domen shaklida yoziladi:
uz.click.clickuzcom.payme.uzuz.maktab.kutubxona
Bu nom orqali operatsion tizim ilovaga alohida shaxsiy papka ajratadi va uning xavfsizligini ta'minlaydi. Ilova bir marta Google Play'da nashr qilinsa, uning applicationIdsini keyinchalik o'zgartirib bo'lmaydi!
2. Raqamli barmoq izi: SHA-1 nima va u qanday olinadi?
Ilovangiz Firebase yoki Google Maps xizmatlaridan foydalanishi uchun Google sizning shaxsingizni tasdiqlashi kerak. Buning uchun kompyuterdagi Keystore kalitining SHA-1 barmoq izi olinadi.
Android Studio ichidagi terminal oynasida quyidagi buyruq kiritiladi:
bash
./gradlew signingReportTerminalda bir necha soniya ichida quyidagicha natija chiqadi:
text
Variant: debug
Config: debug
Store: ~/.android/debug.keystore
SHA1: 4B:12:8A:99:32:DE:01:54:...
SHA-256: 7F:89:AB:41:...Ushbu SHA-1 kodini nusxalab, Firebase Console'ga kiritamiz. Shundan so'ng Google xizmatlari sizning ilovangizni rasman tan oladi.
3. google-services.json fayli bilan ishlash
Firebase Console loyihangizni ro'yxatdan o'tkazgach, sizga google-services.json nomli faylni yuklab olishni taklif qiladi.
- Bu faylda loyihaning identifikatori, API kalitlari va server manzillari saqlanadi.
- Qat'iy qoida: Ushbu fayl loyihaning
app/papkasi ichiga joylashtirilishi shart! (Loyiha ildiz papkasiga emas, balki aynanapp/papkasiga).
4. Xavfsizlik: API kalitlarni qayerda saqlaymiz?
Dasturchilar ko'pincha qimmatbaho API kalitlarini (masalan, Google Maps kalitini) to'g'ridan-to'g'ri kod ichida yozib qoldiradilar. Agar ushbu loyiha GitHub'ga yuklansa, avtomatlashtirilgan xaker botlari kalitni o'g'irlab oladi.
Professional yechim: local.properties
Barcha maxfiy kalitlar local.properties faylida saqlanadi:
properties
MAPS_API_KEY=AIzaSyB-namuna-kalit-12345Ushbu fayl .gitignore ro'yxatida bo'lgani sababli hech qachon GitHubga chiqmaydi va sizning hisobingiz xavfsiz qoladi.
5. APK va AAB formatlari
| Xususiyat | APK (Eski format) | AAB (Zamonaviy format) |
|---|---|---|
| Hajmi | Katta (50–80 MB) | 30–50% kichikroq (20–40 MB) |
| Tarkibi | Barcha protsessorlar kodi va barcha rasmlar | Faqat kerakli resurslar |
| Google Play talabi | Yangi ilovalar uchun cheklangan | Barcha yangi ilovalar uchun majburiy |
| Ishlash mexanizmi | Telefon keraksiz qismlarni ham yuklaydi | Dynamic Delivery: Telefonga moslab beriladi |
Amaliy topshiriqlar
Shaxsiy applicationId yarating
· oson
O'zingiz orzu qilgan mobil ilova uchun to'g'riapplicationIdyozing (masalan:uz.family.photogallery). Nega unda bo'sh joy bo'lishi mumkin emasligini tushuntiring.SHA-1 olish buyrug'ini yozing
· oson
Android Studio terminalida SHA-1 va SHA-256 barmoq izlarini chiqaruvchi Gradle buyrug'ini daftaringizga yozing.google-services.json qayerda turadi?
· oson
Ushbu fayl Android Studio loyihasining qaysi papkasi ichiga qo'yilishi shart?Nega AAB formati APK'dan afzal?
· o'rta
AAB formatining foydalanuvchilar va mobil internet trafigi uchun 2 ta asosiy afzalligini yozing.Dynamic Delivery qanday ishlaydi?
· o'rta
Google Play Store AAB faylidan foydalanib, har bir smartfonga qanday qilib moslashtirilgan yengil paket yuborishini tushuntiring.API kalit o'g'irlanishi oqibatlari
· o'rta
Agar dasturchi o'zining pullik Google Maps API kalitini ochiq kodda GitHubga yuklab yuborsa, qanday salbiy oqibatlar kelib chiqishi mumkin?local.properties faylining afzalligi
· o'rta
Nima sababdanlocal.propertiesfayli GitHub kabi versiya nazorati tizimlariga yuklanmaydi? Bu faylni qaysi mexanizm himoyalaydi?SHA-1 xavfsizlik tahlili
· qiyin
Nima uchun begona odam sizningapplicationIdnomingizni bilib olgan taqdirda ham, sizning nomingizdan Firebase'ga ulanolmaydi? SHA-1 bu yerda qanday to'siq bo'ladi?APK hajmini kamaytirish keysi
· qiyin
Bir dasturchining APK fayli 70 MB chiqdi. U ilovani AAB formatiga o'tkazganda hajmi 32 MB ga tushdi. Qolgan 38 MB qayerga ketdi? Qaysi resurslar tejaldi?Tadqiqotchi dasturchi
· bonus
Debug Keystore va Release Keystore o'rtasidagi farqni tadqiq qiling. Nima uchun Play Market'ga ilova yuklashda debug kalitidan foydalanish taqiqlanadi?
Bilasizmi?
- Google Play Store'da har kuni 100 milliondan ortiq ilova yuklab olinadi. AAB formatiga o'tilishi natijasida butun dunyo bo'yicha millionlab gigabayt internet trafigi va gigavattlab elektr energiyasi tejalmoqda!
google-services.jsonfayli ichida maxfiy parollar saqlanmaydi, lekin u ilovangizni aynan sizning Firebase ma'lumotlar bazangizga ulab beruvchi unikal ko'prikdir.
Dars xulosasi
- Har bir ilova
applicationIdnomli yagona identifikatorga va SHA-1 raqamli barmoq iziga ega. google-services.jsonfayli loyihaningapp/jildida saqlanadi va Google xizmatlarini faollashtiradi.- Maxfiy API kalitlarni
local.propertiesda saqlash — xavfsizlikning oltin qoidasidir. - AAB formati ilovalarni 30-50% ga ixchamlashtirib, zamonaviy standartga aylangan.
O'zingizni tekshiring
applicationIdqanday formatda yoziladi?- Terminalda SHA-1 olish uchun qanday buyruq kiritiladi?
google-services.jsonfayli loyihaning qaysi papkasiga joylashtiriladi?- Maxfiy API kalitlarni qayerda saqlash xavfsiz?
- AAB formati nima sababdan APK'dan yengilroq?
