اگر توسعه دهنده اندروید باشید و با اندروید استودیو هم کار کرده باشید، حتما با مفهومی به نام build system و gradle سر و کار داشتید. در این مطلب میخوام توضیحات مختصر و گذرایی در مورد گریدل بدم که موقع کد زدن حداقل با مفهوم گریدل و بیلدسیستم آشنایی داشته باشید. با ادامه مطلب همراه باشید.
برای آشنایی با Gradle اول باید با build system آشنا بشید. اما بیلدسیستم چیست؟
بیلد سیستم یک ابزار نرمافزاریست که کار سیستم ساخت را به صورت اتوماتیک انجام میدهد. هدف اصلی بیلدسیستمها انجام عملیاتهای مختلف (مثل بررسی خطاهای کد) روی کدها برای ساخت فایل اجراییست.
برای هر زبان برنامهنویسی بیلدسیستمهای مختلفی به وجود آمدند. جاوا سه بیلدسیستم اصلی دارد:
۱-Ant محصول Apache معرفی شده در سال 2000 – براساس زبان XML
۲-Maven محصول Apache معرفی شده در سال 2004 – براساس زبان XML
۳-Gradle محصول Hans Dockter معرفی شده در سال 2012 – براساس زبان Groovy
تا اینجای کار با بیلدسیستم آشنا شدیم و سریع میریم سراغ گریدل. قبل از اینکه از این مطلب رد بشیم این رو هم بگم که بحث بیلدسیستمها بحث بسیار گستردهای هست و دنیای خاص خودش رو داره.
Gradle یک اتوماتیک بیلدسیستم متنباز و برخلاف Ant و Maven که براساس زبان XML هستند، براساس زبان Groovy شکل گرفت. Gradle مزایای هر دو بیلدسیستم Ant و Maven رو در خود جمع کرد و خیلی زود بخاطر قدرت و انعطافپذیریش موردتوجه قرار گرفت.
برای اولین بار گوگل در کنفرانس Google I/O در سال 2013 اعلام کرد که از بیلدسیستم Gradle در IDE جدیدش یعنی اندروید استودیو استفاده خواهد کرد. گوگل، Gradleرو به وسیله یک افزونه به نام Android Plug-in for Gradle به اندروید استودیو آورد.
مزایای بیلدسیستم گریدل:
Project Dependency:
Dependency میتواند یک Modules یا JAR File یا Library باشد که یا روی کامپیوتر خود شماست یا روی یک سرور. گریدل میتواند این Dependency ها رو مدیریت و به پروژه اضافه کند.
Testing:
Gradle به صورت اتوماتیک یک پوشه تست از پروژه شما درست میکند و محتویات پروژه و یک فایل تست از APK پروژه شما را داخلش نگه میدارد و هنگام Build شدن پروژه، عملیات تست را روی اپ شما انجام میدهد.
Publishing:
Gradle میتواند مراحل Sign کردن اپ شما را مدیریت کند.
Multiple APKs:
Gradle میتواند از پروژه شما چند خروجی APK بگیرد. برای مثال وقتی که میخواهید برای دیوایسهای مختلف با سختافزارهای مختلف اپهای جداگانه داشته باشید.
تشریح فایلهای گریدل:
هروقت پروژهای در اندروید استودیو ساخته بشه، به طور اتوماتیک فایلهایی همراه اون ساخته میشوند که در اندروید استودیو زیرمجموعه Gradle Scripts هستند. یک به یک به تشریح این فایلهای میپردازیم.
Gradle Buid یا همان فایل build.gradle
هر پروژه اندروید استودیو حداقل دارای دو فایل build.gradle هست:
۱- Top Level Build File
تنظیمات اصلی که مربوط به کل پروژه است در این فایل قرار میگیرد. ما نیازی به تغییر و دستکاری این فایل نداریم.
۲- Module Level Build File
هر ماژول، دارای یک build.gradle جداگانه است که تنظیمات مربوط به ماژول مخصوص خودش داخل آن قرار میگیرد. میتوان گفت در اینجا ماژول به معنای پروژههای زیرمجموعه پروژه اصلیست. ما در طول مدت برنامهنویسی در اندروید استودیو همیشه با این فایل سر و کار داریم.
اگر به تصویر بالا نگاه کنید میبینید که build.grade اول همان Top Level Build File ما هست که مربوط به کل پروژه است و فایلهای build.gradle بعدی همان Module Level Build File ما هستند که داخل پرانتز روبروی هرکدام کارایی آن مشخص شده است. این یعنی یک پروژه اندروید در تصویر بالا وجود داره و نسخههای مختلف این اپ برای دستگاههای مختلف مثل موبایل، تلویزیون و پوشیدنی در حال توسعه است.
تشریح محتویات فایلها:
Top Level Gradle Build File:
محتویات این فایل همیشه ثابت هست و به هیچ عنوان نیازی به تغییر دادن داخل این فایل نیست. تنها نکته قابل ذکر اینه که خط ۸ معرفی کننده نسخه پلاگ-این گریدل اندرویداستودیو به پروژه است.
Module Level Gradle Build File:
هر پروژهای که داخل پروژه اصلی تعریف شود، یک Module Level Gradle Build جداگانه خواهد داشت. داخل این فایل اطلاعات کلی اپ مثل min sdk ، target sdk ، نسخه اپ و dependency های پروژه تعریف میشوند. در اندروید استودیو نیازی نیست اطلاعاتی که بالا گفتم داخل فایل manifest تعریف بشه، و تمام این اطلاعات داخل همین فایل قرار میگیره.
gradle-wrapper.properties:
این فایل به دیگران اجازه میدهد که کدهای شما را Build کنند حتی اگر Gradle روی کامپیوتر خود نصب نداشته باشند.
این فایل بررسی میکند که چه نسخهای از Gradle برای Build کردن کدها نیاز است و اگر نسخه مورد نظر را پیدا نکند، اقدام به دانلود کردن نسخهی مورد نیازش برای اجرای کدها میکند. وقتی شما پروژهای در اندروید استودیو میسازید امکان داره این فایل همراه پروژه ساخته نشه، ولی اگر پروژهای رو از اینترنت مثل سایت github بگیرید، بعضی مواقع این فایل رو داخلش پیدا میکنید.
Settings.gradle:
این فایل تمام زیرپروژههایی (همان Module) که پروژه ما داخلش دارد را معرفی میکند.
Gradle.properties:
اطلاعات کلی پروژه داخل این فایل ذخیره میشوند. بهطور پیشفرض این فایل خالی است.
Local.properties:
این فایل محل ذخیره android sdk را به پلاگاین Android Gradle معرفی میکنه.
پنجرههای گریدل در اندروید استودیو:
چند پنجره در اندروید استودیو هستند که مربوط به گریدل میشوند.
پنجره Gradle Task:
با استفاده از این پنجره در اندروید استودیو میتوان دستورات Gradle را مشاهده و یا با کلیک روی هرکدام از آنها، آن را اجرا کرد.
پنجره Gradle Console:
در پنجره Gradle Console خروجی دستورات Gradle به همراه نتیجه و پیغامهای خطای آنها نمایش داده میشود.
اضافه کردن Dependency به پروژه:
وقتی در حال توسعه اپ اندرویدی هستید، همیشه لازمه dependency هایی به پروژه اضافه کنید.
چند راه برای اضافه کردن Dependency به پروژه وجود دارد:
۱- قرار دادن فایل موردنظر در داخل پوشه libs در داخل پوشه پروژه
۲- استفاده از تب dependencies در قسمت project structure در اندروید استودیو (در ویندوز با زدن کلیدهای ترکیبی alt+ctrl+shift+s میتوان پنجره project structure را مشاهده کنید)
۳- اضافه کردن dependency به صورت مستقیم در قسمت dependencies فایل build.gradle پروژه
اضافه کردن dependency به هر یک از روشهای بالا در نهایت باعث اضافه شدن dependency به فایل build.gradle در قسمت dependencies خواهد شد و بلافاصله بعد از اضافه کردن یک dependency فایل build.gradle بهروزرسانی و dependency موردنظر به پروژه اضافه میشود.
هدف از این مطلب آشنایی مختصر و کوتاهی با بیلدسیستم و گریدل بود که برای توسعه اپ اندروید در اندرویداستودیو نیاز هست که اونها رو بدونید ولی اگر نیاز به مطالعه بیشتر در مورد بیلدسیستم یا گریدل داشتید نگاهی به مستندات گریدل در این لینک بندازید.
موفق باشید.
دیدگاهتان را بنویسید