روزنوشت

می نویسم؛ تا به یاد آورم روزی، بودم

روزنوشت

می نویسم؛ تا به یاد آورم روزی، بودم

روزنوشت

من آرزویی ندارم، من از چیزی نمی‌ترسم، من آزادم...

«کازانتزاکیس»

دنبال کنندگان ۳ نفر
این وبلاگ را دنبال کنید
آخرین نظرات

تسریع فرآیند Build توسط Gradle در اندروید استودیو

يكشنبه, ۷ شهریور ۱۳۹۵، ۰۵:۲۵ ب.ظ

روزهای تلخ اکلیپس و ADT Bundle رو همه به خاطر داریم...

نوشتن و اضافه کردن کتابخانه ها دردسر خودش رو داشت، Cleanهای مداوم رو همه به یاد داریم.

Emulator از اون زمان تا حالا خیلی بهتر شده و واقعن سریعتر شده

 

Android Studio یک IDE خیلی خوب هست و کیفیت کار رو برای برنامه نویس های اندروید بالاتر برده، Gradle هم یک Build System منعطف و قوی هست که امکانات جدیدی رو در اختیارمون گذاشته که خیلی به سریعتر شدن پروسه ی برنامه نویسی یا انتشار برنامه ها کمک می کنه.

 

با همه ی اینها نمیتونیم انکار کنیم که فرآیند Build اپ ها در دوران اکلیپس و ANT خیلی سریعتر بود. پیچیدگی های خود Gradle به یک طرف، استفاده از اینترنت و تحریم بودن ایران هم از طرف دیگه باعث شده پروسه ی Build خیلی کند بشه.

 

در این بین راه حل هایی وجود داره که میتونه به تسریع پروسه ی Build کمک کنه.

 

Gradle Offline Mode

درواقع Gradle برای انجام کارش نیاز به اینترنت داره، تا چک کنه که همه ی بسته هایی که برنامه نیاز داره رو اگر وجود نداشت دانلود کنه، یا بسته به پلاگین هایی که نصب کردیم (مثل fabric.io) اطلاعاتی رو ارسال کنه. اما چون وضعیت اینترنت ما تعریفی نیست، سایت bintray.com که مخازن jCenter اونجا هاست میشن ایران رو تحریم کرده، و اینکه همیشه نیاز نیست Gradle بروز بودن بسته ها رو چک کنه، تغییر Gradle به حالت Offline میتونه پروسه ی Build رو کمی سرعت ببخشه.

 

من تنها زمانی که میخوام کتابخانه ی جدیدی به پروژه اضاف کنم یا Build نهایی برای Release بگیرم، Gradle رو از حالت Offline بر میدارم.

 

 

تنظیمات gradle.properties

علاوه بر این می تونید خود Gradle رو به شکلی کانفیگ کنید که نتیجه ی اون افزایش سرعت Build باشه

 

 

همونطور که می بینید تو هر پروژه ی اندروید، اندروید استودیو دو فایل gradle.propertes رو بهتون نشون میده

  • Project Properties: تنظیماتی که مختص همون پروژه هستن و فقط روی اون پروژه اعمال میشن (این فایل توی هر پروژه وجود داره)
  • Global Properties: تنظیمات عمومی Gradle که روی همه ی پروژه ها تاثیر میزاره، این فایل تو پروژه ای که ایجاد می کنید وجود نداره و وقتی روش دابل کلیک کنید، فایلی رو خارج از محیط پروژه باز می کنه. این فایل در مسیر زیر وجود داره
    • لینوکس:
~/.gradle/gradle.properties
  • ویندوز
%userprofile%/.gradle/gradle.properties

 

اگه این فایل (Global Properties) تو این مسیر وجود نداشت (و مثل تصویر بالا تو اندروید استودیو نمایش داده نشد) ، باید ایجادش کنید.

 

 

نمونه تنظیماتی که من استفاده می کنم:

 

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048M
org.gradle.configureondemand=true
org.gradle.parallel=true

 

  • org.gradle.daemon=true: این خط به Gradle دستور میده که در حالت daemon اجرا بشه (daemon رو شاید معادل service در ویندوز بشه درنظر گرفت). اینکار باعث میشه که یه پروسه ی مجزا برای Gradle ایجاد بشه و با هربار Build نیاز نباشه دوباره این پروسه ایجاد بشه که خودش باعث میشه سرعت Build افزایش پیدا کنه. ضمن اینکه در تنظیمات بعدی میتونیم منابع مصرفی این پروسه رو افزایش بدیم تا باز هم سرعت Build افزایش پیدا کنه.
  • org.gradle.jvmargs=-Xmx2048M: در این خط میتونیم پارامترهای معتبر JVM رو وارد کنیم. تنظیماتی که اینجا انجام گرفته، به Gradle daemon به میزان ۲ گیگ رم اختصاص میده که باعث افزایش سرعت Build میشه. البته حواستون باشه که سیستمتون باید به اندازه ی کافی رم داشته باشه (به همین دلیل توصیه می کنم سیستمی که واسه اینکار استفاده می کنید حداقل ۸ گیگ رم داشته باشه)
  • org.gradle.configureondemand=true: این خط بیشتر برای پروژه هایی که از چندین ماژول تشکیل شدن معنی پیدا می کنه و درواقع تنها درصورتی هرکدوم از پروژه ها رو Configure می کنه که بهشون نیاز باشه. شاید برای پروژه های معمولی تاثیر مثبتی نداشته باشه.
  • org.gradle.parallel=true: این خط هم ظاهراً باعث میشه در پروژه هایی که از چند تشکیل شدن (چند ماژول)، عملیات کانفیگ این پروژه ها رو بصورت موازی انجام بده که سرعت Build رو افزایش میده. این حالت هم ظاهراً برای پروژه های چند بخشی تاثیر بیشتری داره.

 

استفاده از مجموعه ی این تنظیمات باعث شده من سرعت Build بیشتری داشته باشم. شاید برای شما هم مفید واقع بشه.

 

درصورتی که از این تنظیمات استفاده می کنید، ممنون میشم تاثیرش رو در سرعت Build روی سیستم خودتون (با ذکر مشخصات سیستم و سیستم عامل مورداستفاده) کامنت کنید.

نظرات (۱)

ممنون داداش وبلاگت عالیه . حتما تست میکنم اینو 
پاسخ:
نظر لطفتونه.
ممنون میشم بعد از تست نتیجه رو اینجا اعلام کنید تا بهتر ببینیم کارایی این تنظیمات روی سیستم های متفاوت با سخت افزار و سیستم عامل متفاوت به چه شکلی هست.
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی