تتيح لنا تراخيص Gradle النسخية التسلسلية إضافة وصيانة الاعتمادات بطريقة سهلة وقابلة للتوسع. تنمو التطبيقات، وإدارة المشاريع التي تتألف من عدة أفرع للتطوير يزيد من وقت التجميع.
واحدة من الحلول المحتملة للتطرق إلى هذه المشكلة تتضمن تقسيم المشروع إلى عدة وحدات. تجميع هذه الوحدات بالتوازي وإعادة تجميع الأجزاء المعدلة فقط يقلل من الوقت الكلي للتجميع. ومع ذلك، تنشأ مشكلة: كيف يمكننا مشاركة المكتبات المشتركة بشكل فعال وإصداراتها المقابلة بينما نتجنب أخطاء التجميع والحاجة إلى فحص الملفات Gradle يدويًا في كل وحدة لتجنب مشاكل التزامن؟
تساعدنا تراخيص Gradle النسخية التسلسلية في توحيد جميع الاعتمادات في ملف واحد بكتابة مأمونة يمكنك استدعاؤها من وحداتك.
إنشاء ملف الإصدار
أولاً، علينا إنشاء ملفنا في مجلد Gradle. بشكل تقليدي، نستخدم اسم libs.version.toml
الموصى به الأدوات في تطوير Android.
سيحتوي هذا الملف على ثلاثة أقسام:
[versions]
[libraries]
[plugins]
- الإصدارات. إنها تعرض إصدارات الاعتمادات والبرامج النصية التي تستخدم في الكتلتين الأخريين
- المكتبات. يحتوي على الاعتمادات.
- البرامج النصية. يحتوي على البرامج النصية.
دعونا نعرض كمثال إصدار واعتمادات مكتبة Koin لحل التكليف الداخلي.
[versions]
koin = "3.4.0"
[libraries]
koin-core = { group = "io.insert-koin", name = "koin-core", version.ref = "koin" }
koin-android = { group = "io.insert-koin", name = "koin-android", version.ref = "koin" }
koin-androidx-compose = { group = "io.insert-koin", name = "koin-androidx-compose", version.ref = "koin" }
koin-androidx-workmanager = { group = "io.insert-koin", name = "koin-androidx-workmanager", version.ref = "koin" }
koin-test = { group = "io.insert-koin", name = "koin-test", version.ref = "koin" }
koin-test-junit4 = { group = "io.insert-koin", name = "koin-test-junit4", version.ref = "koin" }
ثم، لاستدعاء الاعتماد من أي وحدة، سنحتاج فقط إلى القيام بما يلي:
Dependencies {
implementation(libs.koin.core)
implementation(libs.koin.android)
}
إنشاء البرامج النصية الخاصة بك، وستكون جميع وحداتك دائمًا متزامنة
عندما قمنا بالفعل بنقل مركزياتنا ، وجدنا مشكلة. جميع الوحدات التي تحتاج إلى Koin ستضطر إلى تكرار نفس الأسطر. هنا ، يمكننا رؤية أمثلة واضحة على DRY (Don’t Repeat Yourself) ، وسنقوم بإنشاء زراعة برنامج لتوفيرنا من تكرار التضمين المتكرر لهذه المركبات.
في ملفنا build.gradle.kts
، سنتمكن من تسجيل برامج زراعتنا.
gradlePlugin {
plugins {
register("koin") {
id = "example.android.koin"
implementationClass = "AndroidKoinConventionPlugin"
}
}
}
بعد ذلك ، سننشأ برنامجنا ، وسنضيف مركبات هذا البرنامج باستخدام GVC.
class AndroidKoinConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
val libs = extensions.getByType<VersionCatalogsExtension>().named("libs")
dependencies {
"implementation"(libs.findLibrary("koin.core").get())
"implementation"(libs.findLibrary("koin.android").get())
"implementation"(libs.findLibrary("koin.androidx.compose").get())
"implementation"(libs.findLibrary("koin.androidx.workmanager").get())
"testImplementation"(libs.findLibrary("koin.test").get())
"testImplementation"(libs.findLibrary("koin.test.junit4").get())
}
}
}
}
الشيء الوحيد المتبقي هو الاتصال في وحداتنا ببرنامج Koin ، وإذا كان لدينا يوماً أن نحتاج إلى ترقية الإصدار ، فعلينا فقط الذهاب إلى ملف تعريفاتنا ، وسيتم تحديثها جميعًا عندما يتم مزامنة Gradle. على سبيل المثال ، ملف وحدة البيانات مع جميع مركباتها
plugins {
id("example.android.library")
id("example.android.koin")
}
android {
namespace = "com.example.core.data"
}
dependencies {
implementation(libs.kotlinx.coroutines.android)
}
مع كل هذا ، يمكننا إنشاء إضافات تجميع المركبات ، على سبيل المثال:
- مكتبة
- تكوين
- نكهات
- ميزة
- DI
- قاعدة بيانات
- اختبار
الاعتبارات
تعتبر دلائل إصدار Gradle لا تزال في مرحلة التطوير الكامل، ومن الجيد متابعة الأخطاء المعروفة والقيود التي يتم نشرها من قبل Android. توضح الأمثلة في هذا المقال مزايا دلائل إصدار Gradle وكيف يمكن أن تسهم في تسهيل حياتنا. إذا كنت تبحث عن تطبيق عملي لها، يمكنك رؤيته على GitHub الآن لـ Android.
Source:
https://dzone.com/articles/gradle-version-catalogs-on-android