Özel derleme mantığı uygulayın
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
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 {
...
}
}
}
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-07-27 UTC.
[[["Anlaması kolay","easyToUnderstand","thumb-up"],["Sorunumu çözdü","solvedMyProblem","thumb-up"],["Diğer","otherUp","thumb-up"]],[["İhtiyacım olan bilgiler yok","missingTheInformationINeed","thumb-down"],["Çok karmaşık / çok fazla adım var","tooComplicatedTooManySteps","thumb-down"],["Güncel değil","outOfDate","thumb-down"],["Çeviri sorunu","translationIssue","thumb-down"],["Örnek veya kod sorunu","samplesCodeIssue","thumb-down"],["Diğer","otherDown","thumb-down"]],["Son güncelleme tarihi: 2025-07-27 UTC."],[],[],null,["# Apply custom build logic\n\nThis section describes advanced topics that are useful when you want to extend\nthe Android Gradle plugin or write your own plugin.\n\nPublish variant dependencies to custom logic\n--------------------------------------------\n\nA library can have functionalities that other projects or sub-projects might\nwant to use. Publishing a library is the process by which the library is made\navailable to its consumers. Libraries can control which dependencies its\nconsumers have access to at compile time and runtime.\n\nThere are two separate configurations that hold the transitive dependencies of\neach classpath which must be used by consumers to consume the library as\ndescribed below:\n\n- \u003cvar translate=\"no\"\u003evariant_name\u003c/var\u003e`ApiElements`: This configuration holds the transitive dependencies that are available to consumers at compile time.\n- \u003cvar translate=\"no\"\u003evariant_name\u003c/var\u003e`RuntimeElements`: This configuration holds the transitive dependencies that are available to consumers at runtime.\n\nTo learn more about the relationships between the different configurations,\ngo to [The Java Library\nplugin configurations](https://docs.gradle.org/current/userguide/java_library_plugin.html#s\nec:java_library_configurations_graph).\n\nCustom dependency resolution strategies\n---------------------------------------\n\nA project may include a dependency on two different versions of the same library\nwhich can lead to dependency conflicts.\nFor example, if your project depends on version 1 of module A and version 2 of\nmodule B, and module A transitively depends on version 3 of module B,\nthere arises a dependency version conflict.\n\nTo resolve this conflict, the Android Gradle plugin uses the following\ndependency resolution strategy: when the plugin detects that different versions\nof the same module are in the dependency graph, by default, it chooses the one\nwith the highest version number.\n\nHowever, this strategy might not always work as you intend. To customize the\ndependency resolution strategy, use the following configurations to\nresolve specific dependencies of a variant that are needed for your task:\n\n- \u003cvar translate=\"no\"\u003evariant_name\u003c/var\u003e`CompileClasspath`: This configuration contains the resolution strategy for a given variant's compile classpath.\n- \u003cvar translate=\"no\"\u003evariant_name\u003c/var\u003e`RuntimeClasspath`: This configuration contains the resolution strategy for a given variant's runtime classpath.\n\nThe Android Gradle plugin includes getters that you can use to access the\nconfiguration objects of each variant. Thus, you can use the variant API to\nquery the dependency resolution as shown in the example below: \n\n### Kotlin\n\n```kotlin\nandroid {\n applicationVariants.all {\n // Return compile configuration objects of a variant.\n compileConfiguration.resolutionStrategy {\n // Use Gradle's https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html\n // to customize how this variant resolves dependencies.\n ...\n }\n // Return runtime configuration objects of a variant.\n runtimeConfiguration.resolutionStrategy {\n ...\n }\n // Return annotation processor configuration of a variant.\n annotationProcessorConfiguration.resolutionStrategy {\n ...\n }\n }\n}\n```\n\n### Groovy\n\n```groovy\nandroid {\n applicationVariants.all { variant -\u003e\n // Return compile configuration objects of a variant.\n variant.getCompileConfiguration().resolutionStrategy {\n // Use Gradle's https://docs.gradle.org/current/dsl/org.gradle.api.artifacts.ResolutionStrategy.html\n // to customize how this variant resolves dependencies.\n ...\n }\n // Return runtime configuration objects of a variant.\n variant.getRuntimeConfiguration().resolutionStrategy {\n ...\n }\n // Return annotation processor configuration of a variant.\n variant.getAnnotationProcessorConfiguration().resolutionStrategy {\n ...\n }\n }\n}\n```"]]