Bu bölümde, kampanyanızı genişletmek istediğinizde yararlı olacak ileri düzey konular Android Gradle eklentisini kullanın veya kendi eklentinizi yazın.
Varyant bağımlılıklarını özel mantıkta yayınlama
Bir kitaplık, diğer projelerin veya alt projelerin yapabileceği işlevlere sahip olabilir seçin. Kitaplık yayınlama, kitaplığın oluşturulma sürecidir kullanımına sunmaktır. Kitaplıklar hangi bağımlılıkları emin olmanız gerekir.
Bu iki yapılandırmanın geçişli bağımlılıklarını her sınıf yolunun tüketici tarafından kullanılması gerekir. aşağıda açıklanmıştır:
variant_nameApiElements
: Bu yapılandırma, derleme sırasında tüketicilere sunulan geçişli bağımlılıkları ifade eder.variant_nameRuntimeElements
: Bu yapılandırmada şu bilgiler bulunur: tüketicilere sunulan geçişli bağımlılıkları analiz edeceksiniz.
Farklı yapılandırmalar arasındaki ilişkiler hakkında daha fazla bilgi edinmek için Java Kitaplığı'na gidin. eklenti yapılandırmalarına bakın.
Özel bağımlılık çözümü stratejileri
Bir proje, aynı kitaplığın iki farklı sürümüne bağımlılık içerebilir Bu da bağımlılık çatışmalarına yol açabilir. Örneğin, projeniz modülün A sürümüne ve geçişli olarak B modülü 3'e bağımlı olduğundan, bir bağımlılık sürümü çakışması olur.
Android Gradle eklentisi bu çakışmayı çözmek için aşağıdakileri kullanır. bağımlılık çözümü stratejisi: eklenti, farklı sürümlerin yüklü olduğunu her bir modülün bağımlılık grafiğinde olması, varsayılan olarak en yüksek sürüm numarasına sahip olmalıdır.
Ancak bu strateji her zaman istediğiniz gibi çalışmayabilir. bağımlılık çözümü stratejisinde göreviniz için gereken bir varyantın belirli bağımlılıklarını çözümleyebilirsiniz:
variant_nameCompileClasspath
: Bu yapılandırma Belirli bir varyantın derleme sınıf yolunun çözüm stratejisini içerir.variant_nameRuntimeClasspath
: Bu yapılandırma belirli bir varyantın çalışma zamanı sınıf yolu için çözüm stratejisini içerir.
Android Gradle eklentisinde, podcast'lerinize erişmek için kullanabileceğiniz alıcılar bulunur. her bir varyantın yapılandırma nesnelerini içerir. Böylece varyant API'sini kullanarak aşağıdaki örnekte gösterildiği gibi bağımlılık çözümünü sorgulayın:
Kotlin
android { applicationVariants.all { // Return compile configuration objects of a variant. compileConfiguration.resolutionStrategy { // Use Gradle's ResolutionStrategy API // to customize how this variant resolves dependencies. ... } // Return runtime configuration objects of a variant. runtimeConfiguration.resolutionStrategy { ... } // Return annotation processor configuration of a variant. annotationProcessorConfiguration.resolutionStrategy { ... } } }
Eski
android { applicationVariants.all { variant -> // Return compile configuration objects of a variant. variant.getCompileConfiguration().resolutionStrategy { // Use Gradle's ResolutionStrategy API // to customize how this variant resolves dependencies. ... } // Return runtime configuration objects of a variant. variant.getRuntimeConfiguration().resolutionStrategy { ... } // Return annotation processor configuration of a variant. variant.getAnnotationProcessorConfiguration().resolutionStrategy { ... } } }