
Daha sık olmasa da, projeler şu durumlardan biriyle sonuçlanır:
- birçok rastgele
*.gradle(.kts)
herkesin anlamadığı senaryolar. - Çok karmaşık
subprojects
veallprojects
bloklar. - A
buildSrc
yapı mantığının çoğunu barındıran dizin.
İlk ikisi, satırda çok fazla soruna neden olabilir, çünkü geliştiriciler yeni modüller oluştururken bu komut dosyalarını kopyalamaya/yapıştırmaya meyilli olduğu için çok fazla kod çoğaltması ile karşılaşırsınız ya da çoğunu gereksiz yere uygulayan büyük yapılandırma blokları ile sonuçlanırsınız. her modüle yapı mantığınız. Üçüncü seçenek, kod çoğaltma açısından biraz daha iyidir, ancak buildSrc
harika değil çünkü içindeki herhangi bir şeyde her değişiklik yaptığınızda derleme önbelleğini geçersiz kılıyor ve her değişiklikte etkin bir şekilde temiz bir derlemeye neden oluyor.
Sözleşme Eklentileri Gradle’ın yapı mantığınızı alt modüller arasında paylaşma ve yukarıdaki endişeleri giderme yöntemidir ve Şimdi Android’de (NiA) uygulaması bundan tam olarak yararlanır.
Bu eklentiler eklenebilir ve birleştirilebilir ve yalnızca tek bir sorumluluğu yerine getirmeye çalışır. Modüller daha sonra ihtiyaç duydukları konfigürasyonları seçebilir ve seçebilir.
Gördüğümüz ilk şey burada gibi farklı eklentilerin uygulayabileceği yapılandırma mantığına sahip bazı dosyalardır. AndroidCompose.kt
, KotlinAndroid.kt
ve Flavor.kt
Bunların hepsinin nasıl birbirine bağlı olduğunu gösteren kod tabanından bazı gerçekten iyi örnekler şunlardır:
- bu
AndroidLibraryConventionPlugin
uygularcom.android.library
veorg.jetbrains.kotlin.android
eklentiler, kullanırconfigureKotlinAndroid()
işlevKotlinAndroid.kt
senin gibi şeyleri yapılandırmak içincompileSdk
,compileOptions
,kotlinOptions
veconfigureFlavors()
işlevindenFlavor.kt
proje lezzetlerini yapılandırmak için dosya.
2. AndroidFeatureConventionPlugin
aynı eklentileri yukarıdaki artıdan uygular org.jetbrains.kotlin.kapt
çünkü NiA’daki tüm özellik modülleri, kod üretimi için KAPT gerektiren Hilt gibi kitaplıkları kullanır. Ayrıca birçok ortak ekler dependencies
gibi :core
modüller ve bazı kütüphaneler.
3. AndroidLibraryComposeConventionPlugin
kullanır configureAndroidCompose()
Compose’u uygulandığı herhangi bir modülde çalışacak şekilde yapılandırma işlevi.
Sonuç, özellik modüllerinizin derleme komut dosyalarının çoğunlukla böyle görünmesidir, bu şekilde meli. Satırda anlaşılması zor olan çoğaltma veya gereksiz komut dosyaları yok. Sadece modülünüzün ihtiyaç duyduğu şeyler.

Bu eklentilerin ne anlama geldiğini hemen görebilirsiniz. katkılı ve birleştirilebilir. Oluştur kullanmayan bir modül ister misiniz? Sadece ilk iki eklentiyi uygulayın. Oluştur’u kullanmak ister misiniz? Sadece üçüncüyü ekleyin. NiA’da buna iyi bir örnek, build.gradle.kts
komut dosyası :feature-author
görebileceğiniz modül burada.
Meraklılarınız, eklenti kimliklerinin dosya adlarından farklı olduğunu fark etmiş olabilir, çünkü özel eklentilerinizi projenizin geri kalanına maruz kalacak şekilde kaydettiğinizde, onlara bir kimlik ve uygulama verilir. Görülebilir burada.

Beni ekle Linkedin ve heyecan Gradle ve Android hakkında konuşmak için! 🙂