بهینه سازی را تست و عیب یابی کنید

پس از فعال کردن بهینه‌سازی برنامه، بررسی کنید که آیا برنامه‌تان طبق برنامه کار می‌کند و پیکربندی R8 همان کاری را که انتظار دارید انجام می‌دهد. مراحل کلی به شرح زیر است:

  1. سفرهای کاربر مهم (CUJ) برنامه خود را آزمایش کنید: به عنوان مثال، مطمئن شوید که کاربران می توانند وارد سیستم شوند و کارهای مهم دیگر را انجام دهند.
  2. اندازه‌گیری دستاوردهای عملکرد با استفاده از معیارها: برنامه خود را قبل و بعد از فعال کردن بهینه‌سازی برنامه، معیار قرار دهید .

اگر مشکلی پیدا کردید، R8 ابزارهایی را برای کمک به عیب یابی ارائه می دهد. اگر نمی‌توانید مشکل R8 را حل کنید، یک اشکال را ثبت کنید .

نکات کلی

مشکلات مربوط به R8 اغلب برای برنامه شما منحصر به فرد است، اما در اینجا چند نکته کلی برای آسان کردن اشکال زدایی وجود دارد:

  • خاموش کردن موقت مبهم سازی: R8 کد را به عنوان بخشی از فرآیند بهینه سازی خود مبهم می کند. مبهم سازی معمولاً دلیل خطاها نیست، اما مبهم سازی خطاها را دشوارتر می کند. پرچم‌های ‑dontobfuscate و ‑dontoptimize را به فایل قوانین نگهداری اضافه کنید تا به شما کمک کند کدهای مشکل دار را به دقت شناسایی کنید.
  • بررسی انعکاس: اگر به استثنای عنصری مانند

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace .

    استثنا معمولاً به این معنی است که فیلد مورد نظر از طریق بازتاب استفاده می شود و شما باید یک قانون نگه داشتن اضافه کنید.

  • بررسی بایت کد: اکثر مشکلات R8 به بازرسی بایت کد نیاز دارند که می توانید با ابزارهایی مانند APK Analyzer انجام دهید.

بررسی کنید که کدام قوانین اعمال می شود

برای خروجی یک گزارش کامل از تمام قوانینی که R8 هنگام ساخت پروژه خود اعمال می کند، موارد زیر را در فایل proguard‑rules.pro ماژول برنامه خود قرار دهید:

-printconfiguration <output-dir>/<report-name>.txt

شما می توانید هر مسیر و نام فایل را مشخص کنید. اگر مسیر یا نام فایلی را مشخص نکنید، R8 گزارش قوانین را در <module-name>/build/outputs/mapping/<build-type>/configuration.txt خروجی می‌دهد.

بدانید چرا کد نگه داشته شده است

اگر کد نگه‌داری می‌بینید که انتظار داشتید حذف شود، از گزینه پیکربندی ‑whyareyoukeeping برای کمک به درک دلیل نگهداری کد استفاده کنید. R8 یک مسیر از کد حفظ شده به یکی از نقاط ورودی برنامه شما را خروجی می دهد. برای اطلاعات بیشتر، به مستندات ‑whyareyoukeeping در دفترچه راهنمای Proguard مراجعه کنید.

رد پشته اصلی را بازیابی کنید

کد پردازش شده توسط R8 به روش های مختلفی تغییر می کند به طوری که رد پشته دیگر به کد اصلی اشاره نمی کند. به عنوان مثال، شماره خطوط و نام کلاس ها و متدها می توانند تغییر کنند. برای بازیابی پشته اصلی، R8 ابزار خط فرمان retrace را ارائه می‌کند که با بسته ابزار خط فرمان همراه است.

برای استفاده از retrace، یک فایل نگاشت و یک فایل ردیابی پشته به آن بدهید. فایل نگاشت، به نام mapping.txt ، به طور خودکار با بسته نرم افزاری Android شما (AAB) همراه می شود. برای جزئیات بیشتر، به مستندات ردیابی مجدد و مقاله مرکز راهنمایی کنسول Play در مورد نحوه مبهم‌سازی ردیابی پشته خرابی مراجعه کنید.