Google Play, uygulamanızı platform sürümü şartlarını karşılamayan cihazlardan filtrelemek için uygulama manifest dosyanızda beyan edilen <uses-sdk>
özellikleri kullanır. Bu özellikleri belirlemeden önce Google Play filtrelerini anladığınızdan emin olun.
- söz dizimi:
<uses-sdk android:minSdkVersion="integer" android:targetSdkVersion="integer" android:maxSdkVersion="integer" />
- Şunlarda bulunur:
<manifest>
- description:
Bir uygulamanın Android platformunun bir veya daha fazla sürümüyle uyumluluğunu API düzeyi tam sayısıyla ifade etmenizi sağlar. Bir uygulama tarafından ifade edilen API düzeyi, belirli bir Android sisteminin API düzeyiyle karşılaştırılır. Bu düzey, farklı Android cihazlar arasında değişiklik gösterebilir.
Adına rağmen bu öğe, yazılım geliştirme kiti (SDK) veya Android platformunun sürüm numarasını değil API düzeyini belirtmek için kullanılır. API düzeyi her zaman tek bir tamsayıdır. API düzeyini, ilişkili Android sürüm numarasından türetemezsiniz. Örneğin, ana sürüm veya ana ve küçük sürümlerin toplamıyla aynı değildir.
Uygulamalarınız için sürüm oluşturma ile ilgili dokümanı da okuyun.
- özellikleri:
-
android:minSdkVersion
- Uygulamanın çalışması için gereken minimum API düzeyini belirten bir tam sayı. Android sistemi, sistemin API düzeyi bu özellikte belirtilen değerden düşükse kullanıcının uygulamayı yüklemesini engeller. Bu özelliği her zaman belirtin.
Dikkat: Bu özelliği belirtmezseniz sistem, varsayılan değer olarak "1 " değerini kullanır. Bu değer, uygulamanızın Android'in tüm sürümleriyle uyumlu olduğunu gösterir. Değildir ve doğru
minSdkVersion
'yi belirtmediyseniz uygulama, uyumlu olmayan bir API düzeyine sahip bir sisteme yüklendiğinde, kullanılamayan API'lere erişmeye çalışırken çalışma zamanında kilitlenir. Bu nedenle,minSdkVersion
özelliğinde uygun API düzeyini belirttiğinizden emin olun. android:targetSdkVersion
- Uygulamanın hedeflediği API düzeyini belirten bir tam sayı. Ayarlanmazsa varsayılan değer
minSdkVersion
için verilen değere eşittir.Bu özellik, sistemi hedef sürümle test ettiğinizi bilgilendirir ve sistem, uygulamanızın hedef sürümle ileriye dönük uyumluluğunu korumak için herhangi bir uyumluluk davranışını etkinleştirmez. Uygulama, daha eski sürümlerde (
minSdkVersion
'e kadar) çalışmaya devam edebilir.Android her yeni sürümde geliştiğinden bazı davranışlar, hatta görünümler bile değişebilir. Ancak platformun API düzeyi, uygulamanızın
targetSdkVersion
tarafından beyan edilen sürümden yüksekse sistem, uygulamanızın beklediğiniz şekilde çalışmaya devam etmesi için uyumluluk davranışlarını etkinleştirebilir.targetSdkVersion
değerini, çalıştığı platformun API düzeyiyle eşleşecek şekilde belirterek bu tür uyumluluk davranışlarını devre dışı bırakabilirsiniz.Örneğin, bu değeri "11" veya daha yüksek bir değere ayarlamak, sistemin Android 3.0 veya sonraki sürümlerde çalışırken Holo varsayılan temasını uygulamanıza uygulamasına olanak tanır ve API düzeyi 11 desteği daha büyük ekranları dolaylı olarak desteklediği için daha büyük ekranlarda çalışırken ekran uyumluluk modunu devre dışı bırakır.
Sistem, bu özellik için belirlediğiniz değere bağlı olarak birçok uyumluluk davranışını etkinleştirebilir. Bu davranışlardan bazıları,
Build.VERSION_CODES
referansında ilgili platform sürümleriyle açıklanmaktadır.Uygulamanızı her Android sürümüyle birlikte kullanmak için bu özelliğin değerini en son API düzeyiyle eşleşecek şekilde artırın, ardından uygulamanızı ilgili platform sürümünde ayrıntılı olarak test edin.
Kullanıma sunulduğu API düzeyi: 4
- Uygulamanın çalıştırılması için tasarlandığı maksimum API düzeyini belirten bir tam sayı.
Android 1.5, 1.6, 2.0 ve 2.0.1'de sistem, bir uygulamayı yüklerken ve sistem güncellemesinden sonra uygulamayı yeniden doğrularken bu özelliğin değerini kontrol eder. Her iki durumda da, uygulamanın
maxSdkVersion
özelliği, sistemin kullandığı API düzeyinden düşükse sistem uygulamanın yüklenmesine izin vermez. Sistem güncellemesinden sonra yeniden doğrulama yapıldığında uygulamanız cihazdan kaldırılır.Bu özelliğin, sistem güncellemelerinden sonra uygulamanızı nasıl etkileyebileceğini göstermek için aşağıdaki örneği inceleyin:
Manifest dosyasında
maxSdkVersion="5"
beyan eden bir uygulama Google Play'de yayınlanır. Cihazında Android 1.6 (API düzeyi 4) çalıştıran bir kullanıcı uygulamayı indirip yükler. Birkaç hafta sonra kullanıcı, Android 2.0 (API düzeyi 5) için kablosuz sistem güncellemesi alır. Güncelleme yüklendikten sonra sistem, uygulamanınmaxSdkVersion
değerini kontrol eder ve başarıyla yeniden doğrular.Uygulama normal şekilde çalışır. Ancak bir süre sonra cihaza başka bir sistem güncellemesi gelir. Bu güncelleme, Android 2.0.1'e (API düzeyi 6) yöneliktir. Güncelleme sonrasında sistem, kendi API düzeyi (6) artık uygulama tarafından desteklenen maksimum düzeyden (5) daha yüksek olduğundan uygulamayı yeniden doğrulayamaz. Sistem, uygulamanın kullanıcı tarafından görülmesini engeller ve uygulamayı cihazdan kaldırır.
Uyarı: Bu özelliği belirtmenizi önermeyiz. Öncelikle, özelliği uygulamanızın Android platformunun yeni sürümlerine yayınlandıkça dağıtılmasını engellemek için ayarlamanıza gerek yoktur. Platformun yeni sürümleri, tasarım gereği tamamen geriye dönük uyumludur. Uygulamanız, yalnızca standart API'leri kullanıp geliştirmeyle ilgili en iyi uygulamalara uyduğu sürece yeni sürümlerde düzgün çalışır. İkinci olarak, bazı durumlarda özelliği belirtmek, sistem daha yüksek bir API düzeyine güncellendikten sonra uygulamanızın kullanıcıların cihazlarından kaldırılmasına neden olabilir. Uygulamanızın yüklenmesi muhtemel çoğu cihaz, kablosuz olarak düzenli sistem güncellemeleri alır. Bu nedenle, bu özelliği ayarlamadan önce bu güncellemelerin uygulamanız üzerindeki etkisini göz önünde bulundurun.
Kullanıma sunulduğu API düzeyi: 4
Android'in bazı sürümlerinde (Android 2.0.1'den sonraki sürümler), yükleme veya yeniden doğrulama sırasındamaxSdkVersion
özelliği kontrol edilmez ya da zorunlu kılınmaz. Ancak Google Play, kullanıcılara indirilebilir uygulamalar sunarken bu özelliği filtre olarak kullanmaya devam eder.
- kullanıma sunulduğu sürüm:
- API düzeyi 1
API düzeyi nedir?
API düzeyi, Android platformunun bir sürümü tarafından sunulan çerçeve API revizyonunu benzersiz şekilde tanımlayan bir tam sayı değeridir.
Android platformu, uygulamaların temel Android sistemiyle etkileşime geçmek için kullanabileceği bir çerçeve API'si sağlar. Framework API aşağıdakilerden oluşur:
- Temel paket ve sınıf grubu
- Manifest dosyası beyan etmek için bir dizi XML öğesi ve özelliği
- Kaynakları tanımlamak ve bunlara erişmek için kullanılan bir dizi XML öğesi ve özelliği
- Bir dizi intent
- Uygulamaların isteyebileceği izinler ve sisteme dahil edilen izin yaptırımları
Android platformunun her yeni sürümü, sunduğu Android uygulama çerçevesi API'sinde güncellemeler içerebilir.
Çerçeve API'sindeki güncellemeler, yeni API'nin API'nin önceki sürümleriyle uyumlu kalacağı şekilde tasarlanmıştır. Yani API'deki çoğu değişiklik eklemeli olup yeni veya yeni işlevler sunar. API'nin bazı kısımları yükseltilirken, değiştirilen eski kısımlar desteği sonlandırılır ancak mevcut uygulamaların bunları kullanmaya devam edebilmesi için kaldırılmaz.
Çok az sayıda durumda API'nin bazı bölümleri değiştirilir veya kaldırılır. Ancak genellikle bu tür değişikliklerin yapılmasının tek nedeni API'nin sağlamlığını ve uygulama ya da sistem güvenliğini desteklemektir. Önceki düzeltmelerdeki diğer tüm API parçaları, değiştirilmeden ileriye taşınır.
Bir Android platformunun sunduğu çerçeve API'si, API düzeyi adlı bir tam sayı tanımlayıcı kullanılarak belirtilir. Her Android platform sürümü tam olarak bir API düzeyini destekler ancak önceki tüm API düzeyleri (API düzeyi 1'e kadar) için destek varsayılan olarak sunulur. Android platformunun ilk sürümü API düzeyi 1'i sunarken sonraki sürümlerde API düzeyi artırılmıştır.
Aşağıdaki tabloda, Android platformunun her sürümü tarafından desteklenen API düzeyi belirtilmiştir. Her bir sürümü çalıştıran cihazların göreceli sayısı hakkında bilgi edinmek için Dağıtım kontrol paneline bakın.
Android'de API düzeyinin kullanım alanları
API düzeyi tanımlayıcısı, kullanıcılar ve uygulama geliştiriciler için mümkün olan en iyi deneyimi sağlamaya yardımcı olur:
- Android platformunun desteklediği maksimum çerçeve API revizyonunu tanımlamasına olanak tanır.
- Uygulamaların, ihtiyaç duydukları çerçeve API revizyonunu tanımlamasına olanak tanır.
- Sürüm uyumlu olmayan uygulamaların yüklenmemesi için sistemin, kullanıcının cihazına uygulama yükleme konusunda pazarlık yapmasına olanak tanır.
Her Android platform sürümü, API düzeyi tanımlayıcısını Android sisteminin içinde depolar.
Uygulamalar, çalıştırılabileceği minimum ve maksimum API düzeylerinin yanı sıra desteklemek üzere tasarlandığı tercih edilen API düzeyini açıklamak için çerçeve API'si tarafından sağlanan bir manifest öğesi (<uses-sdk>
) kullanabilir. Öğe üç temel özellik sunar:
android:minSdkVersion
: Uygulamanın çalışabileceği minimum API düzeyi. Varsayılan değer "1"dir.android:targetSdkVersion
: Uygulamanın çalıştırılması için tasarlandığı API düzeyi. Bazı durumlarda bu, uygulamanın yalnızca minimum API düzeyi için tanımlananları kullanmakla sınırlı kalmak yerine hedef API düzeyinde tanımlanan manifest öğelerini veya davranışlarını kullanmasına olanak tanır.android:maxSdkVersion
: Uygulamanın çalışabileceği maksimum API düzeyi. Önemli: Bu özelliği kullanmadan önce bu sayfada bu özellikle ilgili bilgileri okuyun.
Örneğin, bir uygulamanın çalışması için ihtiyaç duyduğu minimum sistem API düzeyini belirtmek amacıyla uygulama, manifest dosyasına android:minSdkVersion
özelliğine sahip bir <uses-sdk>
öğesi ekler. android:minSdkVersion
değeri, uygulamanın çalışabileceği Android platformunun en eski sürümünün API düzeyine karşılık gelen tam sayıdır.
Kullanıcı bir uygulamayı yüklemeye çalıştığında veya sistem güncellemesinden sonra bir uygulamayı yeniden doğrularken Android sistemi öncelikle uygulamanın manifest dosyasında <uses-sdk>
özelliklerini kontrol eder ve değerleri kendi dahili API düzeyiyle karşılaştırır. Sistem, yalnızca aşağıdaki koşullar karşılanırsa kurulumun başlatılmasına izin verir:
android:minSdkVersion
özelliği tanımlanırsa değeri, sistemin API düzeyi tam sayısından az veya bu değere eşit olur. Beyan edilmezse sistem, uygulamanın API düzeyi 1 gerektirdiğini varsayar.android:maxSdkVersion
özelliği açıklanırsa değeri, sistemin API düzeyi tam sayısına eşit veya bu sayıdan büyüktür. Beyan edilmezse sistem, uygulamanın maksimum API düzeyi olmadığını varsayar. Sistemin bu özelliği nasıl işlediği hakkında daha fazla bilgi için bu özelliğin açıklamasını okuyun.
Bir uygulamanın manifest dosyasında beyan edildiğinde <uses-sdk>
öğesi aşağıdaki gibi görünebilir:
<manifest> <uses-sdk android:minSdkVersion="5" /> ... </manifest>
Bir uygulamanın android:minSdkVersion
içinde API düzeyi belirtmesinin başlıca nedeni, Android sistemine belirtilen API düzeyinde tanıtılan API'leri kullandığını bildirmektir.
Uygulama, bir şekilde daha düşük API düzeyine sahip bir platforma yüklenirse var olmayan API'lere erişmeye çalışırken çalışma zamanında kilitlenir. Sistem, gerektirdiği en düşük API düzeyi hedef cihazdaki platform sürümünden yüksekse uygulamanın yüklenmesine izin vermeyerek bu sonucu önler.
Geliştirmeyle ilgili dikkat edilmesi gereken hususlar
Aşağıdaki bölümlerde, uygulamanızı geliştirirken dikkate almanız gereken API düzeyiyle ilgili bilgiler verilmektedir.
Uygulamanın ileriye dönük uyumluluğu
Android uygulamaları genellikle Android platformunun yeni sürümleriyle uyumludur.
Framework API'deki neredeyse tüm değişiklikler eklemeli olduğundan, API düzeyi tarafından belirtildiği üzere API'nin herhangi bir sürümü kullanılarak geliştirilen bir Android uygulaması, Android platformunun sonraki sürümleri ve daha yüksek API düzeyleriyle ileriye dönük uyumludur. Uygulama, API'nin daha sonra bir nedenle kaldırılan bir bölümünü kullandığı tekil durumlar hariç olmak üzere Android platformunun sonraki tüm sürümlerinde çalışabilir.
Android destekli birçok cihaz kablosuz olarak (OTA) sistem güncellemeleri aldığından ileriye dönük uyumluluk önemlidir. Kullanıcı, uygulamanızı yükleyip başarıyla kullanabilir ve daha sonra Android platformunun yeni bir sürümüne yönelik OTA güncellemesi alabilir. Güncelleme yüklendikten sonra uygulamanız, ortamın yeni bir çalışma zamanı sürümünde çalışır ancak bu sürüm, uygulamanızın ihtiyaç duyduğu API ve sistem özelliklerini barındırmaya devam eder.
API'nin altında yapılan değişiklikler (ör. temel sistemdeki değişiklikler) uygulamanızı yeni ortamda çalıştırırken etkileyebilir. Uygulama geliştiricisi olarak, uygulamanın her sistem ortamında nasıl göründüğünü ve nasıl davrandığını anlamanız önemlidir.
Android SDK'sı, uygulamanızı Android platformunun çeşitli sürümlerinde test etmenize yardımcı olmak için indirebileceğiniz birden fazla platform içerir. Her platform, uygulamanızı test etmek için AVD'de çalıştırabileceğiniz uyumlu bir sistem görüntüsü içerir.
Uygulamanın geriye dönük uyumluluğu
Android uygulamaları, derlendikleri sürümden eski Android platformu sürümleriyle geriye dönük uyumlu olmayabilir.
Android platformunun her yeni sürümü, uygulamalara yeni platform özelliklerine erişim sağlayan veya mevcut API parçalarını değiştiren yeni çerçeve API'leri içerebilir. Yeni API'lere, yeni platformda ve API düzeyi tarafından belirtildiği şekilde platformun sonraki sürümlerinde çalışan uygulamalar erişebilir. Ancak platformun önceki sürümleri yeni API'leri içermediğinden, yeni API'leri kullanan uygulamalar bu platformlarda çalışamaz.
Android destekli bir cihazın platformun önceki bir sürümüne geçirilme olasılığı düşük olsa da, piyasada platformun önceki sürümlerini çalıştıran birçok cihaz olabileceğini unutmayın. OTA güncellemesi alan cihazlar arasında bile bazı cihazlar güncellemeleri gecikmeli alabilir ve uzun süre güncelleme almayabilir.
Platform sürümü ve API düzeyi seçme
Uygulamanızı geliştirirken, uygulamayı derleyeceğiniz platform sürümünü seçersiniz. Genel olarak, uygulamanızı platformun destekleyebileceği en düşük sürümüne göre derleyin.
Uygulamayı art arda daha düşük derleme hedeflerine göre derleyerek mümkün olan en düşük platform sürümünü belirleyebilirsiniz. En düşük sürümü belirledikten sonra, ilgili platform sürümünü ve API düzeyini kullanarak bir AVD oluşturun ve uygulamanızı tam olarak test edin. Uygulamanın manifest dosyasında bir android:minSdkVersion
özelliği tanımladığınızdan ve değerini platform sürümünün API düzeyine ayarladığınızdan emin olun.
Minimum API düzeyi beyanı
En son platform sürümünde kullanıma sunulan API'leri veya sistem özelliklerini kullanan bir uygulama oluşturursanız android:minSdkVersion
özelliğini en son platform sürümünün API düzeyine ayarlayın. Bu, kullanıcıların uygulamanızı yalnızca cihazlarında Android platformunun uyumlu bir sürümünü çalıştırıyorlarsa yükleyebilmeleri içindir. Bu da uygulamanızın cihazlarında düzgün şekilde çalışmasını sağlar.
Uygulamanız en son platform sürümünde kullanıma sunulan API'leri kullanıyorsa ancak android:minSdkVersion
özelliğini beyan etmiyorsa platformun en son sürümünü çalıştıran cihazlarda düzgün çalışır ancak platformun önceki sürümlerini çalıştıran cihazlarda çalışmaz. İkinci durumda, uygulama önceki sürümlerde bulunmayan API'leri kullanmaya çalışırken çalışma zamanında kilitleniyor.
Daha yüksek API düzeyleriyle test etme
Uygulamanızı derledikten sonra, uygulamanın android:minSdkVersion
özelliğinde belirtilen platformda test ettiğinizden emin olun. Bunun için, uygulamanızın gerektirdiği platform sürümünü kullanan bir AVD oluşturun. Ayrıca, ileriye dönük uyumluluğu kontrol etmek için uygulamanızı, uygulamanızın kullandığından daha yüksek API düzeyi kullanan tüm platformlarda çalıştırıp test edin.
Android SDK'sı, en son sürüm de dahil olmak üzere kullanabileceğiniz birden fazla platform sürümü içerir ve gerektiğinde diğer platform sürümlerini indirmek için kullanabileceğiniz bir güncelleyici aracı sağlar.
Güncelleme aracına erişmek için <sdk>/tools dizininde bulunan android
komut satırı aracını kullanın. android sdk
komutunu yürüterek SDK güncelleyiciyi başlatabilirsiniz. android.bat
(Windows) veya android
(OS X/Linux) dosyasını da çift tıklayabilirsiniz.
Uygulamanızı emülatörde farklı platform sürümlerinde çalıştırmak için test etmek istediğiniz her platform sürümü için bir AVD oluşturun. AVD'ler hakkında daha fazla bilgi için Sanal cihaz oluşturma ve yönetme başlıklı makaleyi inceleyin. Test için fiziksel bir cihaz kullanıyorsanız çalıştırılan Android platformunun API düzeyini bildiğinizden emin olun. Platform sürümlerinin ve API düzeylerinin listesi için bu dokümanda yer alan tabloya bakın.
Referans dokümanlarını API düzeyine göre filtreleme
Android platform referans dokümanı sayfalarının her birinin sol üst kısmında bir "API düzeyi" denetimi bulunur. Bu kontrolü kullanarak, manifest dosyasının android:minSdkVersion
özelliğinde belirttiği API düzeyine göre API'nin yalnızca uygulamanızın erişebildiği bölümlerine ait dokümanları gösterebilirsiniz.
Filtrelemeyi kullanmak için menüden uygulamanız tarafından belirtilen API düzeyini seçin. Daha sonraki bir API düzeyinde kullanıma sunulan API'ler, uygulamanız tarafından erişilemediği için devre dışı bırakılır ve içerikleri maskelenir.
Dokümanlar API düzeyine göre filtrelendiğinde her API düzeyinde nelerin yeni veya kullanıma sunulduğuna dair bir görünüm sağlanmaz. Daha sonraki API düzeylerinde kullanıma sunulan API öğelerini hariç tutarken belirli bir API düzeyiyle ilişkili API'nin tamamını görüntülemenizi sağlar.
Dokümanların tamamını görüntülemeye dönmek için API düzeyi menüsünün üst kısmındaki REL'i seçin. API düzeyi filtreleme varsayılan olarak devre dışıdır. Böylece, API düzeyinden bağımsız olarak çerçeve API'sinin tamamını görüntüleyebilirsiniz.
API öğelerinin referans dokümanlarında, her öğenin kullanıma sunulduğu API düzeyi belirtilir. Paketler ve sınıflar için API düzeyi, her doküman sayfasındaki içerik alanının sağ üst köşesinde "API düzeyinde eklendi" olarak belirtilir. Sınıf üyelerinin API düzeyi, ayrıntılı açıklama başlıklarında sağ kenarda belirtilir.