Shrinking, Obfuscation, Optimization va Resource Shrinking mexanizmlari
10-sinfAdvanced Android2-hafta · 5-darsAndroid ekotizimida R8 kompilyatorining o'rni va D8 bilan integratsiyalashgan tezkorligi
Code Shrinking (Tree Shaking), Resource Shrinking, Optimization va Obfuscation
build.gradleda optimallashtirishni yoqish va APK hajmini 40% gacha kamaytirish
Ilova hajmini kamaytirish va kodni kiberhujumlardan himoyalash
Katta kutubxonalar ulanishi natijasida APK hajmi 60–80 MB ga yetadi. Foydalanuvchilar katta ilovani yuklab olishni istamaydi.
Oddiy APK faylini dekompilyatsiya qilib, barcha server API manzillari va biznes mantiqni o'g'irlash juda oson.
Shrinking, Resource Shrinking, Optimization va Obfuscation
Loyihadagi foydalanilmagan sinflar, metodlar va o'zgaruvchilarni ildizidan tozalaydi.
Koddagi keraksiz qismlar o'chirilgach, ishlatilmay qolgan rasmlar va XML fayllarni ham chiqarib tashlaydi.
Kodni tahlil qilib, bo'sh if-else larni olib tashlaydi, funksiyalarni inline qiladi.
Klass, metod va maydon nomlarini qisqa tushunarsiz harflarga (a, b, c) aylantiradi.
minifyEnabled, shrinkResources va standart qoidalar
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles(
getDefaultProguardFile(
"proguard-android-optimize.txt"
),
"proguard-rules.pro"
)
}
}
shrinkResources true — faqat minifyEnabled true bilan ishlaydi.
proguard-android-optimize.txt — Google tomonidan taqdim etilgan universal optimallashtirish qoidalari.
proguard-rules.pro — Sizning loyihangizga xos maxsus qoidalar fayli.
Modul darajasidagi build.gradleda Release rejimida R8 ni yoqing.
Ishlatilmagan rasm va dizaynlarni tozalashni faollashtiring.
Android Studio menyusidan Release APK yoki AAB faylini yig'ing.
Build $\to$ Analyze APK orqali hajmni va DEX strukturasini ko'rib chiqing.
APK hajmi 2 barobar og'ir bo'ladi.
Kodni JADX orqali osongina o'qish mumkin.
Barcha keraksiz kutubxona kodlari paket ichida yotadi.
Hajm 40–50% ga qisqaradi.
Klasslar a, b, c qilib chalkashtirilgan, xavfsizlik yuqori.
Faqat foydalanilgan kodlar qoladi, ilova chaqqon ishlaydi.
app/build.gradleda minifyEnabled true va shrinkResources true parametrlarini qo'shing.
Release APK yig'ib, APK Analyzer orqali classes.dex faylini oching va chalkashtirilgan klasslarni ko'ring.
R8 bir vaqtning o'zida ham APK hajmini kamaytiradi, ham biznes mantig'ini himoyalaydi.
Har bir professional ilova Google Play'ga chiqarilishidan avval to'liq R8 filtridan o'tishi shart.
Keyingi dars: ProGuard qoidalari (-keep) va xatoliklarni deobfuskatsiya qilish