Min SDK sürümü / hedef SDK sürümü ile derleme SDK sürümü arasındaki fark nedir?


214

"Min sdk sürümü / target sdk sürümü" ile "sdk sürümünü derle" arasındaki farklar nelerdir? Ben min ve hedef sdk ne anlama geldiğini biliyorum, ama sdk derleme ne anlama geliyor?

Eclipse'de min / max ve target sdk var, ancak android stüdyosunda bu üç ayar var.


Şu anda 12 olarak targetsdkversion kullandığım bir uygulama üzerinde çalışıyorum ve tüm düzenlerim anormal bir şekilde çalışıyor sonra 23'e geri dönüyor ve bir cazibe gibi çalışıyor, bu yüzden ben targetsdk sürümü her zaman derlenmiş sürümle aynı olmalı
Shahid Sarwar

Yanıtlar:


232

Dk SDK sürümü uygulamanız yayınlanabilir Android SDK erken sürümüdür. Genellikle bunun nedeni önceki API'lerle ilgili bir sorun, eksik işlevsellik veya başka bir davranış sorunudur.

Hedef SDK sürümü Başvurunuz edildi sürümüdür hedeflenen çalıştırmak için. İdeal olarak, bunun nedeni bir çeşit optimal çalışma koşuludur. "Uygulamanızı 19 sürümü için" yapacak olsaydınız, burada belirtilirdi. Daha önceki veya sonraki sürümlerde yayınlanabilir, ancak amaçladığınız şey budur. Bu çoğunlukla uygulamanızın pazarda kullanım için ne kadar güncel olduğunu göstermek içindir.

Derleme SDK sürümü IDE (veya herhalde derleme diğer araçlar) Bir yayınlandığında uygulamanızı yapmak için kullandığı robot sürümüdür .apkdosyayı. Bu, uygulamanızı test ederken yararlıdır, çünkü uygulamanızı geliştirirken derlemek yaygın bir gereksinimdir. Bu bir APK'ya derlenecek sürüm olacağından, doğal olarak sürümünüzün sürümü olacaktır. Benzer şekilde, bunun hedef sdk sürümünüzle eşleşmesi önerilir.


Benim derleme sdk sürümü ve hedef sdk sürümü aynı. Bu, daha düşük API düzeyine sahip cihazlarda çalıştırdığımda Uygulamam kilitleniyor. Android'de yeniyim, şimdi nasıl ilerlemeliyim?
prgmrDev

2
@prgmrDev Uygulamanız 21'den düşük sürümlerde çökerse, büyük olasılıkla min SDK sürümünüzü 21 olarak ayarlamanız gerekir. Bu, uygulamanızı 21'den düşük hedeflerde düzeltmez, uygulamanızın alt sürümlerde desteklenmediğini unutmayın. Ayrıca, uygulamanızı tam olarak neyin kırdığını belirleme seçeneğiniz de var (sürüm 21'de nelerin değiştiğini) ve bu bağımlılığa dikkat çekmek için destek ekleyin, ancak bunun bir Android acemi kapsamında değil, çok fazla iş olacağını sanıyorum. projesi.
Matt

1
MinSdkVersion = 14 ayarlamam durumunda ne olur; targetSdkVersion = 23; ve SDK'yı 19'a mı?
thadeuszlay

5
@thadeuszlay sorunuz önemsizdir, çünkü biraz düşünmelisiniz, eğer sürüm 23 üzerinde çalışmayı hedeflerseniz, 19 ile derlemek nasıl mümkün olur! Formül minSdkVersion'ın takip ediniz <= targetSdkVersion <= compileSdkVersion
Asad

@Matte örneğin compileVersion 26 kullanırken, yanlışlıkla min sdk olan 21 sürümünde desteklenmeyen bir özellik veya java API kullanmak olabilir? Üzgünüm, burada bazı temel kavramlar elde değil
haart

83

Formül

minSdkVersion <= targetSdkVersion <= compileSdkVersion

minSdkVersion - Uygulamanın yüklenebileceği minimum Android sürümünü tanımlayan bir işaretleyicidir. Ayrıca Lint tarafından mevcut olmayan API çağrısını önlemek için kullanılır. Ayrıca İnşaat Süresi üzerinde de etkisi vardır. Böylece geliştirme sırasında minSdkVersion'u en üst düzeye çıkarmak için yapı aromaları kullanabilirsiniz. Android ekibinin bize sağladığı tüm iyileştirmeleri kullanarak daha hızlı yapı oluşturmanıza yardımcı olacaktır. Örneğin, Java 8'in bazı özellikleri yalnızca minSdkVersion'un belirli sürümlerinde kullanılabilir.

targetSdkVersion - Android sisteminin belirli davranış değişikliklerini açmasını söylüyor.

Örneğin:

  • Android 6.0'dan başlayarak (API seviye 23) Runtime Permissionstanıtıldı. targetSdkVersion22 veya daha düşük bir değere ayarlarsanız , uygulamanız bir kullanıcıdan çalışma zamanında izin istemez.

  • Android 8.0'dan (API düzey 26) başlayarak, hepsinin notificationsbir kanala atanması gerekir , aksi takdirde görünmez. Android 7.1 (API düzey 25) ve daha düşük sürümleri çalıştıran cihazlarda, kullanıcılar yalnızca uygulama başına bildirimleri yönetebilir (etkin bir şekilde her uygulamanın Android 7.1 ve önceki sürümlerinde yalnızca bir kanalı vardır).

  • Android 9'dan başlayarak (API seviye 28) Web-based data directories separated by process,. Eğer targetSdkVersion28+ ve birkaç oluşturmak WebViewfarklı süreçlerde alacakjava.lang.RuntimeException

compileSdkVersion - aslında SDK Platform sürümüdür ve Gradle'a Android SDK'nın derlemek için kullandığını söyler. Yeni özellikleri kullanmak veya .javaAndroid SDK dosyalarından hata ayıklamak istediğinizde compileSdkVersion ile ilgilenmelisiniz. Bir başka örnek, kullanmaya zorlayan AndroidX kullanmaktır compileSdkVersion- seviye 28. APK'nize compileSdkVersion dahil değildir : sadece adresinde kullanılır compile time. CompileSdkVersion öğenizi değiştirmek, çalışma zamanı davranışını değiştirmez. Örneğin yeni derleyici uyarıları / hataları oluşturabilir. Bu nedenle her zaman en son SDK ile derlemeniz önemle tavsiye edilir. Mevcut koddaki yeni derleme kontrollerinin tüm avantajlarından yararlanacak, yeni kullanımdan kaldırılmış API'lardan kaçınacak ve yeni API'ları kullanmaya hazır olacaksınız. Bir gerçek dahacompileSdkVersion >= Support Library version

Burada daha fazla bilgi edinebilirsiniz . Ayrıca Android 8.0'a geçiş örneğine bir göz atmanızı tavsiye ederim .


9
Burada en iyi cevap aslında targetSdkVersion ve compileSdkVersion arasındaki pratik farkı açıklıyor
Dean Wild

@ yoAlex5 Cevabınız için teşekkürler. TargetSdkVersion ve compileSdkVersion aynı durumları görüyorum. Neden android ayrı olarak iki yaptı biri işlemek için yeterli olamaz veya iki ayrı alanda yapma arkasında belirli bir nedeni var mı?
Manju

@Manju SO iş parçacığında daha fazlasını bulabilirsiniz stackoverflow.com/questions/26694108/…
yoAlex5

@ yoAlex5 ne demek 'Android sistemi belirli davranış değişikliklerini açmak için' açıklayabilir misiniz?
k_kumar

@atishr 'spesifik davranış değişiklikleri' 'Örneğin' bloğunda listelenmiştir
yoAlex5

74

Dk SDK sürümü sizin uygulamayı çalıştırmak için gerekli olan Android işletim sisteminin minimum versiyonudur.

Hedef SDK sürümü uygulama çalıştırmak için yaratılmış olduğunu Android'in versiyonudur.

Derleme SDK sürümü olduğu Android'in versiyonu inşa etmek araçları kullanır derlemek ve açıklaması, kaçak veya hata ayıklama amacıyla uygulama oluşturmak için.

Genellikle derleme sdk sürümü ve hedef sdk sürümü aynıdır.


23
Ve aynı artıları / eksileri olmadığında?
powder366

4

compileSdkVersion : compileSdkVersion, uygulamanın derlendiği API'nın sürümüdür. Bu, söz konusu API'nın sürümüne dahil olan Android API özelliklerini (ayrıca önceki tüm sürümlerin yanı sıra) kullanabileceğiniz anlamına gelir. API 16 özelliklerini denemenize ve kullanmanıza rağmen compileSdkVersion değerini 15 olarak ayarlarsanız, bir derleme hatası alırsınız. CompileSdkVersion değerini 16 olarak ayarlarsanız uygulamayı bir API 15 cihazında çalıştırabilirsiniz.

minSdkVersion : Min sdk sürümü, uygulamanızı çalıştırmak için gereken Android işletim sisteminin minimum sürümüdür.

targetSdkVersion : Hedef sdk sürümü, uygulamanızın çalışmayı hedeflediği sürümdür.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.