Android Studio'daki Gradle derleme sistemi, harici ikili programları veya diğer kitaplık modüllerini derlemenize bağımlılık olarak ekleyin. İlgili içeriği oluşturmak için kullanılan makinenizde veya uzaktaki bir depoda bulunabilir. Ayrıca, doğrudan dahil edilen geçişli bağımlılıklar da otomatik olarak dahil edilir. Bu sayfada, şunlar dahil olmak üzere Android projenizde bağımlılıkları nasıl kullanacağınız açıklanmaktadır: spesifik davranış ve yapılandırmalarla ilgili ayrıntılara Android Gradle eklentisi (AGP). Gradle hakkında daha ayrıntılı bir kavramsal rehber için nasıl etkilediğini de Bağımlılık yönetimi için Gradle rehberi , ancak Android projenizin yalnızca bağımlılık yapılandırmaları.
Kitaplık veya eklenti bağımlılığı ekleme
Derleme bağımlılığı eklemenin ve yönetmenin en iyi yolu sürüm kataloglarını, yeni projelerin varsayılan olarak kullandığı yöntemdir. Bu bölümde, proje yönetimiyle ilgili Android projeleri için kullanılan yapılandırma türleri; bu sayfaya Gradle belgeleri daha fazla seçenek için. Sürüm kataloglarını kullanan bir uygulama örneği için bkz. Şimdi Android'de. Halihazırda bağımlılıklar ayarlamışsanız sürüm katalogları olmadan ve çok modüllü bir projeniz varsa, taşıma.
Yerel bağımlılıklar ekleme ve yönetme (yaygın değildir) hakkında bilgi edinmek için Yerel bağımlılıklar.
Aşağıdaki örnekte, varsayılan olarak bir uzaktan ikili program
bağımlılık (Jetpack Macrobenchmark)
kitaplık), yerel kitaplık modülü
bağımlılık (myLibrary
) ve bir eklenti
bağımlılığı (Android Gradle eklentisi) oldu. Genel bilgiler
projenize eklemeniz için bazı adımlara ihtiyacınız var:
Sürüm kataloğu dosyasının
[versions]
bölümü.libs.versions.toml
(gradle
dizininden Android görünümünde Proje görünümü veya Gradle Komut Dosyaları):[versions] agp = "8.3.0" androidx-macro-benchmark = "1.2.2" my-library = "1.4" [libraries] ... [plugins] ...
Takma adlar kısa çizgi veya alt çizgi içerebilir. Bu takma adlar, iç içe yerleştirilmiş değerler oluşturur kullanabileceğiniz bir kaynaktır. Referanslar,
libs.versions.toml
kataloğununlibs
bölümü. Zaman kataloğunu kullanırken, Google Etiket Yöneticisi'ni kullanarak "libs."[libraries]
öğesinde bağımlılık için bir takma ad ekleyin ( uzak ikili programlar veya yerel kitaplık modülleri) veya[plugins]
( eklentileri)libs.versions.toml
dosyasının bölümlerini içerir.[versions] ... [libraries] androidx-benchmark-macro = { group = "androidx.benchmark", name = "benchmark-macro-junit4", version.ref = "androidx-macro-benchmark" } my-library = { group = "com.myapplication", name = "mylibrary", version.ref = "my-library" } [plugins] androidApplication = { id = "com.android.application", version.ref = "agp" }
Bazı kitaplıklar, kitaplık ailelerini ve sürümlerini gruplandırır. Web sitenize BOM, ve bu sürümleri sizin yerinize yönetmesine izin verip yeni sürüm kataloğu oluşturarak dosya oluşturabilir ve geliştirebilirsiniz. Görüntüleyin Ayrıntılar için Malzeme Listesi'ni kullanma başlıklı makaleye göz atın.
Şunun derleme komut dosyasına bağımlılık takma adına bir referans ekleyin: veya bağımlılık gerektiren modüller oluşturabilirsiniz. Takma adı dönüştürün alt çizgi ve tire noktalara dönüştürür. Modül düzeyinde oluşturma komut dosyamız şöyle görünecektir:
Kotlin
plugins { alias(libs.plugins.androidApplication) } dependencies { implementation(libs.androidx.benchmark.macro) implementation(libs.my.library) }
Eski
plugins { alias 'libs.plugins.androidApplication' } dependencies { implementation libs.androidx.benchmark.macro implementation libs.my.library }
Eklenti referanslarında, katalog adından sonra
plugins
ve sürüm referansları, katalog adından (sürüm)versions
sonra referanslar yaygın değildir; Bağımlılıklar konusuna bakın için aynı sürüm numaralarını kullanın.) Kütüphane referanslarlibraries
niteleyici içermediğinden Bir kitaplığın başındaversions
veyaplugins
takma ad'dır.
Bağımlılıkları yapılandırma
dependencies
blokunda, aşağıdakilerden birini kullanarak bir kitaplık bağımlılığı tanımlayabilirsiniz:
birkaç farklı bağımlılık yapılandırmasının (ör. implementation
)
önce). Her bağımlılık yapılandırması, Gradle'a farklı
ve bağımlılığın nasıl kullanılacağına dair talimatlar. Aşağıdaki tabloda her bir
Android projenizde bağımlılık için kullanabileceğiniz yapılandırma sayısı.
Yapılandırma | Davranış |
---|---|
implementation |
Gradle, derleme sınıf yoluna bağımlılığı ekler ve
bağımlılığı derleme çıkışına paketler.
modülü bir implementation bağımlılığı yapılandırdığında
modülün bazı güvenlik verilerini sızdırmasını istemediğinizi
diğer modüllere bağımlılığının ortaya çıkmasıdır. Yani bağımlılık
şu anki modüle bağlı diğer modüllerde kullanılamaz
modülünü kullanabilirsiniz.
Şunun yerine bu bağımlılık yapılandırmasını kullanma:
|
api |
Gradle, derleme sınıf yoluna ve derlemeye bağımlılığı ekler
çıktı. Bir modül api bağımlılığı içerdiğinde
modülün geçişli olarak dışa aktarmak istediğini Gradle'a bildirerek
sunulabilmesini sağlamak, böylece diğer modüllere
hem çalışma zamanı hem de derleme süresini destekler.
Bu yapılandırmayı dikkatli bir şekilde ve yalnızca
diğer yukarı akış tüketicilerine geçişli olarak ihracat yapmanız gerekir. Bir
|
compileOnly |
Gradle, bağımlılığı yalnızca derleme sınıf yoluna ekler
(yani derleme çıkışına eklenmez). Bu, özellikle de
bir Android modülü oluşturuyorsanız ve
olsa da çalışma zamanında mevcut olması isteğe bağlıdır. Örneğin,
Örneğin, yalnızca derleme zamanı ek açıklamaları içeren (genellikle kod oluşturmak için kullanılır ancak çoğu zaman derleme çıktısına dahil edilmez) bir kitaplığa bağımlıysanız bu kitaplığı compileOnly olarak işaretleyebilirsiniz.
Bu yapılandırmayı kullanırsanız kitaplık modülünüz bağımlılığın mevcut olup olmadığını kontrol etmek için bir çalışma zamanı koşulu ekleme kullanmaya devam etmesini sağlamak için de davranışlarını işlevini kullanın. Bu da reklam öğelerinin boyutunu uygulamanızın son hâlini değerlendirin.
Not: |
runtimeOnly |
Gradle, bağımlılığı yalnızca derleme çıkışına ekler.
yardımcı olabilir. Yani, derleme sınıf yoluna eklenmez.
Bu ad, Android'de nadiren kullanılır ancak sunucuda yaygın olarak kullanılır.
günlük kaydı uygulamaları sağlayan uygulamalardır. Örneğin,
kitaplığının,
hakkında bilgi edindiniz. Söz konusu kitaplığın kullanıcıları, kitaplığı
implementation bağımlılığı ve bir
Gerçek günlük kaydı için runtimeOnly bağımlılığı
bahsedeceğiz.
|
ksp |
Bu yapılandırmalar, ek açıklamaları işleyen kitaplıklar sağlar ve diğer simgeleri kodlayın. Genellikle veya ek kod oluşturarak, başvurabileceğiniz biraz zaman alabilir. Böyle bir bağımlılığı eklemek için Android Gradle eklentisi, bağımlılığın bir ek açıklama olduğunu varsayar işlemcisini ekleyin:
Eklenti, sınıf yolunu derler, bir derleme hatası oluşturur.
Hangi yapılandırmanın kullanılacağına karar verirken takip etmek için:
Ek açıklama işlemcilerini kullanma hakkında daha fazla bilgi için Ek açıklama işlemcileri ekleyin. |
lintChecks |
Lint içeren bir kitaplık eklemek için bu yapılandırmayı kullanın Android uygulamanızı oluştururken Gradle'ın yürütmesini istediğiniz kontroller belirler.
|
lintPublish |
Android kitaplık projelerinde lint eklemek için bu yapılandırmayı kullanın
Gradle'ın bir lint.jar dosyası olarak derlemesini istediğiniz kontrolleri
AAR'nize ekleyin. Bu durum,
AAR'yi kullanarak bu hata analizi kontrollerini de uygulayabilirsiniz. Bu hesabı önceden
lint'i dahil etmek için lintChecks bağımlılık yapılandırması
AAR'de bu bağımlıları taşımanız gerekir.
bunun yerine lintPublish yapılandırmasını kullanın.
Kotlindependencies { // Executes lint checks from the ":checks" project at build time. lintChecks(project(":checks")) // Compiles lint checks from the ":checks-to-publish" into a // lint.jar file and publishes it to your Android library. lintPublish(project(":checks-to-publish")) } Eskidependencies { // Executes lint checks from the ':checks' project at build time. lintChecks project(':checks') // Compiles lint checks from the ':checks-to-publish' into a // lint.jar file and publishes it to your Android library. lintPublish project(':checks-to-publish') } |
Belirli bir derleme varyantı için bağımlılıkları yapılandırma
Önceki yapılandırmaların tümü, tüm derleme varyantlarına bağımlılık uygular. Eğer Bunun yerine yalnızca belirli bir derleme için bağımlılık tanımlamak istiyorsunuz değişken kaynak kümesi veya test kaynağı için kümesi kullanıyorsanız yapılandırmada büyük harf adını ve önüne derleme varyantının veya test kaynağı grubunun adını ekleyin.
Örneğin, yalnızca "ücretsiz" değerine bir uzak ikili program bağımlılığı eklemek için ürün
lezzetini implementation
yapılandırmasını kullanarak almak için şunu kullanın:
Kotlin
dependencies { freeImplementation("com.google.firebase:firebase-ads:21.5.1") }
Eski
dependencies { freeImplementation 'com.google.firebase:firebase-ads:21.5.1' }
Ancak bir ürünü birleştiren varyant için bağımlılık eklemek istiyorsanız armağan ve derleme türü olarak tanımlarsanız yapılandırma adını ilk kullanıma hazırlamanız gerekir:
Kotlin
// Initializes a placeholder for the freeDebugImplementation dependency configuration. val freeDebugImplementation by configurations.creating dependencies { freeDebugImplementation(project(":free-support")) }
Eski
configurations { // Initializes a placeholder for the freeDebugImplementation dependency configuration. freeDebugImplementation {} } dependencies { freeDebugImplementation project(":free-support") }
Yerel testleriniz ve araçlı testlerinize implementation
bağımlılıkları eklemek için
kodu aşağıdaki gibi görünür:
Kotlin
dependencies { // Adds a remote binary dependency only for local tests. testImplementation("junit:junit:4.12") // Adds a remote binary dependency only for the instrumented test APK. androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") }
Eski
dependencies { // Adds a remote binary dependency only for local tests. testImplementation 'junit:junit:4.12' // Adds a remote binary dependency only for the instrumented test APK. androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' }
Ancak belirli yapılandırmalar bu durumda anlamlı olmaz. Örneğin,
diğer modüller androidTest
ürününe bağlı olmadığından
androidTestApi
yapılandırmasını kullanıyorsanız uyarı verir:
WARNING: Configuration 'androidTestApi' is obsolete and has been replaced with 'androidTestImplementation'.
Bağımlılık sırası
Bağımlılıklarınızı listelediğiniz sıra, bağımlılıklarınızın her birinin önceliğini gösterir: ilk kitaplık ikinciden daha önceliklidir, ikinci kitaplık ise daha önceliklidir öncelik üçüncüden daha fazla olabilir. Bu sıra aşağıdaki durumlarda önemlidir: kaynakların birleştirilmesi manifest öğeleri birleştirildi çıkarmanıza yardımcı olabilir.
Örneğin, projenizde aşağıdakiler beyan ediliyorsa:
LIB_A
veLIB_B
öğelerine bağımlılık (bu sırayla)LIB_A
iseLIB_C
veLIB_D
metriğine bağlıdır (bu sırayla)- Ayrıca
LIB_B
,LIB_C
metriğine de bağlıdır
Bu durumda sabit bağımlılık sırası aşağıdaki gibi olacaktır:
LIB_A
LIB_D
LIB_B
LIB_C
Bu, hem LIB_A
hem de LIB_B
öğesinin geçersiz kılmasını sağlar.
LIB_C
; ve LIB_D
hâlâ şuna göre daha yüksek önceliğe sahip:
LIB_B
nedeniyle LIB_A
(buna bağlı olarak değişir)
LIB_B
ile karşılaştırıldığında daha yüksek önceliğe sahip.
Farklı projelerden alınan manifest dosyaları hakkında daha fazla bilgi kaynaklar/bağımlılıklar birleştirilir, bkz. Birden çok manifest dosyasını birleştirme.
Play Console için bağımlılık bilgileri
AGP, uygulamanızı oluştururken kitaplığı tanımlayan meta verileri dahil eder olduğunu tespit etmenizi sağlar. Google Play, uygulamanızı yüklerken Console, SDK'larla ilgili bilinen sorunlar hakkında uyarı sağlamak için bu meta verileri inceler ve bağımlılıklarını gösterir ve bazı durumlarda, kullanabileceğiniz yardımcı olmaktır.
Veriler bir Google Play imzalama anahtarı tarafından sıkıştırılır, şifrelenir ve
sürüm uygulamanızın imza bloğu. Bu bağımlılıkları korumayı
güvenli ve olumlu bir kullanıcı deneyimi için
dosyaları dahil etmelisiniz. Kapsam dışında kalmak için
takip ediliyor
dependenciesInfo
bloğunu modülünüzün build.gradle.kts
dosyasında bulabilirsiniz.
android {
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}
Politikalarımız ve bağımlılıklarla ilgili olası sorunlar hakkında daha fazla bilgi için destek sayfamızı uygulamanızda üçüncü taraf SDK'lar kullanma.
SDK analizleri
Android Studio, sürüm katalog dosyasında ve Projede lint uyarıları gösteriyor Şurada herkese açık SDK'lar için Yapı İletişim Kutusu: Aşağıdaki sorunlar söz konusu olduğunda Google Play SDK Dizini:
- SDK'lar, yazarları tarafından "güncel değil" olarak işaretlenir.
- SDK'lar, Play politikalarını ihlal ediyor.
Uyarılar bu bağımlılıkları güncellemeniz gerektiğini gösteren sinyallerdir çünkü eski sürümlerin kullanılması Google Play'de uygulama yayınlamanızı engelleyebilir kullanıma sunmuş olursunuz.
Sürüm katalogları olmadan derleme bağımlılıkları ekleme
Bağımlılıkları eklemek ve yönetmek için sürüm kataloglarını kullanmanızı öneririz ancak ihtiyaç duymayabilir. sürüm katalogları:
Kotlin
plugins { id("com.android.application") } android { ... } dependencies { // Dependency on a remote binary implementation("com.example.android:app-magic:12.3") // Dependency on a local library module implementation(project(":mylibrary")) }
Eski
plugins { id 'com.android.application' } android { ... } dependencies { // Dependency on a remote binary implementation 'com.example.android:app-magic:12.3' // Dependency on a local library module implementation project(':mylibrary') }
Bu derleme dosyası "app-magic"in 12.3 sürümüne bağımlılık bildiriyor "com.example.android" kitaplığının içindeki ad alanı grubudur. Uzak ikili program bağımlılık beyanı şu ifadenin kısaltmasıdır:
Kotlin
implementation(group = "com.example.android", name = "app-magic", version = "12.3")
Eski
implementation group: 'com.example.android', name: 'app-magic', version: '12.3'
Derleme dosyası ayrıca adlı Android kitaplığı modülüne bağımlılığı da bildirir
"mylibrary"; bu ad, şurada bir include:
ile tanımlanan kitaplık adıyla eşleşmelidir:
settings.gradle.kts
dosyanız. Derleme sistemi, uygulamanızı derlerken
kitaplık modülünü derler ve sonuç olarak elde edilen derlenmiş içeriği
uygulamasını indirin.
Derleme dosyası ayrıca Android Gradle eklentisine bağımlılığı da bildirir
(com.application.android
). Aynı
eklentisine sahip değilseniz derleme sınıf yolunda eklentinin yalnızca tek bir sürümüne sahip olabilirsiniz.
entegre eder. Modülün her birinde sürümü belirtmek yerine
eklenti bağımlılığını kök derleme komut dosyasına eklemeniz gerekir
belirtin ve uygulanmayacağını belirtin. apply false
eklendiğinde sağlanan bilgiler
Eklentinin sürümünü not etmek ancak kök derlemede kullanmamak için Gradle yapın.
Bu plugins
bloğu dışında kök derleme komut dosyası genellikle boş olur.
Kotlin
plugins { id("org.jetbrains.kotlin.android") version "1.9.0" apply false }
Eski
plugins { id ‘com.android.application’ version ‘8.3.0-rc02’ apply false }
Tek modüllü bir projeniz varsa sürümü açıkça modül düzeyinde derleme komut dosyasını kullanın ve proje düzeyindeki derleme komut dosyasını boş bırakın:
Kotlin
plugins { id("com.android.application") version "8.3.0" }
Eski
plugins { id 'com.android.application' version '8.3.0-rc02' }