App Size Optimization — ansamblul de tehnici menite să reducă dimensiunea fișierului de instalare (APK, AAB, IPA) fără a pierde funcționalitatea. Potrivit Android Reduce APK Size Guide, fiecare megabyte de reducere poate crește conversia instalărilor cu 1–2% în regiunile cu internet lent. App Thinning — tehnologia cheie Apple care livrează doar resursele necesare unui anumit dispozitiv.
Principalele puncte
App Size Optimization — disciplina de dezvoltare a aplicațiilor mobile care vizează minimizarea dimensiunii pachetului de instalare a aplicației. Include eliminarea codului și resurselor moarte, comprimarea imaginilor, optimizarea bibliotecilor, fragmentarea compilării pentru diferite arhitecturi și utilizarea tehnologiilor de livrare la cerere.
Dimensiunea aplicației influențează inegal diferite segmente de utilizatori. În regiunile cu infrastructură mobilă dezvoltată (SUA, Europa, Japonia), diferența între 50 și 100 MB poate fi imperceptibilă. În regiunile în curs de dezvoltare (India, Indonezia, Brazilia), fiecare megabyte suplimentar reduce conversia instalărilor din cauza limitelor tarifelor și vitezei internetului mobil. Google Play limitează dimensiunea APK la 200 MB, dar recomandă menținerea dimensiunii sub 100 MB.
Pentru iOS App Store, dimensiunea maximă de descărcare prin rețeaua celulară este de 200 MB (până în 2023 era 150 MB). Dacă IPA depășește această limită, utilizatorul poate instala aplicația doar prin Wi-Fi. Apple suportă, de asemenea, App Thinning, care include Slicing, Bitcode și On-Demand Resources — tehnologii care reduc automat dimensiunea instalării pe un dispozitiv specific fără implicarea dezvoltatorului.
Dimensiunea aplicației influențează nu doar conversia instalărilor, ci și retenția, frecvența actualizărilor și viteza primei lansări. Fiecare megabyte suplimentar reprezintă o barieră între utilizator și utilizarea produsului tău.
Conform datelor Google I/O 2024, reducerea APK cu 10 MB crește conversia instalărilor în medie cu 3,5%. Pentru aplicațiile de 150+ MB, conversia poate fi cu 20–30% mai mică decât pentru aplicațiile aceleiași clase de 50 MB. Efectul este deosebit de pronunțat în Google Play, unde utilizatorul vede dimensiunea înainte de instalare. În App Store, dimensiunea este afișată pe pagina aplicației, iar utilizatorii cu tarif limitat amână instalarea până la Wi-Fi, după care deseori uită de aplicație.
O aplicație mare se actualizează mai rar prin aer — utilizatorii amână descărcarea patch-urilor până la Wi-Fi, ratând corecțiile critice de securitate. Google Play permite utilizarea Incremental Updates (patch-uri de până la 10 MB), dar reinstalarea completă descarcă totuși întregul APK sau AAB. Apple App Store utilizează Delta Updates, transmițând doar fișierele modificate, dar chiar și delta poate fi semnificativă la modificarea resurselor.
Dimensiunea influențează direct timpul primei lansări: aplicația trebuie să despacheteze resursele, să compileze codul (Android) sau să semneze cache-ul (iOS). O aplicație de 200 MB poate porni cu 10–15 secunde mai lent decât o aplicație de 50 MB pe un dispozitiv mediu. Acest lucru înrăutățește Onboarding Experience — utilizatorul poate închide aplicația fără a aștepta încărcarea.
| Dimensiune | Timp de descărcare (3G) | Timp prima lansare |
|---|---|---|
| 30 MB | –20 sec | 3–5 sec |
| 100 MB | –70 sec | 5–8 sec |
| 200 MB | –140 sec | 10–15 sec |
Resursele — imagini, fonturi, sunete, video — constituie 60–80% din dimensiunea unei aplicații mobile tipice. Optimizarea resurselor oferă cel mai mare câștig cu un efort minim. Direcțiile principale: comprimarea, eliminarea duplicatelor și activelor neutilizate, alegerea formatelor corecte.
WebP — formatul de imagini de la Google, care asigură o compresie cu 25–35% mai bună decât PNG și cu 15–20% mai bună decât JPEG la aceeași calitate vizuală. Android suportă WebP nativ de la API 18. Pentru iOS, WebP este suportat prin biblioteca SDWebImage sau Kingfisher, iar din iOS 17 a apărut suportul nativ. AVIF — un format mai modern, care oferă o economie suplimentară de 10–15% față de WebP, dar cu decodificare mai lentă.
Eliminarea resurselor neutilizate — cel mai simplu mod de a reduce dimensiunea. În Android, folosiți refactorizarea cu Android Studio: Analyze → Run Inspection → Unused Resources. În iOS — Build Settings → Remove Unused Resources. Adesea în proiecte rămân sprite-uri din versiunile anterioare, icoane vechi, imagini de ecran de pornire neutilizate care umflă dimensiunea fără nicio sarcină funcțională.
| Format | Compresie față de PNG | Suport |
|---|---|---|
| PNG | — | Toate platformele |
| WebP | 25–35% | Android nativ, iOS prin biblioteci |
| AVIF | 35–45% | Android 12+, iOS 17+ |
| JPEG XR | 30–40% | Doar Windows |
Fonturile personalizate pot ocupa 5–15 MB, mai ales dacă este conectată întreaga familie (toate stilurile: Regular, Bold, Italic, BoldItalic). Utilizați doar stilurile necesare și subseturile de caractere prin subsetting — eliminarea glifelor pentru limbile care nu sunt suportate de aplicație. Servicii precum Google Fonts și Transfonter permit crearea unui set minim de caractere. Pentru sunete, utilizați AAC/HE-AAC în loc de WAV și formate necomprimate — economie de până la 90% fără pierdere de calitate.
Codul reprezintă 20–40% din dimensiunea aplicației, dar optimizarea sa este mai dificilă decât a resurselor, deoarece necesită analiza dependențelor, ofuscarea și eliminarea codului mort fără riscul de a strica funcționalitatea.
ProGuard — instrument pentru Android care efectuează ofuscarea, minificarea și optimizarea codului. R8 — succesorul său, încorporat în Android Gradle Plugin, funcționează mai rapid și mai eficient. R8 elimină clasele și metodele neutilizate, scurtează numele variabilelor și rescrie codul pentru a reduce numărul de instrucțiuni. Reducerea tipică a dimensiunii fișierelor DEX cu R8 este de 30–50%.
// build.gradle — configurarea R8 pentru minificare
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt')
shrinkResources true
}
}
}
Bibliotecile — o cauză frecventă a dimensiunii umflate. O singură bibliotecă poate trage dependențe tranzitive care măresc dimensiunea cu 5–20 MB fără un beneficiu direct pentru aplicație. Utilizați Gradle Version Catalog pentru Android și Swift Package Manager pentru iOS cu specificarea explicită a dependențelor. Analizați dimensiunea cu Build Analyzer în Android Studio sau Xcode Build Timeline. Înlocuiți bibliotecile grele cu alternative mai ușoare: de exemplu, OkHttp (3 MB) în loc de Apache HTTP (15 MB).
Dead Code Stripping — eliminarea automată a metodelor și claselor neutilizate în etapa de linkare în Xcode. Se activează prin Build Settings → Dead Code Stripping = YES. Bitcode — reprezentare intermediară pe care Apple o poate recompila pentru diferite arhitecturi, eliminând funcțiile neutilizate. Totuși, din Xcode 14, Bitcode a devenit opțional, iar contribuția sa la reducerea dimensiunii este de 5–15% pentru proiectele Objective-C și mai puțin pentru Swift.
App Thinning — tehnologia Apple care reduce automat dimensiunea aplicației instalate prin livrarea doar a resurselor necesare unui anumit dispozitiv. Constă din trei componente: Slicing, On-Demand Resources și Bitcode. În Android, analogul este Android App Bundle (AAB) cu Dynamic Delivery.
AAB — formatul de publicare în Google Play, în care magazinul generează APK pentru fiecare dispozitiv separat, incluzând doar resursele pentru arhitectura sa (armeabi-v7a, arm64-v8a), densitatea ecranului (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) și limbi. Reducerea tipică a dimensiunii instalării la trecerea de la APK universal la AAB este de 20–40%. Play Feature Delivery permite descărcarea modulelor la cerere, iar modulele Install-time sunt incluse în instalarea de bază.
// build.gradle — configurarea AAB și Dynamic Features
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
On-Demand Resources (ODR) — mecanism iOS prin care resursele (niveluri de joc, imagini de înaltă rezoluție, video) sunt descărcate de pe serverele Apple doar atunci când sunt cu adevărat necesare utilizatorului. Dimensiunea instalării inițiale poate fi redusă cu 50–80%. Resursele se împart în trei categorii: Initial Install Tags (descărcate la instalare), Prefetched Tag Order (descărcate în fundal după instalare) și On-Demand (descărcate doar la cerere). Apple recomandă utilizarea ODR pentru conținutul care nu este necesar pe primul ecran: niveluri de joc, conținut suplimentar, instrucțiuni video.
SwiftUI suportă ODR prin atributul Bundle.module, iar UIKit prin NSBundleResourceRequest. Pentru jocurile pe Unity și Unreal Engine, ODR este integrat la nivelul învelișului nativ. Principala limitare — resursele ODR sunt eliminate de sistem la lipsa de spațiu, prin urmare datele critice pentru funcționare trebuie incluse în compilarea principală.
Întrebări frecvente
Sub 50 MB — dimensiunea ideală pentru conversia maximă a instalărilor. 50–100 MB — acceptabil pentru majoritatea aplicațiilor. Peste 100 MB — necesită justificare prin dimensiune (jocuri, hărți offline, editoare de conținut).
Resursele oferă un câștig mai mare în mai puțin timp. Începeți cu eliminarea activelor neutilizate, conversia PNG în WebP și comprimarea sunetelor. Apoi treceți la optimizarea codului prin R8 sau Dead Code Stripping.
Google Play generează APK doar pentru dispozitivul specific: cod arm64-v8a, resurse xhdpi, limba necesară. APK universal conține toate variantele simultan, ceea ce mărește dimensiunea de 1,5–2 ori. AAB rezolvă această problemă la nivelul magazinului.
Indirect. O dimensiune mare înseamnă mai mult cod pentru compilarea JIT/AOT, mai multe resurse de încărcat în memorie și mai mult timp pentru parsarea manifestelor. Cu toate acestea, impactul direct asupra performanței în timpul execuției este minim — dimensiunea afectează instalarea și prima lansare.
Install-time — parte a instalării de bază, disponibilă imediat. On-Demand — se descarcă la prima solicitare, nu face parte din instalarea inițială. Utilizați On-Demand pentru funcțiile de care au nevoie mai puțin de 20% dintre utilizatori: diagnosticare, tutoriale, filtre AR.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și