Şimdi Android’de Keşfetmek: Gradle Sözleşmesi Eklentileri | yazan Adam Ahmed | Tem, 2022

Şimdi Android'de Keşfetmek: Gradle Sözleşmesi Eklentileri |  yazan Adam Ahmed |  Tem, 2022
Resim kaynağı: Github

Daha sık olmasa da, projeler şu durumlardan biriyle sonuçlanır:

  1. birçok rastgele *.gradle(.kts) herkesin anlamadığı senaryolar.
  2. Çok karmaşık subprojects ve allprojects bloklar.
  3. 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:

  1. bu AndroidLibraryConventionPlugin uygular com.android.library ve org.jetbrains.kotlin.android eklentiler, kullanır configureKotlinAndroid() işlev KotlinAndroid.kt senin gibi şeyleri yapılandırmak için compileSdk , compileOptions, kotlinOptionsve configureFlavors() işlevinden Flavor.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.

Yukarıda belirtilen üç eklentiyi uygulayan Eklentiler bloğu ve modülün fazladan bağımlılığı yoksa bloğu tamamen kaldırabileceğinizi söyleyen iki yorum içeren bir bağımlılık bloğu veya modüle özgü bağımlılıkları buraya ekleyebilirsiniz.

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.

Kongre eklentilerinizi tanımlayabileceğiniz bir iç eklenti bloğu içeren bir gradlePlugin bloğu.  Üçüncü iç blok, kaydı okur ve eklentinizin hem kimliğini hem de uygulamasını tanımlar.  Kimlik, eklentinizi farklı modüllerde uygulamak için kullanılan bir dizedir ve uygulama, eklentinin uygulama sınıfını gösteren bir dizedir.

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

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.