بهینهسازی و مبهمسازی کد شما با استفاده از R8 یا ابزارهای جایگزین (مانند بهینهسازیهای سازگار با ProGuard یا پسپردازندههای ثانویه DEX) اندازه DEX برنامه شما را کاهش میدهد، عملکرد زمان اجرا را بهبود میبخشد و ردپای حافظه آن را به حداقل میرساند.
فایلهای DEX یا Dalvik Executable حاوی کد کامپایلشدهای هستند که برای اجرای برنامه شما استفاده میشوند. این کدها معمولاً شامل کد جاوا و کاتلین میشوند، برخلاف کد کامپایلشده ++C یا فایلهای .so .
اندازهگیری بهینهسازی کد R8 به صورت محلی
برای اندازهگیری حجم DEX فشردهنشدهی بستهی برنامهی خود به صورت محلی با استفاده از خط فرمان، دستور زیر را اجرا کنید:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
اگر برنامه شما با R8 بهینه میشود، میتوانید بهینهسازی، مبهمسازی و کوچکسازی بسته برنامه خود را با استفاده از R8 Configuration Analyzer اندازهگیری کنید. برای تعاریف دقیق کوچکسازی، بهینهسازی و مبهمسازی، به Use R8 Configuration Analyzer مراجعه کنید. گزارش R8 Configuration Analyzer همچنین در R8 Analyzer Skill گنجانده شده است.
برای بررسی فرادادههای پس از بهینهسازی که در بسته برنامه شما (برای نسخه AGP 8.10 یا بالاتر) تعبیه شده است، فایل r8.json استخراج کنید:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
مشکل را برطرف کنید
برای رفع امتیازهای پایین بهینهسازی کد DEX، توصیههای مبتنی بر سیستم ساخت و بهینهساز خود را بررسی کنید:
افزونهی گریدل اندروید و R8
برای بهبود امتیازات بهینهسازی کد R8 DEX خود، به راهنماییهای موجود در بخش «بهبود بهینهسازی R8» مراجعه کنید. همچنین میتوانید از مهارت R8 Analyzer برای دریافت راهنماییهای بیشتر در مورد بهینهسازی قوانین Keep برنامه خود استفاده کنید.
سیستمهای ساخت غیر R8 و پسپردازندههای DEX
اگر خط تولید شما از ابزارهای ساخت سفارشی یا پردازندههای ثانویه DEX استفاده میکند، مراحل زیر را برای بهبود بهینهسازی برنامه خود انجام دهید:
- بسته برنامه خود را در اندروید استودیو باز کنید و آن را در APK Analyzer مشاهده کنید.
- تمام فایلهای
.dexرا انتخاب کنید. - هنگام فعال کردن دکمهی «Deobfuscate names» (توجه: این کار مستلزم آپلود یک فایل
mapping.txtاست ) به فایلهایی که بزرگترین حجم را دارند، توجه ویژه داشته باشید. اگر متوجه شدید که برخی از این فایلها در حین مبهمسازی همچنان بزرگ باقی میمانند، احتمالاً تحت تأثیر قوانین keep در کل بسته قرار گرفتهاند. - در فایل
proguard-rules.pro،configuration.txtیا معادل آن برای optimizer خود (اگر از R8 استفاده نمیکنید) جستجو کنید و قوانین keep را که با بستههایی که مبهمسازی نمیشوند مطابقت دارند، جستجو کنید. برای مثال، اگرcom.foo.یک بسته بزرگ در dex شما است، به دنبال قوانین keep با فرمت-keep com.foo.**یا-keep com.foo.bar.**. - به خاطر داشته باشید که شناسایی قوانین مصرفکننده کتابخانه ممکن است به این سادگی نباشد. اگر مشکوک هستید که یک قانون مصرفکننده کتابخانه بر بهینهسازی تأثیر میگذارد، میتوانید با اضافه کردن آن به یک برنامه نمونه مستقل با استفاده از نسخه اخیر AGP و بررسی آن با R8 Configuration Analyzer، آن را به صورت محلی تأیید کنید.