hamed seify
hamed seify
خواندن ۳ دقیقه·۴ سال پیش

اندر احوالات Gradle و Android Studio

گریدل چیه و به چه دردی می خوره؟

گریدل یه ابزار اتوماتیک کردن فرآیند Build هست که تقریبا هر نرم افزاری رو میشه باهاش بیلد گرفت. مثلا فرآیند Build کردن اپلیکیشن های اندروید به این صورت هست که در شکل پایین می بینید. سورس کدها و ریسورس ها به همراه لایبرری ها و دیپندنسی ها کامپایل میشن و به یه مشت فایل DEX تبدیل میشن. بعد این فایل های DEX توسط پکیجر و با استفاده از یک کلید بسته بندی میشه که ما اون خروجی نهایی رو با پسوند .APK می شناسیم و توی دیوایس های اندرویدی مون قابل نصب و استفاده هستن.

به غیر از Gradle ابزارهای دیگه ای هم هستن که کار اتوماسیون فرآیند Build رو انجام میدن اما اندروید استودیو به صورت پیش فرض با گریدل کار می کنه. از جمله این ابزار ها میشه Maven و Ant و Jenkins و Travis CI رو مثال زد که بعضی ها رایگان و بعضی ها پولی هستن.
توی عکس پایین یه دیاگرام کلی از فرآیند Build و خروجی گرفتن اپ های اندرویدی می بینید:


حالا گریدل این وسط چه نقشی داره و کجای قضیست اصلا؟

گریدل کارش اینه که یکسری فرمان (تسک) رو دریافت می کنه و یه سری کارا رو پشت سر هم انجام میده. مثلا اگر به فایل های build.gradle توی پوشه های android و ماژول app نگاه کنید، می بینید که یکسری کد به زبون Groovyهستن. در مورد زبان گرووی و نحوه استفاده از اون توی گریدل توی پست بعدی صحبت می کنم. کار این کدها اینه که وقتی دکمه سبز رنگ Run رو میزنید یا اینکه می خوایید از پروژه خروجی بگیرید، تسک های مربوط بهشون رو انجام بدن. همین تسک هایی که بالاتر به صورت خلاصه گفتیم.

مثلا اگه بخوایید فرآیند Build رو دستی (بدون استفاده از ابزار هایی مثل Gradle) انجام بدید باید این مراحل رو طی کنید:

  1. فایل های .java رو بندازید تو کامپایلر javac تا براتون کامپایل کنه و خروجی .class بده.
  2. از dx استفاده کنید تا فایل ها .class رو به فایل های .dex تبدیل کنه.
  3. یه ورژن اولیه apk از assetها و resourceها و AndroidManifest درست کنید که یه فایل با پسوند .apk.unaligned میشه
  4. از aapt استفاده کنید تا فایل های dex رو به فایل اولیه apk اضافه کنه.
  5. از jarsigner  استفاده کنید تا فایل بدست اومده رو براتون sign کنه.
  6. و در نهایت از zipalign استفاده کنید تا فایل sign شده رو به خروجی نهایی APK تبدیل کنه تا توی دیوایس های اندرویدی قابل استفاده باشه.

البته من کمی کلی این قدم ها رو گفتم و هر کدوم یه ریزه کاری هایی هم داره. هدفم این بود که بگم اگر از ابزار هایی مثل Gradle استفاده نکنیم چه فرآیند سختی رو باید پشت سر بذاریم تا بتونیم خروجی بگیریم از پروژه. توی عکس پایین لاگ Build و Run کردن یک اپلیکیشن توی اندروید استودیو هست که داریم از Gradle استفاده می کنیم و تمام تسک هایی که باید انجام بشن تا خروجی اپ در بیاد رو نشون میده:


ورژن های مختلف گریدل که توی اپ می بینیم چیه؟

در واقع اونا ورژن های مختلف Gradle نیستن بلکه هر کدوم یک چیز جداست. شما در رابطه با گریدل دو تا دیپندنسی مختلف می بینید.

اولی که ورژن خود گریل هست و از طریق Project Structure در دسترس هست به شکل زیر:


دومی اما پلاگین گریدل هست که درواقع اندروید استودیو ازش استفاده می کنه تا بتونه با گریدل کار کنه. ورژن پلاگین گریدل هم از طریق Project Structure قابل دسترس هست:


یه نکته ای که باید در مورد پلاگین گریدل توجه کنید و خیلی وقتا موجب باگ میشه اینه که تناسب بین ورژن گریدل و پلاگینش رو رعایت کنید. توی عکس پایین نشون میده که هر ورژن از پلاگین گریدل حداقل به چه ورژنی از گریدل احتیاج داره و اگه این تناسب رعایت نشه فرآیند بیلد شدن اصلا شروع نمیشه:


مثلا ورژن های 3.6.0 تا 3.6.4 (اگه ورژنی هم بینشون بوده) نیازمند گریدل 5.6.4 به بالا هست و با ورژن های پایین تر کار نمی کنه.این جدول از لینک زیر قابل دسترس هست:

برای ویرایش کردن ورژن گریدل و پلاگینش می تونید به ترتیب به فایل های gradle-wrapper.properties و build.gradle (توی روت اصلی پروژه) مراجعه کنید که توی عکس هایی پایین مشخصه:


امیدوارم این مقاله خلاصه و جمع و جور باعث آشنایی بیشتر با گریدل شده باشه براتون و اینکه توی مقاله های بعدی در مورد دستکاری توی گریدل با استفاده از زبان Groovy و توضیح میدم. ممنونم از توجه و وقتی که گذاشتین.

#گریدل #اندروید_استودیو #گرووی #Groovy #Build_Automation #automation #android#Gradle #Android_Studio #Java #Kotlin #آموزش #اندروید

شاید از این پست‌ها خوشتان بیاید