Android SDK'nın temel bileşenlerine kısa bir bakış
Kısaca: com.android.sdk, SDK'nın kök API'lerini ve kaynaklarını (platform kütüphaneleri ve araçları) temsil eder; com.android.tools.build, derleme ve paketlemeden sorumlu Gradle eklentisidir (Android Gradle Plugin, AGP); com.android.support ise AndroidX ile değiştirilen eski Support Library'dir. Aşağıda bunların ne yaptığını ve pratikte nasıl çalışılacağını bulabilirsiniz.
com.android.sdk nedir ve Android SDK'nın rolü
com.android.sdk, Android SDK'nın platform bileşenlerini genel olarak ifade eder: API seti, platform derlemeleri (platforms/android-
- build.gradle dosyasındaki compileSdk, derlemenin hangi platform sürümüne bağlı olduğunu belirtir (örneğin 34).
- SDK, eklentinin ve derleyicinin API doğrulaması ve referans çözümlemesi için kullandığı platform JAR/AAR dosyalarını içerir.
- CI ortamında gerekli platform paketlerini sdkmanager aracılığıyla kurun (veya Android Studio'da istediğiniz SDK sürümünü seçin).
Ne yapmalısınız:
- compileSdk değerini hedefiniz için önerilen sürüme eşit tutun (yeni özellikler ve kontroller için).
- AGP'nin projeyi doğru şekilde derleyebilmesi için Build Tools ve platformları ayrı ayrı güncelleyin.
com.android.tools.build — Android Gradle Plugin (AGP)
com.android.tools.build, projeye classpath 'com.android.tools.build:gradle:X.Y.Z' şeklinde ve/veya id 'com.android.application' eklentisi aracılığıyla eklenen AGP artefaktıdır. İşlevleri şunlardır:
- Java/Kotlin kodunun DEX/ART'a derlenmesi (minifikasyon için R8/ProGuard ile birlikte).
- Kaynakların işlenmesi ve paketlenmesi (aapt2), R sınıfının üretilmesi, manifest dosyalarının birleştirilmesi.
- APK/AAB oluşturma, derleme varyantlarını yönetme (buildTypes, productFlavors). Pratik öneriler:
- AGP ve Gradle sürümlerini senkronize edin (Android belgelerindeki uyumluluk matrisini kontrol edin).
- CI'da kararlı derlemeler için depoda Gradle Wrapper kullanın.
- Derlemeyi hızlandırmak için AGP ve eklentilerin uyumluluğuna göre önbellekleme ve yapılandırma önbelleğini etkinleştirin.
Derleme yavaşsa AGP sürümünü kontrol edin, Gradle yapılandırma önbelleğini etkinleştirin ve paralel derleme kullanın; minifikasyon için R8'i etkinleştirin (yeni AGP sürümlerinde varsayılan olarak etkindir).
com.android.support — bu nedir ve neden AndroidX'e geçilmeli
com.android.support, AndroidX ortaya çıkmadan önce geriye dönük uyumluluk ve widget'lar sağlayan Support Library setidir (AppCompat, RecyclerView, CardView vb.). 2018'den itibaren Google kütüphaneleri androidx ad alanına (AndroidX) taşıdı; burada artefaktlar kararlı bir sürüm şemasına sahiptir. Neden migrasyon önemlidir:
- com.android.support artık güncellenmiyor ve modern bağımlılıklarla çakışmalara neden oluyor.
- Yeni eklentiler ve kütüphanelerle yayınlama ve uyumluluk AndroidX gerektiriyor. Nasıl migrasyon yapılır:
- Android Studio'da: Refactor → Migrate to AndroidX yolunu izleyin veya bağımlılıkları manuel olarak değiştirin (örneğin androidx.appcompat:appcompat).
- Kodunuzdaki import ifadelerini güncelleyin ve üçüncü taraf bağımlılıkların uyumluluğunu kontrol edin.
Yeni projelerde com.android.support kullanmayın — bu genellikle sürüm çakışmalarına ve derleme/yayınlama sorunlarına yol açar.
Sık karşılaşılan hatalar
- AGP ve Gradle uyumsuzluğu: Proje senkronize edilemiyor — gerekli AGP sürümü için Gradle Wrapper'ı güncelleyin.
- Failed to resolve com.android.support: repositories içinde Google depoları eksik — mavenCentral() ve google() eklendiğinden emin olun.
- Eski compileSdk ile derleme: Yeni API'lere yapılan referanslarda hatalar oluşur — targetSdk'yi test etmeden değiştirmeden compileSdk'yi yükseltin.
- support ve AndroidX arasındaki bağımlılık çakışmaları: Jetifier kullanın veya tamamen AndroidX'e geçin.
SSS
- Her Android Studio güncellemesinde AGP'yi güncellemek gerekir mi? Genellikle evet: Studio'nun yeni sürümleri uyumlu AGP/Gradle bekler; gerektiğinde güncelleyin ve CI'ı test edin.
- Hangisi daha önemli — compileSdk mi yoksa targetSdk mi? compileSdk, derleme sırasında erişilebilir API'leri belirler; targetSdk uygulamanın çalışma zamanındaki davranışını etkiler. Yeni işlevler için compileSdk'yi yükseltin.
- Eski bir projede com.android.support kullanmaya devam edebilir miyim? Teknik olarak evet, ancak bu çakışma riskini artırır ve modern kütüphaneler ile eklentileri kullanmanızı engeller. AndroidX'e geçiş planlayın.