Android; telefon, tablet ve televizyon gibi birçok farklı cihazda çalışacak şekilde tasarlanmıştır. Bu cihaz yelpazesi, uygulamanız için muazzam bir potansiyel kitle sağlar. Uygulamanızın tüm cihazlarda başarılı bir şekilde çalışabilmesi için özelliklerde değişkenliği desteklemesi ve farklı ekran yapılandırmalarına uyum sağlayan esnek bir kullanıcı arayüzü sunması gerekir.
Android, cihaz uyumluluğuna yardımcı olmak için statik dosyalarda yapılandırmaya özel uygulama kaynakları (ör. farklı ekran boyutları için farklı XML düzenleri) sağlayabileceğiniz dinamik bir uygulama çerçevesi sunar. Ardından Android, mevcut cihaz yapılandırmasına göre uygun kaynakları yükler. Uygulama tasarımınıza ve ek uygulama kaynaklarınıza dikkat ederek çeşitli cihazlarda kullanıcı deneyimini optimize eden tek bir uygulama paketi (APK) yayınlayabilirsiniz.
Ancak gerekirse uygulamanızın özellik şartlarını belirtebilir ve uygulamanızı Google Play Store'dan hangi cihaz türlerinin yükleyebileceğini kontrol edebilirsiniz. Bu dokümanda, hangi cihazların uygulamalarınıza erişimi olduğunu nasıl kontrol edebileceğiniz ve uygulamalarınızı doğru kitleye ulaşacak şekilde nasıl hazırlayacağınız açıklanmaktadır.
"Uyumluluk" ne anlama gelir?
Android geliştirmeyle ilgili olarak iki tür uyumluluk vardır: cihaz uyumluluğu ve uygulama uyumluluğu.
Android açık kaynak bir proje olduğundan tüm donanım üreticileri Android işletim sistemini çalıştıran bir cihaz üretebilir. Ancak bir cihazın "Android uyumlu" olması için Android yürütme ortamı için yazılmış uygulamaları doğru şekilde çalıştırabilmesi gerekir. Android yürütme ortamının tüm ayrıntıları Android uyumluluk programı ile tanımlanır. Her cihazın uyumlu kabul edilebilmesi için Compatibility Test Suite (CTS) testini geçmesi gerekir.
Uygulama geliştirici olarak, bir cihazın Android uyumlu olup olmadığı konusunda endişelenmenize gerek yoktur. Çünkü Google Play Store yalnızca Android uyumlu cihazlarda bulunur. Dolayısıyla, uygulamanızı Google Play Store'dan yükleyen kullanıcılar Android uyumlu bir cihaz kullanıyor demektir.
Ancak uygulamanızın her olası cihaz yapılandırmasıyla uyumlu olup olmadığını göz önünde bulundurmanız gerekir. Android çok çeşitli cihaz yapılandırmasında çalıştığından bazı özellikler tüm cihazlarda kullanılamaz. Örneğin, bazı cihazlar pusula sensörü içermeyebilir. Uygulamanızın temel işlevi için pusula sensörü gerekiyorsa, uygulamanız yalnızca bu özelliğe sahip cihazlarla uyumludur.
Uygulamanızın cihazlar için kullanılabilirliğini kontrol etme
Android, uygulamanızın platform API'leri aracılığıyla yararlanabileceği çeşitli özellikleri destekler. Bazı özellikler donanım tabanlıdır (ör. pusula sensörü), bazıları da uygulama widget'ları gibi yazılım tabanlıdır ve bazıları da platform sürümüne bağlıdır. Her cihaz her özelliği desteklemez. Bu nedenle, uygulamanızın cihazlarda kullanılabilirliğini, uygulamanızın gerektirdiği özelliklere göre kontrol etmeniz gerekebilir.
Uygulamanız için mümkün olan en büyük kullanıcı tabanına ulaşmak istiyorsanız tek bir APK veya AAB kullanarak mümkün olduğunca çok sayıda cihaz yapılandırmasını destekleyin. Çoğu durumda, isteğe bağlı özellikleri çalışma zamanında devre dışı bırakarak ve uygulama kaynaklarını farklı yapılandırmalar için alternatiflerle (ör. farklı ekran boyutları için farklı düzenler) sağlayarak bunu yapabilirsiniz. Gerekirse aşağıdaki cihaz özelliklerine dayanarak uygulamanızın Google Play Store üzerinden belirli cihazların kullanılabilirliğini kısıtlayabilirsiniz:
Cihaz özellikleri
Android, uygulamanızın kullanılabilirliğini cihaz özelliklerine göre yönetmek için tüm cihazlarda kullanılamayabilecek donanım veya yazılım özellikleri için özellik kimlikleri tanımlar. Örneğin, pusula sensörünün özellik kimliği FEATURE_SENSOR_COMPASS
, uygulama widget'larının özellik kimliği ise FEATURE_APP_WIDGETS
'dır.
Gerekirse, uygulamanızın manifest dosyasında <uses-feature>
öğesini kullanarak gerekli bir özelliği tanımlayarak kullanıcıların cihazlarında bu özellik olmadığında uygulamanızı yüklemelerini engelleyebilirsiniz.
Örneğin, uygulamanız pusula sensörü olmayan bir cihazda anlamlı değilse aşağıdaki manifest etiketiyle pusula sensörünü bir şart olarak belirtebilirsiniz:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Google Play Store, uygulamanızın her cihazla uyumlu olup olmadığını belirlemek için uygulamanızın gerektirdiği özellikleri her kullanıcının cihazındaki özelliklerle karşılaştırır. Cihaz, uygulamanızın gerektirdiği tüm özelliklere sahip değilse kullanıcı uygulamanızı yükleyemez.
Ancak uygulamanızın birincil işlevi bir cihaz özelliği gerektirmiyorsa required
özelliğini "false"
olarak ayarlayın ve çalışma zamanında cihaz özelliğini kontrol edin.
Uygulama özelliği mevcut cihazda kullanılamıyorsa ilgili uygulama özelliğini kontrollü olarak azaltın. Örneğin, bir özelliğin kullanılabilir olup olmadığını sorgulamanız için hasSystemFeature()
simgesini şu şekilde çağırmanız gerekir:
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature() }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature(); }
Uygulamanızın Google Play Store'da kullanılabilirliğini kontrol etmek üzere kullanabileceğiniz tüm filtreler hakkında bilgi için Google Play'deki filtreler belgelerine bakın.
Platform sürümü
Farklı cihazlar, Android platformunun farklı sürümlerini (ör. Android 12 veya Android 13) çalıştırabilir. Sıralı olarak yayınlanan her platform sürümü genellikle önceki sürümde bulunmayan API'ler ekler. Her platform sürümü, hangi API grubunun kullanılabileceğini belirtmek için bir API düzeyi belirtir. Örneğin, Android 12 API düzeyi 31, Android 13 ise API düzeyi 33'tür.
build.gradle
dosyanızda minSdkVersion
ve targetSdkVersion
değerlerini belirtmeniz gerekir:
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(30) // Specifies the API level used to test the app. targetSdkVersion(33) ... } }
Groovy
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 30 // Specifies the API level used to test the app. targetSdkVersion 33 ... } }
build.gradle
dosyası hakkında daha fazla bilgi için Derlemenizi yapılandırma başlıklı makaleyi okuyun.
Android'in birbirini izleyen her sürümü, önceki platform sürümlerindeki API'ler kullanılarak oluşturulan uygulamalara uyumluluk sağlar. Böylece uygulamanız, belgelenmiş Android API'lerini kullanırken Android'in gelecek sürümleriyle uyumludur.
Ancak uygulamanız daha yeni bir platform sürümüne eklenen API'leri kullanıyorsa ancak birincil işlevi için bunları gerektirmiyorsa çalışma zamanında API düzeyini kontrol edin ve API düzeyi çok düşük olduğunda ilgili özellikleri kontrollü olarak azaltın. Bu durumda, minSdkVersion
değerini uygulamanızın birincil işlevi için mümkün olan en düşük değere ayarlayın, ardından mevcut sistemin sürümünü (SDK_INT
) aşağıdaki örnekte gösterildiği gibi kontrol etmek istediğiniz API düzeyine karşılık gelen
Build.VERSION_CODES
kodundaki kod adı sabitiyle karşılaştırın:
Kotlin
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop() }
Java
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop(); }
Ekran yapılandırması
Android; telefon, tablet ve TV gibi çeşitli boyutlardaki cihazlarda çalışır. Android, cihazları ekran türüne göre kategorize etmek için her cihaz için iki özellik tanımlar: ekran boyutu (ekranın fiziksel boyutu) ve ekran yoğunluğu (ekrandaki piksellerin fiziksel yoğunluğu, DPI olarak bilinir). Android, farklı yapılandırmaları basitleştirmek için bu varyantları hedeflemeyi kolaylaştıran gruplar halinde genelleştirir:
- Genelleştirilmiş dört boyut: küçük, normal, büyük ve xbüyük
- Çeşitli genelleştirilmiş yoğunluklar: mdpi (orta), hdpi (yüksek), xhdpi (çok yüksek), xxhdpi (çok çok yüksek) ve diğerleri
Sistem, her ekran için gerektiğinde kullanıcı arayüzü düzeninizde ve resim kaynaklarınızda ayarlamalar yaptığından, uygulamanız varsayılan olarak tüm ekran boyutları ve yoğunluklarıyla uyumludur. Yaygın ekran yoğunlukları için optimize edilmiş bitmap resimler sağlayın.
Mümkün olduğunca esnek düzenleri kullanarak kullanıcı deneyimini optimize edin. Dikey ve yatay veya büyük ya da küçük pencere boyutları gibi büyük yapılandırma değişiklikleri için düzenler varsa, yapılandırmadaki daha küçük değişikliklere esnek olabilen alternatif düzenler sağlamanız önerilir. Bu sayede tablet, telefon ve katlanabilir cihazlar gibi form faktörlerinde kullanıcı deneyimi iyileşir. Bu, çoklu pencere modunda pencerelerin boyutu değiştiğinde de işe yarar.
Farklı ekranlar için alternatif kaynakların nasıl oluşturulacağı ve gerektiğinde uygulamanızı belirli ekran boyutlarıyla nasıl kısıtlayacağınız hakkında bilgi edinmek için ekran uyumluluğuna genel bakış bölümünü okuyun ve büyük ekran uygulama kalitesi yönergelerini inceleyin.
İşle ilgili nedenlerle uygulamanızın kullanılabilirliğini kontrol etme
Uygulamanızın kullanılabilirliğini cihaz özelliklerine göre kısıtlamanın yanı sıra ticari veya yasal nedenlerle de kısıtlamanız gerekebilir. Bu tür durumlar için Google Play Store, Play Console'da uygulamanızın kullanıcı yerel dili veya kablosuz operatör gibi teknik olmayan nedenlerle kullanılabilirliğini kontrol etmenizi sağlayan filtreleme seçenekleri sunar.
Teknik uyumluluk (ör. gerekli donanım bileşenleri) için filtreleme işlemi her zaman APK veya AAB dosyanızdaki bilgilere dayanır. Ancak coğrafi yerel ayar gibi teknik olmayan nedenlerle filtreleme her zaman Google Play Console'da yapılır.
Ek kaynaklar:
- Uygulama kaynaklarına genel bakış
- Android uygulamalarının, uygulama kaynaklarını uygulama kodundan ayırmak için nasıl yapılandırıldığıyla ilgili bilgiler (belirli cihaz yapılandırmaları için alternatif kaynaklar sağlama dahil).
- Google Play'deki filtreler
- Google Play Store'un uygulamanızın farklı cihazlara yüklenmesini engelleyebileceği farklı yöntemler hakkında bilgi.
- Android'de izinler
- Android'in, uygulamanızın bu API'leri kullanabilmesi için kullanıcının iznini gerektiren bir izin sistemiyle uygulamanın belirli API'lere erişimini kısıtlaması.