App Size Optimization — funksionallikni yo'qotmasdan o'rnatish fayli (APK, AAB, IPA) hajmini kamaytirishga qaratilgan texnikalar majmui. Android Reduce APK Size Guide ma'lumotlariga ko'ra, har bir megabayt hajm kamayishi sekin internetli hududlarda o'rnatish konversiyasini 1–2% oshirishi mumkin. App Thinning — Apple-ning faqat ma'lum qurilmaga kerakli resurslarni yetkazib beruvchi asosiy texnologiyasi.
Asosiy fikrlar
App Size Optimization — ilovaning o'rnatish paketi hajmini minimallashtirishga qaratilgan mobil ilova ishlab chiqish intizomi. O'lik kod va resurslarni olib tashlash, tasvirlarni siqish, kutubxonalarni optimallashtirish, turli arxitekturalar uchun kompilyatsiyani fragmentatsiyalash va talab bo'yicha yetkazib berish texnologiyalaridan foydalanishni o'z ichiga oladi.
Ilova hajmi notekis ta'sir qiladi turli foydalanuvchi segmentlariga. Rivojlangan mobil infratuzilmali hududlarda (AQSh, Yevropa, Yaponiya) 50 va 100 MB o'rtasidagi farq sezilmas bo'lishi mumkin. Rivojlanayotgan hududlarda (Hindiston, Indoneziya, Braziliya) har bir qo'shimcha megabayt tarif cheklovlari va mobil internet tezligi sababli o'rnatish konversiyasini kamaytiradi. Google Play APK hajmini 200 MB bilan cheklaydi, lekin hajmni 100 MB dan past ushlab turishni tavsiya qiladi.
iOS App Store uchun mobil tarmoq orqali yuklashning maksimal hajmi 200 MB (2023 yilgacha 150 MB edi). IPA bu chegaradan oshsa, foydalanuvchi ilovani faqat Wi-Fi orqali o'rnatishi mumkin. Apple shuningdek App Thinning-ni qo'llab-quvvatlaydi, unga Slicing, Bitcode va On-Demand Resources kiradi — dasturchi ishtirokisiz ma'lum qurilmada o'rnatish hajmini avtomatik kamaytiradigan texnologiyalar.
Ilova hajmi nafaqat o'rnatish konversiyasiga, balki retention-ga, yangilanish chastotasiga va birinchi ishga tushirish tezligiga ta'sir qiladi. Har bir qo'shimcha megabayt foydalanuvchi bilan mahsulotingiz o'rtasidagi to'siqdir.
Google I/O 2024 ma'lumotlariga ko'ra, APK ni 10 MB kamaytirish o'rnatish konversiyasini o'rtacha 3,5% oshiradi. 150+ MB hajmdagi ilovalar uchun konversiya 50 MB hajmdagi bir sinf ilovalariga nisbatan 20–30% past bo'lishi mumkin. Effekt ayniqsa Google Play-da sezilarli, bu yerda foydalanuvchi o'rnatishdan oldin hajmni ko'radi. App Store-da hajm ilova sahifasida ko'rsatiladi va cheklangan tarifli foydalanuvchilar o'rnatishni kechiktiradilar Wi-Fi gacha, keyin esa ko'pincha ilovani unutadilar.
Katta ilova havo orqali kamroq yangilanadi — foydalanuvchilar yamalarni yuklashni Wi-Fi gacha kechiktiradilar, muhim xavfsizlik tuzatishlarini o'tkazib yuboradilar. Google Play Incremental Updates (10 MB gacha yamalar) dan foydalanishga imkon beradi, ammo to'liq qayta o'rnatish baribir butun APK yoki AAB ni yuklaydi. Apple App Store Delta Updates dan foydalanadi, faqat o'zgartirilgan fayllarni uzatadi, lekin hatto delta resurslar o'zgarganda sezilarli bo'lishi mumkin.
Hajm to'g'ridan-to'g'ri birinchi ishga tushirish vaqtiga ta'sir qiladi: ilova resurslarni ochishi, kodni kompilyatsiya qilishi (Android) yoki keshni imzolashi kerak (iOS). 200 MB hajmdagi ilova o'rtacha qurilmada 50 MB hajmdagi ilovadan 10–15 soniya kechroq ishga tushishi mumkin. Bu Onboarding Experience ni yomonlashtiradi — foydalanuvchi yuklanishni kutmasdan ilovani yopishi mumkin.
| Hajm | Yuklash vaqti (3G) | Birinchi ishga tushirish vaqti |
|---|---|---|
| 30 MB | –20 son | 3–5 son |
| 100 MB | –70 son | 5–8 son |
| 200 MB | –140 son | 10–15 son |
Resurslar — tasvirlar, shriftlar, tovushlar, video — odatdagi mobil ilova hajmining 60–80% ini tashkil qiladi. Resurslarni optimallashtirish minimal mehnat bilan eng katta foyda beradi. Asosiy yo'nalishlar: siqish, dublikatlar va foydalanilmayotgan aktivlarni olib tashlash, to'g'ri formatlarni tanlash.
WebP — Google-dan tasvir formati, bir xil vizual sifatda PNG dan 25–35% va JPEG dan 15–20% yaxshiroq siqishni ta'minlaydi. Android WebP ni API 18 dan boshlab mahalliy qo'llab-quvvatlaydi. iOS uchun WebP SDWebImage yoki Kingfisher kutubxonasi orqali qo'llab-quvvatlanadi va iOS 17 dan mahalliy qo'llab-quvvatlash paydo bo'ldi. AVIF — zamonaviyroq format, WebP ga nisbatan qo'shimcha 10–15% tejash beradi, lekin sekinroq dekodlash bilan.
Foydalanilmayotgan resurslarni olib tashlash — hajmni kamaytirishning eng oddiy usuli. Android da Android Studio bilan refaktoringdan foydalaning: Analyze → Run Inspection → Unused Resources. iOS da — Build Settings → Remove Unused Resources. Ko'pincha loyihalarda oldingi versiyalardan qolgan spritelar, eski ikonkalar, foydalanilmayotgan boshlang'ich ekran tasvirlari qoladi, ular shishiradi hajmni hech qanday funksional yuklamasiz.
| Format | PNG ga nisbatan siqish | Qo'llab-quvvatlash |
|---|---|---|
| PNG | — | Barcha platformalar |
| WebP | 25–35% | Android mahalliy, iOS kutubxonalar orqali |
| AVIF | 35–45% | Android 12+, iOS 17+ |
| JPEG XR | 30–40% | Faqat Windows |
Maxsus shriftlar 5–15 MB egallashi mumkin, ayniqsa butun oila ulangan bo'lsa (barcha uslublar: Regular, Bold, Italic, BoldItalic). Faqat kerakli uslublar va belgilar kichik to'plamlaridan subsetting orqali foydalaning — ilova tomonidan qo'llab-quvvatlanmaydigan tillar uchun gliflarni olib tashlash. Google Fonts va Transfonter kabi xizmatlar minimal belgilar to'plamini yaratishga imkon beradi. Tovushlar uchun WAV va siqilmagan formatlar o'rniga AAC/HE-AAC dan foydalaning — sifat yo'qotmasdan 90% gacha tejash.
Kod ilova hajmining 20–40% ini tashkil qiladi, lekin uni optimallashtirish resurslardan qiyinroq, chunki bog'liqliklarni tahlil qilish, obfuskatsiya va funksionallikni buzish xavfisiz o'lik kodni olib tashlashni talab qiladi.
ProGuard — Android uchun kod obfuskatsiyasi, minifikatsiyasi va optimallashtirishni amalga oshiradigan vosita. R8 — uning vorisi, Android Gradle Plugin tarkibida, tezroq va samaraliroq ishlaydi. R8 foydalanilmayotgan sinflar va metodlarni olib tashlaydi, o'zgaruvchi nomlarini qisqartiradi va ko'rsatmalar sonini kamaytirish uchun kodni qayta yozadi. R8 bilan DEX fayllarining odatdagi hajm kamayishi 30–50% ni tashkil qiladi.
// build.gradle — R8 ni minifikatsiya uchun sozlash
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt')
shrinkResources true
}
}
}
Kutubxonalar — shishgan hajmning keng tarqalgan sababi. Bitta kutubxona ilova uchun bevosita foydasiz hajmni 5–20 MB oshiradigan tranzitiv bog'liqliklarni tortib olishi mumkin. Android uchun Gradle Version Catalog va iOS uchun Swift Package Manager dan bog'liqliklarni aniq ko'rsatib foydalaning. Android Studio da Build Analyzer yoki Xcode Build Timeline bilan hajmni tahlil qiling. Og'ir kutubxonalarni engilroq alternativlar bilan almashtiring: masalan, OkHttp (3 MB) Apache HTTP (15 MB) o'rniga.
Dead Code Stripping — Xcode da bog'lash bosqichida foydalanilmayotgan metodlar va sinflarni avtomatik olib tashlash. Build Settings → Dead Code Stripping = YES orqali yoqiladi. Bitcode — Apple turli arxitekturalar uchun qayta kompilyatsiya qilishi mumkin bo'lgan, foydalanilmayotgan funksiyalarni olib tashlaydigan oraliq tasvir. Biroq Xcode 14 dan Bitcode ixtiyoriy bo'ldi va uning hajm kamayishiga qo'shgan hissasi Objective-C loyihalari uchun 5–15%, Swift uchun esa kamroq.
App Thinning — Apple-ning o'rnatilgan ilova hajmini faqat ma'lum qurilmaga kerakli resurslarni yetkazib berish orqali avtomatik kamaytiradigan texnologiyasi. Uch komponentdan iborat: Slicing, On-Demand Resources va Bitcode. Android da analog Dynamic Delivery bilan Android App Bundle (AAB) hisoblanadi.
AAB — Google Play da nashr formati, bunda do'kon har bir qurilma uchun faqat uning arxitekturasi (armeabi-v7a, arm64-v8a), ekran zichligi (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) va tillari uchun resurslarni kiritib APK yaratadi. Universal APK dan AAB ga o'tishda o'rnatish hajmining odatdagi kamayishi 20–40% ni tashkil qiladi. Play Feature Delivery modullarni talab bo'yicha yuklashga imkon beradi, Install-time modullari esa asosiy o'rnatishga kiritiladi.
// build.gradle — AAB va Dynamic Features sozlamasi
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
On-Demand Resources (ODR) — iOS mexanizmi, bunda resurslar (o'yin darajalari, yuqori aniqlikdagi tasvirlar, video) Apple serverlaridan faqat foydalanuvchiga haqiqatan kerak bo'lganda yuklanadi. Dastlabki o'rnatish hajmi 50–80% kamaytirilishi mumkin. Resurslar uch toifaga bo'linadi: Initial Install Tags (o'rnatish vaqtida yuklanadi), Prefetched Tag Order (o'rnatishdan keyin fonda yuklanadi) va On-Demand (faqat so'rov bo'yicha yuklanadi). Apple ODR dan tarkib uchun foydalanishni tavsiya qiladi, birinchi ekranda kerak bo'lmagan: o'yin darajalari, qo'shimcha tarkib, video ko'rsatmalar.
SwiftUI ODR ni Bundle.module atributi orqali, UIKit esa NSBundleResourceRequest orqali qo'llab-quvvatlaydi. Unity va Unreal Engine o'yinlari uchun ODR mahalliy darajada integratsiyalanadi. Asosiy cheklov — ODR resurslari joy yetishmasligida tizim tomonidan o'chiriladi, shuning uchun ish uchun muhim ma'lumotlar asosiy kompilyatsiyaga kiritilishi kerak.
Tez-tez beriladigan savollar
50 MB dan kam — maksimal o'rnatish konversiyasi uchun ideal hajm. 50–100 MB — ko'pchilik ilovalar uchun maqbul. 100 MB dan yuqori — hajm bilan asoslash talab qilinadi (o'yinlar, oflayn xaritalar, tarkib muharrirlari).
Resurslar kamroq vaqtda ko'proq foyda beradi. Foydalanilmayotgan aktivlarni olib tashlash, PNG ni WebP ga aylantirish va tovushlarni siqish bilan boshlang. Keyin R8 yoki Dead Code Stripping orqali kod optimallashtirishga o'ting.
Google Play APK yaratadi faqat ma'lum qurilma uchun: arm64-v8a kodi, xhdpi resurslari, kerakli til. Universal APK barcha variantlarni bir vaqtda o'z ichiga oladi, bu hajmni 1,5–2 barobar oshiradi. AAB bu muammoni do'kon darajasida hal qiladi.
Bilvosita. Katta hajm JIT/AOT kompilyatsiyasi uchun ko'proq kod, xotiraga yuklash uchun ko'proq resurslar va manifestlarni tahlil qilish uchun ko'proq vaqt degani. Biroq ish vaqti unumdorligiga to'g'ridan-to'g'ri ta'sir minimal — hajm o'rnatish va birinchi ishga tushirishga ta'sir qiladi.
Install-time — asosiy o'rnatishning qismi, darhol mavjud. On-Demand — birinchi murojaatda yuklanadi, dastlabki o'rnatishga kirmaydi. On-Demand dan 20% dan kam foydalanuvchiga kerak bo'lgan funksiyalar uchun foydalaning: diagnostika, darsliklar, AR filtrlari.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.