Derleme bağımlılıkları, projenizi başarıyla derlemek için gereken harici bileşenlerdir. Derlemeler kitaplıklara, eklentilere, alt projelere, Android SDK'sına, Kotlin ve Java derleyicileri gibi araçlara, Android Studio gibi geliştirme ortamlarına ve Gradle'a bağlı olabilir.
Her bağımlılık, başka bağımlılıklar gerektirebilir. Bunlara geçiş bağımlılıklarını diyoruz ve uygulamanız tarafından kullanılan toplam bağımlılıkları hızla artırabilirler. Kitaplık, araç veya Android SDK'sı gibi bir bağımlılığı yükseltmek istediğinizde bu yükseltme, diğer birçok bağımlılığı da yükselterek zincirleme bir etki yaratabilir.
Birçok kitaplık Anlamsal Sürümleme olarak bilinen bir şemayı kullandığından bu genellikle sorun oluşturmaz. Bu kitaplıklar, alt sürümleriyle uyumluluk sağlamak için yaptıkları değişikliklerin türlerini kısıtlar.
Anlamsal sürüm oluşturma, major.minor.patch
biçimini kullanır. Örneğin, 4.8.3 sürüm numarasında 4 major
sürümü, 8 minor
sürümü ve 3 patch
numarasıdır. major
bölümü değiştiğinde kitaplıkta API veya davranışta önemli değişiklikler olabilir. Bu durum derlemenizi veya uygulama davranışınızı etkileyebilir.
minor
(yeni özellikler) veya patch
(hata düzeltmeleri) bölümleri değiştiğinde kitaplık geliştiricileri, kitaplığın hâlâ uyumlu olduğunu ve uygulamanızı etkilemeyeceğini belirtmektedir.
Bu tür değişiklikleri izlemek önemlidir. Bu konuda size yardımcı olabilecek çeşitli bağımlılık yükseltme araçları vardır.
Yapınızdaki ilişkiler
Android derlemeleri aşağıdakiler arasında ilişkiler içerir:
- Kaynak kod: Kontrol sahibi olduğunuz kod ve kaynaklar
- Kitaplık bağımlılıkları: Projenizin ve alt projelerinizin derleme sırasında dahil ettiği harici kitaplıklar veya modüller
- Araçlar: Kaynak kodunuzu uygulamaya veya kitaplığa dönüştüren derleyiciler, eklentiler ve SDK'lar
Kaynak kodu
Kaynak kodunuz, uygulamanızda veya kitaplığınızda yazdığınız Kotlin ya da Java kodudur. (C++ kullanma hakkında ayrıntılı bilgi için Android NDK başlıklı makaleyi inceleyin.)
Kaynak kod, kitaplıklara (Kotlin ve Java çalışma zamanı kitaplıkları dahil) ve Android SDK'sına bağlıdır ve ilgili Kotlin veya Java derleyicisini gerektirir.
Bazı kaynak kodları, ek işlem gerektiren ek açıklamalar içerir. Örneğin, Jetpack Compose kodu yazıyorsanız Compose Kotlin derleyici eklentisi tarafından işlenmesi gereken @Composable
gibi ek açıklamalar eklersiniz. Diğer ek açıklamalar, Kotlin Simge İşlemcisi (KSP) veya ayrı ek açıklama işleme araçları tarafından işlenebilir.
Kitaplık bağımlılıkları
Kitaplıklar, uygulamanızın bir parçası olarak alınan bayt kodu içerir. Bu, Java JAR, Android kitaplığı (AAR) veya derlemenizdeki bir alt proje olabilir. Birçok kitaplık semantik sürümleme kullanır. Bu, yükseltme yapıldığında hangi kitaplıkların uyumlu kalacağını (veya kalacağını) anlamanıza yardımcı olabilir.
Kitaplıklar, yeniden kullanım için diğer kitaplıklara bağımlı olabilir. Buna geçişli bağımlılık denir. Bu, açıkça yönetmeniz gereken bağımlılıkları azaltır. Doğrudan kullandığınız bağımlılıkları belirtirsiniz ve Gradle, bu geçişli bağımlılıklarla birlikte bunları çeker. Doğrudan bağımlılıklarınızı yükselttikçe bu geçişli bağımlılıkların da yükseltilebileceğini unutmayın.
Bazen bir kitaplık, çalışma zamanında (minSdk
) veya derleme süresinde (compileSdk
) Android SDK'nın minimum sürümlerini gerektirebilir. Bu, bir kitaplık Android SDK'sında veya sağladığı JDK API'lerinde bulunan işlevleri kullandığında gereklidir. Uygulamanızın etkili minSdk
değeri, uygulamanız ve tüm doğrudan ve geçişli kitaplık bağımlılıkları tarafından istenen en yüksek minSdk
değeridir.
Bazı kitaplıkların kullanılması belirli bir Gradle eklentisinin kullanılmasını gerektirebilir. Bu yardımcı eklentiler genellikle, kitaplık özelliklerini kullanımınızı desteklemek için kod oluşturan veya kaynağınızın derlemesini değiştiren Kotlin Sembol İşlemcilerini veya diğer ek açıklama işlemcilerini yükler. Örneğin, Jetpack Room, bir veritabanındaki verileri almak ve değiştirmek için notlar ve bunları oluşturulan koda dönüştüren bir KSP içerir. Jetpack Compose, Compose derleyici eklentisinin, işlevin nasıl ve ne zaman yeniden çalıştırılacağını yönetmek için ek açıklamalı işlevleri değiştirmesini gerektirir.
Araçlar
Gradle |
Gradle, derleme dosyalarınızı okuyan ve uygulamanızı ya da kitaplığınızı oluşturan derleme aracıdır. Ayrıca, eklentilerin özelliklerini genişletmesi için bir API sağlar. Gradle, bir veya daha fazla Java sanal makinesinde birden çok işlem çalıştırır ve Java eklentileri, JDK'nın içindeki Java araçlarını çağırır. |
Gradle eklentileri |
Gradle eklentileri, yeni görevler ve yapılandırma tanımlayarak Gradle'i genişletir. Derlemenize bir eklenti uygulamak, derleme komut dosyalarınızda veri olarak yapılandırılan belirli derleme özelliklerini etkinleştirir. Android derlemeleri için en önemli Gradle eklentisi Android Gradle Eklentisi'dir (AGP). |
Derleyiciler |
Kotlin veya Java derleyicisi, kaynak kodunuzu yürütülebilir bayt koduna dönüştürür. Kotlin derleyicisi, harici analiz ve kod oluşturmanın doğrudan derleyici içinde çalıştırılmasını sağlayan, ayrıştırılmış kod yapısına erişen bir eklenti API'si sunar. |
Derleyici eklentileri |
Derleyici eklentileri, Kotlin derleyicisi kodunuzu analiz ederken Kotlin derleyicisinin içinde analiz ve kod oluşturma işlemi gerçekleştirir ve Gradle eklentilerini derlemeye uyguladığınızda yüklenir. |
Android SDK |
Android SDK'sı, Android'in belirli bir sürümüne yönelik Android Platformu ve Java API'lerini ve ilgili araçlarını içerir. Bu araçlar, SDK'yı yönetmenize, uygulamalarınızı oluşturmanıza, Android cihazlarla iletişim kurmanız ve bu cihazları taklit etmenize yardımcı olur. Android SDK'sının her sürümü, kaynak kodunuzun erişebileceği belirli Java API'leri ve bu API'leri Android'in önceki sürümlerinde kullanmak için şekillendirme desteği sağlar. |
JDK |
Java kaynak kodunu derlemek ve Java uygulamalarını çalıştırmak için Java kitaplıklarını ve yürütülebilir dosyalarını içeren Java Geliştirme Kiti. Android derlemesinde birkaç JDK kullanılır. Daha fazla bilgi için Android derlemelerindeki Java sürümleri bölümüne bakın. |
Gradle kapsamları
Gradle, kitaplık bağımlılıklarını farklı kapsamlarda (Gradle API'de yapılandırmalar olarak adlandırılır) gruplandırır. Böylece, derlemenizin farklı bölümlerinde kullanılacak farklı kitaplık bağımlılık grupları belirtebilirsiniz. Örneğin, JUnit gibi test kitaplıklarını yayınlanmış uygulamanıza veya kitaplığınıza dahil etmek istemeyebilirsiniz ancak birim testlerinizi oluşturup çalıştırırken bu kitaplıkları kullanmak istersiniz. Kapsamları, kodunuzu analiz etmek amacıyla simge veya not işlemcileri eklemek için de kullanırsınız.
Örneğin, AGP, bir bağımlılık özelliğinin alt projenizin kullanıcılarına gösterilip gösterilmeyeceğini belirtme yönteminiz olan implementation
ve api
kapsamlarını tanımlar.
Android derlemesinde kullanılan bu ve diğer kapsamların açıklamaları için Bağımlılıkları yapılandırma başlıklı makaleyi inceleyin.
Derleme dosyalarınızın dependencies
bloğuna kitaplık bağımlılıkları group:artifact:version
dizeleri olarak ekleyin:
Kotlin
// In a module-level build script // explicit dependency strings ("group:artifact:version") dependencies { implementation("com.example:library1:1.2.3") api("com.example:library2:1.1.1") }
Groovy
// In a module-level build script // explicit dependency strings ("group:artifact:version") dependencies { implementation 'com.example:library1:1.2.3' api 'com.example:library2:1.1.1' }
veya Sürüm Kataloğu'nda:
# Version catalog - gradle/libs.versions.toml
[versions]
exampleLib = "1.2.3"
examplePlugin = "2.3.4"
[libraries]
example-library = { group = "com.example", name = "library", version.ref = "exampleLib" }
[plugins]
example-plugin = { id = "com.example.plugin", version.ref = "examplePlugin" }
ve oluşturulan değişkenleri derleme dosyalarınızda belirtin:
Kotlin
// In a module-level build script // Using a version catalog plugins { alias(libs.plugins.example.plugin) } dependencies { implementation(libs.example.library) }
Groovy
// In a module-level build script // Using a version catalog plugins { alias(libs.plugins.example.plugin) } dependencies { implementation libs.example.library }