Android; telefon, tablet ve televizyon gibi birçok farklı cihazda çalışacak şekilde tasarlanmıştır. Bu cihaz yelpazesi, uygulamanız için çok büyük bir potansiyel kitle sağlar. Uygulamanızın tüm cihazlarda başarılı olması için özellik değişkenliğini 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 farklı ekran boyutları için farklı XML düzenleri gibi statik dosyalarda yapılandırmaya özel uygulama kaynakları sağlayabileceğiniz bir dinamik uygulama çerçevesi sağlar. Daha sonra Android, geçerli cihaz yapılandırmasına göre uygun kaynakları yükler. Uygulamanızın tasarımını ve ek uygulama kaynaklarını göz önünde bulundurarak, çeşitli cihazlardaki kullanıcı deneyimini optimize eden tek bir uygulama paketi (APK) yayınlayabilirsiniz.
Ancak gerekirse uygulamanızın özellik gereksinimlerini belirtebilir ve hangi tür cihazların uygulamanızı Google Play Store'dan yükleyebileceğini kontrol edebilirsiniz. Bu dokümanda, uygulamalarınıza erişimi olan cihazları nasıl kontrol edebileceğiniz ve uygulamalarınızı doğru kitleye ulaşacak şekilde nasıl hazırlayabileceğiniz açıklanmaktadır.
"Uyumluluk" ne anlama gelir?
Android geliştirme açısından, cihaz uyumluluğu ve uygulama uyumluluğu olmak üzere iki tür uyumluluk vardır.
Android açık kaynak bir proje olduğundan, tüm donanım üreticileri Android işletim sistemini çalıştıran bir cihaz geliştirebilir. Ancak bir cihazın "Android uyumlu" olması için Android yürütme ortamı için yazılmış uygulamaları doğru şekilde çalıştırması gerekir. Android yürütme ortamının tam ayrıntıları Android uyumluluk programı tarafından tanımlanmıştır. Her cihazın uyumlu olarak kabul edilmesi için Uyumluluk Test Paketi'nden (CTS) geçmesi gerekir.
Bir uygulama geliştirici olarak, bir cihazın Android uyumlu olup olmadığı konusunda endişelenmenize gerek yoktur, çünkü yalnızca Android uyumlu cihazlar Google Play Store'u içerir. Yani bir kullanıcı uygulamanızı Google Play Store'dan yüklüyorsa, Android uyumlu bir cihaz kullanıyor demektir.
Ancak, uygulamanızın her potansiyel cihaz yapılandırmasıyla uyumlu olup olmadığını göz önünde bulundurmanız gerekir. Android çok çeşitli cihaz yapılandırmalarında çalıştığından bazı özellikler tüm cihazlarda mevcut değildir. Ö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ği içeren cihazlarla uyumlu olur.
Uygulamanızın cihazlarda kullanılabilirliğini kontrol etme
Android, uygulamanızın platform API'leri aracılığıyla faydalanabileceği çeşitli özellikleri destekler. Bazı özellikler pusula sensörü gibi donanım tabanlıdır; bazıları uygulama widget'ları gibi yazılım tabanlıdır, bazıları ise platform sürümüne bağlıdır. Her cihaz her özelliği desteklemez. Bu nedenle, uygulamanızın gerekli özelliklerine bağlı olarak uygulamanızın cihazlar tarafından kullanılabilirliğini kontrol etmeniz gerekebilir.
Uygulamanız için mümkün olan en geniş kullanıcı tabanına ulaşmak amacıyla tek bir APK veya AAB kullanarak mümkün olduğunca çok cihaz yapılandırmasını destekleyin. Çoğu durumda, çalışma zamanında isteğe bağlı özellikleri devre dışı bırakarak ve farklı yapılandırmalar için alternatifler (ör. farklı ekran boyutları için farklı düzenler) uygulama kaynakları sağlayarak bunu yapabilirsiniz. Gerekirse uygulamanızın kullanılabilirliğini Google Play Store üzerinden aşağıdaki cihaz özelliklerine göre belirli cihazlarla kısıtlayabilirsiniz:
Cihaz özellikleri
Android, cihaz özelliklerine göre uygulamanızın kullanılabilirliğini yönetmek amacıyla tüm cihazlarda bulunmayabilecek donanım veya yazılım özelliklerine ait özellik kimliklerini 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
şeklindedir.
Gerekirse cihazları gerekli bir özelliği sağlamadığında uygulamanızın manifest dosyasında <uses-feature>
öğesiyle ilgili özelliği beyan ederek kullanıcıların uygulamanızı yüklemesini engelleyebilirsiniz.
Örneğin, uygulamanız pusula sensörü olmayan bir cihazda anlamlı değilse aşağıdaki manifest etiketini kullanarak pusula sensörünü zorunlu olarak belirtebilirsiniz:
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Google Play Store, uygulamanızın gerektirdiği özellikleri her bir kullanıcının cihazındaki mevcut özelliklerle karşılaştırarak uygulamanızın her cihazla uyumlu olup olmadığını belirler. Cihaz, uygulamanızın gerektirdiği tüm özelliklere sahip değilse kullanıcı uygulamanızı yükleyemez.
Bununla birlikte, 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 yoksa ilgili uygulama özelliğini sorunsuz şekilde
düşürtün. Örneğin, aşağıdaki gibi hasSystemFeature()
yöntemini çağırarak bir özelliğin kullanılabilir olup olmadığını sorgulayabilirsiniz:
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ı cihazlarda Android platformunun farklı sürümleri (Android 12 veya Android 13 gibi) çalıştırılabilir. Takip eden her platform sürümüne genellikle önceki sürümde bulunmayan API'ler eklenir. Hangi API grubunun kullanılabileceğini belirtmek için her platform sürümü 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) ... } }
Modern
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 bölümünü okuyun.
Android'in takip eden her sürümü, önceki platform sürümlerindeki API'ler kullanılarak oluşturulan uygulamalarla uyumluluk sağlar. Bu nedenle uygulamanız, belgelenmiş Android API'lerini kullanırken Android'in gelecekteki sürümleriyle uyumludur.
Bununla birlikte, uygulamanız daha yeni bir platform sürümünde eklenen API'leri kullanıyorsa ancak birincil işlevleri için bunları gerektirmiyorsa çalışma zamanında API düzeyini kontrol edin ve API düzeyi çok düşük olduğunda ilgili özellikleri gerektiği gibi düşürün. Bu durumda, minSdkVersion
özelliğini uygulamanızın birincil işlevi için mümkün olan en düşük değere ayarlayın ve ardından aşağıdaki örnekte gösterildiği gibi, mevcut sistem sürümünü (SDK_INT
) 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ürlerine göre kategorilere ayırmak 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 daha kolay hale getiren gruplar halinde genelleştirir:
- Dört genelleştirilmiş boyut: small, normal, large ve xlarge
- Çeşitli genel yoğunluklar: mdpi (orta), hdpi (yüksek), xhdpi (çok yüksek), xxhdpi (ekstra yüksek) ve diğerleri
Sistem, her ekran için kullanıcı arayüzü düzeninizde ve görüntü kaynaklarınızda gerekli düzenlemeleri yaptığından, varsayılan olarak uygulamanız tüm ekran boyutları ve yoğunluklarıyla uyumludur. Ortak ekran yoğunlukları için optimize edilmiş bit eşlem resimleri sağlayın.
Mümkün olduğunca esnek düzenler kullanarak kullanıcı deneyimini optimize edin. Dikey ve yatay ya da büyük veya küçük pencere boyutları gibi büyük yapılandırma değişiklikleri için düzenler olduğunda, yapılandırmada daha küçük değişikliklere esnek olan alternatif düzenler sağlamayı düşünün. Bu sayede tabletler, telefonlar ve katlanabilir cihazlar gibi form faktörlerinde kullanıcı deneyimini iyileştirir. Bu, çoklu pencere modunda pencerelerin boyutu değiştirdiğinde de faydalı olur.
Farklı ekranlar için alternatif kaynaklar oluşturma ve gerektiğinde uygulamanızı belirli ekran boyutlarıyla kısıtlama hakkında bilgi edinmek için ekran uyumluluğuna genel bakış bölümünü okuyun ve büyük ekran uygulama kalitesi yönergelerine bakın.
Uygulamanızın kullanılabilirliğini işle ilgili nedenlerle kontrol etme
Uygulamanızın kullanılabilirliğini cihaz özelliklerine göre kısıtlamanın yanı sıra, işle ilgili veya yasal nedenlerle de uygulamanızın kullanılabilirliğini kısıtlamanız gerekebilir. Örneğin, Londra Metrosu'nun tren tarifelerini görüntüleyen bir uygulamanın Birleşik Krallık dışındaki kullanıcılar için faydalı olma ihtimali düşüktür. Bu tür durumlarda Google Play Store, Play Console'da uygulamanızın kullanılabilirliğini kullanıcının yerel ayarı veya kablosuz operatörü gibi teknik olmayan nedenlerle kontrol etmenize olanak tanıyan filtreleme seçenekleri sunar.
Gerekli donanım bileşenleri gibi teknik uyumluluk için filtreleme her zaman APK veya AAB dosyanızda bulunan bilgilere dayanır. Ancak coğrafi yerel ayar gibi teknik olmayan nedenlerle filtreleme her zaman Google Play Console'da gerçekleştirilir.
Ek kaynaklar:
- Uygulama kaynaklarına genel bakış
- Uygulama kaynaklarını uygulama kodundan ayırmak için Android uygulamalarının nasıl yapılandırıldığı ve belirli cihaz yapılandırmaları için nasıl alternatif kaynaklar sağlayabileceğiniz hakkında bilgiler.
- Google Play'deki filtreler
- Google Play Store'un, uygulamanızın farklı cihazlara yüklenmesini engellemek için kullanabileceği farklı yöntemler hakkında bilgiler.
- Android'de izinler
- Android'in, uygulamanızın bu API'leri kullanabilmesi için kullanıcıdan izin almasını gerektiren bir izin sistemiyle belirli API'lere uygulama erişimini nasıl kısıtladığı.