احتمالا توی ورژن آخر اندروید استودیو دیدین که وقتی یه پروژه جدید ایجاد میکنید، Dependencyها دیگه به سبک قدیمی و شلوغ و stringهای پشت سر هم نیستن. بلکه خیلی تر و تمیز و مشابه تصویر پایین هستند.
و اگه روی هرکدوم از این ها که کلیک کنید وارد فایلی میشید که همه dependencyها در اونجا قرارداره به اسم libs.versions.toml. به کمک این فایل میتونیم همه dependencyهارو در یک قسمت هندل کنیم و همه ماژول های داخل پروژه به این فایل ارجاع داده میشن.
اسم این روش version catalog هست که توی این مقاله قراره راجع به اون بیشتر بدونیم.
شاید اگه قبلا برای مدیریت dependencyها از build.src، که یکی از روش هایی هست که قبلا ازش برای مدیریت dependency استفاده میشد، استفاده کرده باشین براتون سوال باشه که خب اصلا این چه امکانات اضافه ای به ما میده که قبلی رو رهاکنیم و بیایم سراغ این یکی!
اگه به تصویر بالا دقت کنین زیر یه سری ورژن ها علامت زرد رنگ warning وجود داره که با بردن موستون روی اونها میبینید که ورژن جدیدی از اون در دسترس هست و میتونید اونهارو به راحتی update کنید. علاوه بر این اگه پروژه تون مولتی ماژول باشه، توی روش build.src اگه dependency یکی از ماژولها رو آپدیت کنید همه ماژولها compile میشن. اما با این روش فقط اونهایی compile میشن که دارن ازش استفاده میکنن و سرعت بیلدتون بیشتر میشه که این خودش به تنهایی مزیت بزرگی محسوب میشه!
اگه پروژه ای دارین که libs.versions.toml رو نداره در مرحله اول کافیه اندروید استودیو رو درحالت project قراربدین و بعد داخل gradle یه فایل بسازین و اسمش رو libs.versions.toml قرار بدین.
تا اینجا یه فایل خالی دارین که باید داخل اون dependencyهای مدنظرتون رو اضافه کنید. پس اول ببینیم فرمت این فایل چجوری هست.
این فایل قسمت های مختلف داره و میتونین با [] از هم تفکیکشون کنید.
عکس دوم همین مقاله رو ببینید که فایل تصویر، سه قسمت versions, libraries, plugins داره. توی قسمت versions باید ورژن هر dependency رو بذارید، توی libraries خود dependencyها قرارمیگیره و قسمت plugins هم که مخصوص قرار دادن پلاگین هایی هست که تو پروژه بهش نیاز دارین.
برای اینکه dependencyهارو به سبک اندروید استودیو قراربدیم کافیه با فرمت زیر بنویسیم:
dependency-name = { group = "dependency.groupId", name = "dependency.name", version.ref = "dependency.version" }
برای مثال اگر این dependency رو داشته باشیم
androidx.core:core-ktx:1.10.1
تبدیل میشه به
[versions] coreKtx = "1.10.1" [libraries] androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
بعد از sync کردن هم داخل فایل gradle حالا خواهیم داشت
implementation(libs.androidx.core.ktx)
در اینجا libs که اشاره میکنه به فایلمون و باقی قسمت ها هم از تبدیل - به . در اسمی که گذاشتیم به دست میاد.
برای پلاگین ها هم مشابه همین عمل رو داریم با این تفاوت که بجای group از id استفاده میکنیم و داخل gradle هم بجای id خواهیم داشت alias. مشابه فرمت زیر:
toml: [versions] agp = "8.3.2" [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" } gradle: alias(libs.plugins.androidApplication)
حالا که با مزایای این روش آشنا شدین بهتون پیشنهاد میکنم که پروژه هاتون رو migrate کنید به version catalog - مخصوصا اگه با چند ماژول کار میکنین - تا سروکله زدن با gradle یکم براتون راحت تر بشه.