گردل در اندروید چیست و چه کاربردی دارد؟
بسیاری از برنامه نویسان اندروید که با محیط اندروید استودیو مشغول کار هستند بطور مداوم با گردل در اندروید در ارتباط اند ولی از دانش کافی نسبت به آن برخوردار نیستند.در این مقاله به توضیح کامل این سازنده می پردازیم و عملکرد آن را بطور کامل شرح می دهیم تا با دانش مفهومی و کامل از گریدل ، بتوانید مشکلات مربوط به آن در پروژه های خود را براحتی حل کنید.با آکادمی آموزنگار همراه باشید.
گردل در اندروید یک سیستم مدیریت پیشرفته برای مدیریت مبتنی بر Groovy و Kotlin است. Gradle از دانلود خودکار و تنظیم خودکار کتابخانه ها و وابستگی ها پشتیبانی می کند و همچنین از Maven و Ivy برای دانلود کتابخانه ها و تنظیمات بهره می برد که این مسئله کمک میکند تا از محصولات موجود استفاده شود و نیازی به ساخت و ایجاد مجدد نباشد.
شاید جالب باشد که بدانید Gradle خود یک سازنده مستقل هم میتواند باشد و دستورات شما را اجرا کند.
به مثال زیر توجه کنید
task hello { doLast {println 'Hello Gradle' }
این کد دستوری که در گردل در اندروید نوشته میشود با دستور gradle hello در CMD اجرا میشود.
حال با این مثال ساده به شما توضیح میدهم که فرآیند ساخت در اندروید چگونه اتفاق میفتد.
در ابتدا خاطر نشان میکنم که گردل در اندروید هم مانند بسیاری از ابزار های دیگر مانند git,npm و adb یک ابزار کد نویسی میباشد که شما میتوانید از آن استفاده کنید.
پس گریدل در خارج از اندروید استودیو هم قابل دسترسی و استفاده میباشد که البته این امکانی هست که شما را به انجام آن توصیه نمیکنیم و مطالبی که در ادامه خواهید دید صرفا جهت اطلاع و درک بهتر این سازنده خاص و منحصربفرد است.
گردل در اندروید کاملا متن باز بوده و به شما این امکان را میدهد که فایل های آن را تغییر دهید و این یکی از نکاتی است که گوگل این سازنده را برای خود انتخاب کرده و ان را به نحوی که نیاز دارد پیاده سازی کرده.
یعنی Gradle که در اندروید استودیو استفاده میشود برای اندروید شخصی سازی شده و تسک های آن بر اساس نیاز در گریدل تعریف شده و بسرعت درحال پیشرفت و بروز رسانی میباشد.
بطور مثال وقتی شما انتخاب میکنید که پروژه ساخته یا به اصطلاح BUILD شود در واقع شما تسکی که گوگل برای گریدل تعریف کرده است را اجرا میکنید و شما را از سختی استفاده مستقیم و به اصطلاح Command خلاص کرده و باید از اندروید ممنون باشیم(ممنون هستیم )
و مانند همین مثال بسیاری از تسک های دیگر که تصویر زیر محل قرار گیری آنها را مشاهده می فرمایید
این تسک هایی هست که برای پروژه ای ساده تعریف شده است برای شما در بالا قابل ملاحظه است.
تفاوت میان گردل root و app
شاید برای شما سوال شده باشد که این دو گریدل چه تفاوتی با هم دارند?
اگر برنامه ای که در آن از چند زیر برنامه یا به اصطلاح Module استفاده شده باشد را دیده باشید، میدانید که هر زیر برنامه گریدل خاص خود را دارد پس این امکان وجود دارد که در یک برنامه مثل زیر شما چندین گریدل داشته باشید ولی نکته مهم این است که تمام گریدل های شما از یک گریدل کلی پیروی میکنند که آن Root gradle یا Project gradle نام دارد و تنظیمات اصلی و کلی شما در فایل های مربوط به آن صورت خواهد گرفت
تصویر زیر یک مثال از حضور زیربرنامه های متعدد در یک برنامه است.
شما برای معرفی زیر برنامه ها به برنامه اصلی یا باید از گزینه های خود اندروید استفاده کنید یا بصورت دستی در فایل setting.gradle آنها را به گریدل اصلی معرفی کنید که البته معرفی بصورت دستی اصلا توصیه نمیشود و بهترین راه استفاده از گزینه Import module استفاده کنید و یا از گزینه New module برای ساخت یک زیر برنامه برای خود استفاده کنید.
با انتخاب این گزینه ها تسک معرفی زیربرنامه شما به گریدل انجام میشود و در فایل setting.gradle کارهای لازم را انجام میدهد.
پس همانطور که اشاره شد گریدل پروژه Project gradle تنظیمات کلی گریدلی که شما در برنامه استفاده میکنید را انجام میدهد و گریدل برنامه app gradle تنظیمات کلاس ها و دانلود کتابخانه ها و پیش نیاز ها را به عهده دارد.
نکته ای در اینجا لازم به ذکر است این است که R که شما در معرفی ایتم ها به کلاس ها از آن استفاده میکنید متعلق به گریدل است و این گریدل است که ان را میسازد و به شما اجازه میدهد از آن استفاده کنید پس در بعضی مواقع که برنامه شما R را نمیشناسد در واقع مشکل از گریدل و عدم همسان سازی آن در برنامه است.در واقع شما حتی اگر این فایل را از برنامه پاک کنید آن مجدد بر اساس نام بسته شما یا package name ساخته میشود.پس وظیفه ساخت آن با گریدل است ولی اگر شما نام بسته را اشتباها تغییر داده باشید دیگر مشکل به گریدل نیست چون صرفا تسک خود را بر اساس داده اشتباه شما انجام داده است.
فایل های موجود در گریدل:
این فایل ها در پروژه ای ساده به تعداد 6 عدد خواهند بود که در ادامه نام برده و توضیح مختصری داده خواهد شد
1.Build.gradle=>Project
- Build.gradle=>App
- gradle-wrapper.properties
- gradle.properties
- settings.gradle
- local.properties
- proguard-rules.pro
1) Build.gradle=>Project
// Top-level build file where you can add configuration options common to all sub-projects/modules.
توضیح بالا در ابتدای فایل مورد نظر نوشته شده است و به این نکته اشاره دارد که این فایل یک تنظیمات سطح بالا میباشد که برای همه زیر برنامه ها اعمال خواهد شد و پایه و اساس برنامه است.
در این فایل چند تابع پر کاربرد قابل مشاهده هستند. مثلاً تابع Dependencies کتابخانه ها و نیاز های پروژه را تعریف میکند. همچنین تابع Repositories تعیین میکند که برای فراهم کردن این نیاز ها و کتابخانه ها، گریدل باید به چه مخازنی رجوع کند. هر کدام از این توابع یک Closure (کپسول های جداگانه) را به عنوان پارامتر میپذیرند. درون این کپسول ها، ما میتوانیم ورودی مورد نیاز را به پروژه معرفی کنیم.در تصویر زیر نمونه ای از این فایل قرار داده شده است.
در تصویر بالا قسمت buildscript یک تسک میباشد که شامل دو تابع است که در بالا معرفی شد.
2) Build.gradle=>App
در این فایل تنظیمات گریدل در مقیاس کوچکتر به بررسی ورژن ها میپردازد که لازم به ذکر است که این فایل بطور کامل زیرمجموعه فایل Build.gradle(Project) میباشد و از Repositories آن استفاده میکند.
بطور مثال در عکس زیر کتابخانه ها در این فایل تعریف میشود و اینکه از چه محلی دریافت شود در فایل قبلی و در Repositories مشخص میشود و به این صورت تسک ها بطور زنجیره ای اجرا میشود.
به عکس بالا توجه کنید.
ابتدا در این فایل در خط اول به گریدل پلاگین اندروید اضافه میشود تا در ادامه این فایل از این پلاگین استفاده شود
همانطور که میبینید در این فایل تنظیمات اندروید به گریدل داده میشود تا بتواند بر اساس این تنظیمات تسک های خود را اجرا کند
و در انتها در خط 19 در متد Dependencies استفاده شده که با متد فایل قبلی متفاوت است زیرا در این فایل شما از پلاگین خود اندرود استفاده کرده اید
در این متد است که شما کتابخانه های خود را معرفی میکنید تا به برنامه اضافه شود
دقت کنید که اگر شما زیر برنامه های دیگری در برنامه داشته باشید هر کدام برای خود یک نمونه از این فایل دارند و کتابخانه های خود را اینجا دریافت میکنند
3) gradle-wrapper.properties.
شما در این فایل میتوانید ورژن گریدل خود را مشخص کنید و در واقع تنظیمات اصلی گریدل در این فایل انجام میشود
4) gradle.properties
این بخش تنظیمات و اتصال بین گردل و جاوا را بر عهده دارد و معمولا تغییر زیادی در برنامه نویسی اندرود در آن اعمال نمیشود
بحث در رابطه این فایل بسیار سنگین و پرمحتوا میباشد و نیازی به دانستن آنها در سطح اندروید نیست(حتی کمتر از مباحث دیگر که گفته شد)
پس دوستانی که تمایل دارند میتوانند از خود مرجع گریدل مطالعه بفرمایند:
5) settings.gradle
تنها فعالیتی که این فایل از گریدل در اندروید برای ما انجام میدهد برقراری ارتباط و معرفی زیر برنامه ها به گریدل است تا تسک ها برای آنها معرفی شود و همانطور که گفته شد بهتر است که تغییر دستی در این فایل انجام نشود
6) local.properties
## This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
متن بالا در ابتدای فایل به ما توضیح میدهد که این فایل بسته به هر سیستم متفاوت است و در ورژن کنترل ها(مانند git ) نباید ارسال شود
ولی در ورژن های حال حاضر اندروید استودیو خود آن این فایل را بسته به سیستم و با مطلع کردن شما تغییر میدهد تا مشکلی در کار نباشد
دیدگاهتان را بنویسید