گریدل (gradle) چیست؟ آموزش نصب و رفع مشکلات

  • حسین کرمی
  • 26 بهمن 1400
What is gradle? Usage of gradle in android studio

ممکن است برای شما هم سوال شده باشد که گریدل (gradle) چیست؟ قبل از اینکه به سراغ مبحث اصلی برویم، بگذارید موارد دیگری که ممکن است برای شما سوال باشند را هم بررسی کنیم. ممکن است موارد زیر نیز برای شما مطرح شده باشند:

  • معنی گریدل چیست؟
  • آموزش نصب گریدل (gradle) در اندروید استودیو
  • پلاگین گریدل (gradle plugin) در جاوا چیست؟
  • تغییر ورژن گریدل
  • کاربرد گریدل در اندروید
  • نصب آفلاین گریدل در اندروید استودیو
  • مشکل گریدل در اندروید استودیو
  • دانلود گریدل برای اندروید استودیو
  • gradle wrapper چیست؟
  • maven در گریدل چیست؟
  • dependency در گریدل چیست؟
  • تنظیمات گریدل در اندروید استودیو

اگر شما نیز به دنبال پاسخ به موارد بالا هستید، بهتر است ادامه مطلب را بخوانید و با ما در این مقاله از استک لرن همراه باشید.

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

گریدل (gradle) چیست؟

گریدل یک ابزار ساخت خودکار (build automation tool) است و طوری طراحی شده است که با آن بتوان تقریبا هر نوع اپلیکیشنی ساخت. کد‌های برنامه‌نویسی برای گسترش، جمع‌آوری و تبدیل به یک بسته قابل نصب بر روی سیستم عامل نیاز به یک سیستم یا ابزار ساخت دارد که گریدل اینکار را برایمان انجام می‌دهد. جالب است بدانید که کلمه gradle معنای خاصی ندارد و یک کلمه ساختگی است. 

به طور کلی گریدل (gradle) دارای ویژگی‌های زیر است:

  • عملکرد بالا: گریدل از انجام کار‌های بیهوده جلوگیری می‌کند و برای بهبود عملکرد فقط آن تسک‌هایی که باید انجام شوند را انجام می‌دهد
  • سازگار با JVM: گریدل قابل اجرا بر روی ماشین مجازی جاوا نیز می‌باشد. بنابراین می‌توانید از پلتفرم جاوا استفاده کنید و در منطق build خود از API استاندارد جاوا استفاده کنید. البته استفاده گریدل فقط برای JVM نیست و می‌تواند بر روی هر پروژه نیتیوی (native) استفاده شود
  • توسعه پذیری: گریدل قابل توسعه است. می‌توانید انواع وظایف یا مدل ساخت خود را ارائه دهید
  • پشتیبانی از IDE های مختلف: گریدل از IDE هایی مانند Intellij IDEA، Eclipse و Netbeans پشتیبانی می‌کند

 

گریدل از چه زبان‌هایی پشتیبانی می‌کند؟

همانطور که گفته شد، gradle بر روی JVM اجرا می‌شود. بنابراین می‌تواند از API استاندارد جاوا استفاده کند. همچنین اسکریپت‌های ساخت Groovy نیز از API استاندارد Groovy استفاده می‌کنند و کاتلین (Kotlin) نیز از API خود. بنابراین به طور کلی برای استفاده از گریدل می‌توانید به زبان جاوا، Groovy یا کاتلین کد بزنید.

شاید به این دسته‌بندی علاقه داشته باشید: دوره‌های آموزش برنامه‌نویسی به زبان کاتلین (kotlin)

 

گریدل (gradle) چگونه کار می‌کند؟

گریدل خود به زبان جاوا نوشته شده است اما به دلیل اینکه gradle فقط برای توسعه برنامه‌نویسان جاوا استفاده نمی‌شود و برای اینکه همه برنامه‌نویسان بتوانند به راحتی در آن کد بنویسند، به صورت پیشفرض از یک DSL مبتنی بر Groovy استفاده می‌کند. همچنین این تنظیمات گریدل در فایل‌های build.gradle ذخیره می‌شوند.

بنابراین تا این حد بدانید که Syntax گریدل در واقع از DSL کاتلین یا گرووی استفاده می‌کند. مزیت DSL دراین است که کد‌ها بسیار ساده‌تر شده‌اند و استفاده از API استاندارد آن زبان را راحت‌تر کرده است. دلیل شکل متفاوت نحو کد در build.gradle یا build.kts نسبت به زبان اصلی (گرووی یا کاتلین به ترتیب) نیز دقیقا همین است.

ممکن است به این دوره علاقه‌مند باشید: دوره رایگان آموزش گام به گام برنامه‌نویسی به زبان کاتلین از پایه تا پیشرفته

 

Domain Specific Language (به اختصار DSL) چیست؟
یک DSL زبانی ساده مبتنی بر زبان اصلی (مانند Groovy) است که استفاده محدودتری دارد و هدف آن کدنویسی راحت‌تر و قابل فهم‌تر است. بر خلاف جاوا، گرووی و کاتلین قابلیت DSL را در خود دارند. فایل‌های ساخت (build) به زبان DSL کاتلین نیز بصورت build.kts ساخته شده و کد‌ها مبتنی بر DSL کاتلین نوشته می‌شوند.

 

چرا باید از گریدل (Gradle) استفاده کنیم؟

مدیریت چرخه زندگی (lifecycle) پروژه یک کار پیچیده‌ای است که می‌توان آن را انجام داد اما به تلاش زیادی نیاز است. به دلیل پیچیدگی آن هنگام انجام دستی این وظایف، امکان اشتباه نیز زیاد است.

بگذارید یک مثال بزنیم. فرض کنید یک dependency را در پروژه خود استفاده کرده‌ایم. حال یک نسخه جدید‌تر برای آن منتشر شده است. اگر از گریدل استفاده نکنید، باید آن dependency را به صورت دستی دانلود و به پروژه خود ایمپورت کنید. آیا می‌توان هر بار که یک نسخه جدید از یک پکیج منتشر می‌شود، آن را به صورت دستی دانلود کنید و به پروژه بیافزایید؟ حتی تصور این کار هم شما را دیوانه خواهد کرد.

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

ممکن است به این دسته‌بندی علاقه‌مند باشید: مطالب آموزشی کاتلین

 

آموزش نصب گریدل در اندروید استودیو

برای نصب و دانلود گریدل در Android Studio مراحل زیر را انجام دهید:

  • اگر در ایران هستید، VPN را قبل از باز کردن اپلیکیشن اندروید استودیو فعال کنید
  • سپس اندروید استودیو را باز کنید. یک پروژه جدید بسازید
  • منتظر بمانید تا گریدل و گریدل ورپر (Gradle Wrapper) به صورت اتوماتیک شروع به دانلود کند
  • پس از دانلود پروژه را در صورت نیاز sync کنید و شروع به استفاده کنید

شاید به این مطلب علاقه‌مند باشید: جت پک کامپوز (Jetpack Compose) در اندروید چیست؟

 

نصب آفلاین گریدل در Android Studio

برای نصب gradle به صورت دستی در اندروید استودیو مراحل زیر را انجام دهید:

  • برای دانلود گریدل (gradle) ابتدا به صفحه دانلود گریدل مراجعه کنید و آخرین نسخه را دانلود کنید که فایلی به صورت gradle-7.4-bin.zip خواهد بود
  • سپس اطلاعات درون فایل فشرده را در مسیر C:\Users\username\.gradle قرار دهید
  • اندروید استودیو را باز کنید و بر روی "Create New Project" کلیک کنید و یک پروژه جدید بسازید
  • کار تمام است. اکنون می‌توانید از گریدل به صورت آفلاین استفاده نمایید

 

حل مشکل گریدل (gradle) در اندروید استودیو

اگر شما هم مشکل سینک (sync) یا همان بیلد نشدن گریدل در اندروید استودیو را دارید و به دنبال رفع خطای گریدل هستید، نگران نباشید. شما تنها نیستید که با این مشکل مواجه می‌شوید! حتی توسعه دهندگان حرفه‌‌ای نیز ممکن است گاهی با این مشکل مواجه شوند و بنابراین از روش‌هایی برای حل این مشکل استفاده می‌کنند. اگر با این مشکل مواجه می‌شوید، می‌توانید به پست حل مشکل سینک (sync) نشدن گریدل در اندروید استودیو مراجعه کنید.

ممکن است این مطلب را دوست داشته باشید: زبان کاتلین یا زبان جاوا؟

 

مشکلات استفاده از گریدل

یکی از مشکلات گریدل، کند بودن بسیار زیاد آن در زمان بیلد اپلیکیشن است. متاسفانه گریدل بعضا ممکن است زمان طولانی را برای بیلد شدن صرف کند. این مشکل زمانی که در حال تست و توسعه اپلیکیشن هستیم، بیشتر آزار دهنده خواهد بود. برای جلوگیری از مشکلات کند بودن گریدل، پیشنهاد می‌کنیم از سخت‌افزار مناسب برای سیستم خود استفاده کنید. همچنین در صورت امکان از هارد SSD استفاده نمایید تا سرعت بیلد گریدل افزایش یابد و در نهایت در توسعه اپلیکیشن خود مشکلی نداشته باشید.

ممکن است به این مطلب علاقه‌مند باشید: آموزش و مثال جت پک کامپوز در اندروید

پلاگین گریدل اندروید (Android gradle plugin) یک سیستم ساخت برای اپلیکیشن‌های اندروید است. به کمک این پلاگین می‌توانید کد‌های منابع مختلف را با هم کامپایل کرده و از آن یک خروجی برای نصب بر روی دستگاه‌های اندرویدی یا شبیه ساز استفاده کرد.

پلاگین جاوا در گریدل یک لایه قبل از ساخت به پروژه اضافه می‌کند که می‌توان از آن برای تست و افزودن قابلیت‌های بیشتر به پروژه استفاده کرد.

gradlew یک فایل برای Gradle Wrapper است که باعث می‌شود پروژه را از محیط مستقل می‌کند.
اگر از اندروید استودیو استفاده می‌کنید، Gradle Wrapper به صورت پیشفرض نصب خواهد شد.

Gradle Wrapper باعث می‌شود که ساخت (build) پروژه با همان نسخه‌ای از گریدل که نصب است، انجام شود. در واقع تفاوت نسخه‌های گریدل تاثیری در ساخت (build) پروژه نخواهد داشت و اگر شخص دیگری پروژه را با نسخه دیگری از گریدل بخواهد build کند، به مشکل نخورد. بنابراین بطور خلاصه وظیفه سازگاری نسخه‌های مختلف گریدل را به عهده دارد.
اگر از Android Studio یا Intellij IDEA استفاده می‌کنید، این قابلیت به صورت اتوماتیک نصب خواهد شد.

گاهی اوقات در جمع‌آوری و ساخت (build) ممکن است مشکلی وجود داشته باشد. بنابراین با دستور clean می‌توانیم کامپایل را از نو انجام دهیم. این دستور باعث پاک شدن پوشه build می‌شود که در نتیجه آن تمام کلاس‌ها پاک خواهند شد. سپس پروژه برای یک کامپایل دوباره آماده می‌شود.

گریدل یک سیستم ساخت (build system) است که برای انجام کار‌هایی مانند ساخت، تست و گسترش پروژه استفاده می‌شود.
به زبان ساده از گریدل می‌توانید برای تست (دیباگ) پروژه و گرفتن خروجی (رلیز) اپلیکیشن استفاده کنید.

معمولا فایل‌های گریدل در این مسیر ذخیره می‌شوند:
C:\Users\\.gradle\gradle

مخازن (repository) این امکان را فراهم می‌سازند که dependency را از طریق آن دانلود کنید و یا dependency را به نسخه جدید‌تر ارتقا دهید. در واقع repository ها برای دانلود dependency ها هستند.
برای نمونه مخازن زیر قابلیت دانلود dependency در آن‌ها وجود دارد و می‌توان برای اندروید استودیو نیز از آن‌ها استفاده کرد:
  • Google
  • MavenCentral
  • JitPack

همانند گریدل، Maven نیز برای مدیریت پروژه در محیط توسعه جاوا استفاده می‌شود. بجای استفاده از DSL کاتلین یا گرووی، از XML در قالب فایل‌های pom.xml برای تنظیمات پروژه استفاده می‌کند.

گریدل یک ابزار build اتوماتیک مدرن است که از نحو DSL زبان‌های گرووی یا کاتلین برای تنظیمات خود استفاده می‌کند. گریدل مدرن‌تر است و بنابراین گزینه بهتری نسبت به maven از نظر سادگی، کارایی، مستندات و... است. همچنین گریدل فقط برای JVM استفاده نمی‌شود و برای هر محیط توسعه اپلیکیشنی قابل استفاده است.

ریپازیتوری همانطور که از اسمش پیداست، یک مخزن دانلود وابستگی (dependency) است که به کمک آن می‌توان وابستگی‌ها را از آن دانلود کرد و یا آن‌ها را ارتقا داد و به روز کرد.
2 نظر
در بحث پیرامون این مقاله شرکت کنید...
ارسال نظر :
پاسخ به