Plugin: به خود Gradle / build system قابلیت اضافه میکنه
Dependency: یه کتابخونهی کد یه که خود اپلیکیشن ازش استفاده میکنه
اول بفهمیم Gradle خودش چیه
تو پروژه Android، Gradle همون «سیستم ساختن پروژه»ـست (build system):
- کدهای .kt و .java رو کامپایل میکنه
- resourceها رو جمع میکنه (layout, drawable, string, …)
- ازشون APK / AAB میسازه
- تستها رو اجرا میکنه، lint، shrink، obfuscate و…
یعنی: وقتی روی Run یا Build میزنی: پشتصحنه Gradle داره کار میکنه.
حالا ما میخوایم به این Gradle بگیم:
پروژه من Android appـه زبانش Kotlinه از Compose استفاده میکنه و در خود app هم از یک سری کتابخونه مثل Retrofit, Room, … استفاده میکنم.
اینجاست که Plugin و Dependency وارد میشن؛ ولی نقششون فرق داره.
Plugin دقیقا چیه؟
افزونه برای Gradle یعنی یه تیکه کد که روی خود Gradle اجرا میشه، نه روی گوشی کاربر.
کارش اینه که:
- به Gradle یاد بده این پروژه از چه نوعیه
مثلا: Android Application؟ Android Library؟ Java Library؟
- به Gradle قابلیتهای جدید اضافه کنه
taskهای جدید: assembleDebug, bundleRelease, lint, test …
بلوکهای DSL جدید: android {}, kotlinOptions {}, composeOptions {}
1. com.android.application
به Gradle میگه:
این پروژه یک Android Application هست، نه یک Java ساده.-
بعد از این پلاگین، تازه میتونی بنویسی:
android { compileSdk = 35 ... }
به Gradle میگه:
برای این پروژه، باید Kotlin رو هم کامپایل کنی.
compiler Kotlin رو به chain build اضافه میکنه.
نکته مهم:
کد Plugin هیچوقت داخل APK کاربر نمیره.
فقط موقع build، روی سیستم توسعهدهنده/CI اجرا میشه.
Dependency .3
موقع compile کد تو دیده میشن
کلاسهاشون وارد APK / AAB میشن
وقتی اپ روی گوشی کاربر اجرا میشه، این کتابخونهها هم اونجا هستن
خلاصهی کوتاه
-
Plugin
روی Gradle اجرا میشه
فرایند build رو تعریف و مدیریت میکنه
توی APK نمیره
-
Dependency
توی کد اپ استفاده میشه
توی APK بستهبندی میشه
روی گوشی کاربر اجرا میشه
هر وقت شک کردی، از خودت بپرس:
«این چیزیه که موقع build لازمه، یا چیزی که داخل اپ و روی گوشی اجرا میشه؟»
اگه جواب: «موقع build» → احتمالاً Plugin
اگه جواب: «داخل اپ» → قطعاً Dependency