عیب یابی عملکرد ساخت با Build Analyzer

از Build Analyzer برای بررسی عملکرد ساخت پروژه خود استفاده کنید. برای هر ساختنی که انجام می‌دهید، Build Analyzer سعی می‌کند مهم‌ترین اطلاعات را ارائه دهد تا بتوانید به سرعت رگرسیون‌ها را در عملکرد ساخت خود شناسایی و برطرف کنید.

برای استراتژی های بیشتر در مورد بهبود عملکرد ساخت، بهینه سازی سرعت ساخت خود را بخوانید.

شروع کنید

هر بار که برنامه خود را می سازید، Build Analyzer یک گزارش ایجاد می کند و داده ها را از آخرین گزارش در پنجره Build نمایش می دهد.

برای شروع به صورت زیر عمل کنید:

  1. اگر قبلاً این کار را نکرده اید، برنامه خود را به یکی از روش های زیر بسازید:
    • از نوار منو روی Build > Make Project کلیک کنید.
    • برای ساختن یک بسته نرم افزاری Android یا APK، روی ساخت > ساخت بسته(های) / APK(ها) > ساخت بسته(ها) یا ساخت > ساخت بسته(ها) / APK(ها) > ساخت APK(ها) از منو کلیک کنید. نوار
  2. برای باز کردن پنجره Build ، View > Tool Windows > Build را از نوار منو انتخاب کنید.
  3. برای مشاهده گزارش ساخت در Build Analyzer ، روی تب Build Analyzer در پنجره Build کلیک کنید.

داده‌هایی که Build Analyzer ارائه می‌دهد ممکن است در بین ساخت‌ها تغییر کند، بنابراین مفید است که پروژه خود را چندین بار بسازید و داده‌ها را برای شناسایی الگوها مقایسه کنید.

پلاگین هایی را با وظایفی که مدت زمان ساخت را تعیین می کنند، مشاهده کنید

هنگامی که برای اولین بار Build Analyzer را پس از تکمیل ساختن باز می کنید، پنجره نمای کلی از تجزیه و تحلیل ساخت را نمایش می دهد، همانطور که در شکل 1 نشان داده شده است.

شکل 1. صفحه نمای کلی Build Analyzer خلاصه ای از یافته ها را ارائه می دهد.

برای مشاهده تفکیک افزونه‌ها با وظایفی که مدت زمان ساخت را تعیین می‌کنند، روی افزونه‌هایی با وظایفی که بر مدت زمان ساخت تأثیر می‌گذارند در صفحه نمای کلی کلیک کنید. همچنین می توانید Tasks را از منوی کشویی انتخاب کنید و تأیید کنید که بر اساس افزونه گروه بندی می کنید. نمودار پلاگین ها و وظایف مربوط به آن ها را بر اساس کل زمان تکمیل آنها مرتب می کند.

شکل 2. Build Analyzer تفکیک پلاگین هایی را ارائه می دهد که بر مدت زمان ساخت شما تأثیر می گذارد.

مشاهده وظایف تعیین کننده مدت زمان ساخت

برای مشاهده خلاصه‌ای از وظایفی که به مدت زمان ساخت شما کمک می‌کنند، روی «وظایفی که بر مدت زمان ساخت تأثیر می‌گذارند» در صفحه نمای کلی کلیک کنید یا «کارها» را از فهرست بازشو انتخاب کنید. اگر پروژه شما از AGP 8.0 یا بالاتر استفاده می‌کند، وظایف به‌طور پیش‌فرض بر اساس دسته‌بندی گروه‌بندی می‌شوند، بنابراین شناسایی مناطقی که بر مدت زمان ساخت تأثیر می‌گذارند آسان‌تر است. برای کسب اطلاعات بیشتر در مورد اجرای آن، روی هر تکلیف فرزند کلیک کنید.

شکل 3. Build Analyzer تفکیک وظایفی را ارائه می دهد که بیشترین مسئولیت را برای مدت زمان ساخت شما دارند.

هشدارها را بررسی کنید

اگر Build Analyzer تشخیص دهد که برخی از کارها را می توان برای اجرای کارآمدتر پیکربندی کرد، یک هشدار ارائه می دهد. برای مشاهده تمام هشدارهایی که Build Analyzer برای ساخت شما شناسایی کرده است، روی All warnings در صفحه نمای کلی کلیک کنید یا از منوی کشویی گزینه Warnings را انتخاب کنید.

برخی از هشدارها دارای پیوند ایجاد گزارش هستند، همانطور که در شکل 4 نشان داده شده است. هنگامی که روی پیوند ایجاد گزارش کلیک می کنید، یک گفتگو با اطلاعات اضافی ظاهر می شود که ممکن است به توسعه دهنده افزونه کمک کند مشکل را در نسخه جدید افزونه حل کند. روی کپی کلیک کنید تا متن را در کلیپ بورد خود ذخیره کنید تا راحتتر اطلاعات را در گزارش اشکال به توسعه دهنده افزونه جایگذاری کنید.

شکل 4. اطلاعات دقیق در مورد هشدارهای Build Analyzer.

انواع هشدار

Build Analyzer انواع هشدارهای زیر را گزارش می کند:

  • کارهای همیشه اجرا شود : یک کار همیشه در حال اجرا باعث می شود کارهای دیگر در هر ساختنی اجرا شوند که غیرضروری است. دو دلیل اصلی وجود دارد که چرا ممکن است این هشدار را مشاهده کنید:

    • (متداول تر) ورودی ها و خروجی های کار را به درستی اعلام نکردید. اگر اینطور است، باید ورودی ها و خروجی های وظایف خود را به درستی اعلام کنید . این به این معنی است که ورودی‌ها و خروجی‌ها را خودتان در جایی که می‌توانید اعلام کنید یا اگر کارهایی که باعث اخطار می‌شوند از پلاگین‌های شخص ثالث هستند، نسخه‌های افزونه را تغییر دهید.

    • (کمتر رایج) یک کار دارای upToDateWhen روی false است که باید از آن اجتناب شود. ممکن است منطقی وجود داشته باشد که نادرست ارزیابی می شود یا اینکه upToDateWhen کد سختی دارد که نادرست است. اگر منطقی وجود داشته باشد که نادرست ارزیابی شود، این نتیجه ممکن است عمدی باشد و ممکن است انتخاب کنید که هشدار را نادیده بگیرید. اگر upToDateWhen هاردکد نادرست باشد، باید کدگذاری هاردکد را از کد خود حذف کنید.

  • مسائل مربوط به تنظیم کار : این اخطار برای کارهایی ایجاد می شود که همان فهرست را به عنوان خروجی ها اعلام می کنند. این بدان معناست که خروجی‌های وظایف به احتمال زیاد بین ساخت‌ها حفظ نمی‌شوند و آن وظایف همیشه اجرا می‌شوند، حتی زمانی که هیچ تغییری وجود ندارد. برای رسیدگی به این هشدار، باید دایرکتوری های خروجی مختلفی را برای وظایف خود اعلام کنید . این به این معنی است که خود دایرکتوری های خروجی مختلف را در جایی که می توانید اعلام کنید یا اگر کارهایی که باعث ایجاد اخطار می شوند از پلاگین های شخص ثالث هستند، نسخه های افزونه را تغییر دهید.

  • پردازنده حاشیه نویسی غیر افزایشی: این هشدار در شرایطی ایجاد می شود که یک پردازشگر حاشیه نویسی غیر افزایشی است و باعث می شود که وظیفه JavaCompile همیشه به صورت غیر افزایشی اجرا شود. برای رسیدگی به این هشدار، به یک پردازشگر حاشیه نویسی افزایشی بروید .

  • حافظه پنهان پیکربندی: این اخطار در صورتی ارائه می شود که کش پیکربندی برای پروژه شما فعال نباشد. Build Analyzer از میان مجموعه‌ای از ساخت‌ها عبور می‌کند تا بررسی کند که آیا پروژه شما با حافظه پنهان پیکربندی سازگار است یا خیر. اگر بررسی‌های سازگاری با موفقیت انجام شود، می‌توانید ذخیره پیکربندی را از Build Analyzer فعال کنید.

  • بررسی Jetifier: اگر پرچم enableJetifier در پروژه شما موجود و فعال باشد ، این هشدار ارائه می شود. یعنی اگر در فایل gradle.properties خود android.enableJetifier=true دارید. Build Analyzer می‌تواند بررسی کند که آیا پرچم را می‌توان با خیال راحت حذف کرد تا پروژه شما عملکرد ساخت بهتری داشته باشد و از کتابخانه‌های پشتیبانی‌نشده Android خارج شود.

تاثیر دانلود را بررسی کنید

Build Analyzer خلاصه ای از زمان صرف شده برای دانلود وابستگی ها و نمای دقیق بارگیری ها در هر مخزن را ارائه می دهد. برای بررسی تأثیر دانلودها، از منوی کشویی، Downloads را انتخاب کنید. این اطلاعات در پنجره همگام سازی نیز موجود است.

می‌توانید از این اطلاعات برای تعیین اینکه آیا دانلودهای وابستگی غیرمنتظره بر عملکرد ساخت شما تأثیر منفی می‌گذارند استفاده کنید. این امر به ویژه در ساخت‌های افزایشی، که نباید به طور مداوم مصنوعات را دانلود کنند، مهم است.

به طور خاص، می‌توانید از این اطلاعات برای شناسایی مشکلات پیکربندی، مانند استفاده از نسخه‌های پویا وابستگی‌ها که باعث دانلودهای غیرمنتظره می‌شوند، استفاده کنید. همچنین، اگر تعداد زیادی درخواست ناموفق برای یک مخزن خاص مشاهده کردید، می تواند نشان دهد که مخزن باید حذف شود یا در پیکربندی مخزن شما به پایین تر منتقل شود.

شکل 5. Build Analyzer تاثیر دانلودها بر مدت زمان ساخت را نشان می دهد.

[فقط ویندوز] تأثیر نرم افزار آنتی ویروس را بررسی کنید

Build Analyzer به شما اطلاع می دهد که آیا نرم افزار آنتی ویروس ممکن است بر عملکرد ساخت شما تأثیر بگذارد. اگر نرم افزار آنتی ویروس مانند Windows Defender، دایرکتوری های مورد استفاده توسط Gradle را به صورت بلادرنگ اسکن کند، ممکن است این اتفاق بیفتد. Build Analyzer فهرستی از دایرکتوری‌ها را توصیه می‌کند تا از اسکن فعال حذف شوند و در صورت امکان، پیوندی را برای افزودن آنها به فهرست حذف پوشه Windows Defender ارائه می‌دهد.