Cihaz uyumluluğuna genel bakış

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ı olması için özellik çeşitliliğine uyum sağlaması 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 amacıyla, statik dosyalarda farklı ekran boyutları için farklı XML düzenleri gibi yapılandırmaya özel uygulama kaynakları sağlayabileceğiniz dinamik bir uygulama çerçevesi sunar. Android daha sonra geçerli cihaz yapılandırmasına göre uygun kaynakları yükler. Uygulama tasarımınız ve ek uygulama kaynaklarınız göz önüne alındığında, kullanıcı deneyimini çeşitli cihazlarda optimize eden tek bir uygulama paketi (APK) yayınlayabilirsiniz.

Ancak gerekirse uygulamanızın özellik gereksinimlerini belirtebilir ve Google Play Store'dan uygulamanızı hangi tür cihazların 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ştirme konusunda 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 olarak kabul edilmesi için Uyumluluk Test Paketi'ni (CTS) geçmesi gerekir.

Google Play Store yalnızca Android uyumlu cihazlar arasında olduğundan, uygulama geliştirici olarak bir cihazın Android uyumlu olup olmadığını dert etmenize gerek yoktur. Yani, uygulamanızı Google Play Store'dan yükleyen bir kullanıcı Android uyumlu bir cihaz kullanıyor demektir.

Bununla birlikte, 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 gerekli özelliklerine bağlı olarak uygulamanızın cihazlar için kullanılabilirliğini kontrol etmeniz gerekebilir.

Uygulamanız için mümkün olan en geniş kullanıcı tabanına ulaşmak için tek bir APK veya AAB kullanarak mümkün olduğunca fazla cihaz yapılandırmasını destekleyin. Çoğu durumda bu işlemi, çalışma zamanında isteğe bağlı özellikleri devre dışı bırakarak ve farklı ekran boyutları için farklı düzenler gibi farklı yapılandırmalar için alternatifler içeren uygulama kaynakları sağlayarak yapabilirsiniz. Gerekirse aşağıdaki cihaz özelliklerine dayanarak uygulamanızın kullanılabilirliğini Google Play Store üzerinden belirli cihazlarla kısıtlayabilirsiniz:

Cihaz özellikleri

Android, cihaz özelliklerine göre uygulamanızın kullanılabilirliğini yönetmek için tüm cihazlarda bulunmayabilecek tüm donanım veya yazılım özelliklerinin özellik kimliklerini tanımlar. Örneğin, pusula sensörünün özellik kimliği FEATURE_SENSOR_COMPASS ve uygulama widget'larının özellik kimliğidir: FEATURE_APP_WIDGETS.

Gerekirse, cihazları gerekli bir özelliği sağlamadığında kullanıcıların uygulamanızı yüklemesini engellemek için uygulamanızın manifest dosyasında <uses-feature> öğesini beyan ederek bu özelliği belirtebilirsiniz.

Örneğin, uygulamanız, pusula sensörü bulunmayan bir cihazda bir anlam ifade etmiyorsa aşağıdaki manifest etiketiyle pusula sensörünü bir gereklilik olarak tanımlayabilirsiniz:

<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 dikkatlice devre dışı bırakın. Örneğin, şu şekilde bir hasSystemFeature() araması yaparak bir özelliğin kullanılıp kullanılamadığı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ı cihazlar, Android platformunun farklı sürümlerini (ör. Android 12 veya Android 13) çalıştırabilir. Birbirini izleyen her platform sürümü, genellikle önceki sürümde bulunmayan API'ler ekler. Her platform sürümü, hangi API grubunun kullanılabilir olduğunu belirtmek için bir API düzeyi belirtir. Örneğin, Android 12 API düzeyi 31, Android 13'te 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)
        ...
    }
}

Eski

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 edinmek için Derlemenizi yapılandırma bölümünü okuyun.

Android'in birbirini izleyen her sürümü, önceki platform sürümlerindeki API'ler kullanılarak oluşturulan uygulamalara uyumluluk sağlar. Dolayısıyla uygulamanız, belgelenmiş Android API'lerini kullanırken Android'in gelecek sürümleriyle uyumludur.

Bununla birlikte, uygulamanız, daha yeni bir platform sürümüne eklenmiş API'ler kullanıyorsa ancak birincil işlevi için bunları gerektirmiyorsa çalışma zamanında API seviyesini kontrol edin ve API seviyesi çok düşük olduğunda ilgili özellikleri düzgün bir şekilde 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ürlerine göre sınıflandı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ı gruplara genelleştirerek daha kolay hedeflenmesini sağlar:

  • Genelleştirilmiş dört boyut: küçük, normal, büyük ve çok büyük
  • Birkaç genel yoğunluk: mdpi (orta), hdpi (yüksek), xhdpi (ekstra yüksek), xxhdpi (ekstra yüksek) ve diğerleri

Sistem, kullanıcı arayüzü düzeninizde ve görüntü kaynaklarınızda her ekran için gerekli düzenlemeleri 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ş bit eşlem resimleri 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 da tabletler, telefonlar ve katlanabilir cihazlar gibi form faktörlerinde kullanıcı deneyimini iyileştirir. Bu, çoklu pencere modunda pencerelerin boyutu değiştiğinde de işe yarar.

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ışı okuyun ve büyük ekran uygulama kalitesi yönergelerine bakın.

İş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, işle ilgili veya yasal nedenlerle de uygulamanızın kullanılabilirliğini kısıtlamanız gerekebilir. Bu tür durumlarda Google Play Store, Play Console'da uygulamanızın kullanılabilirliğini kullanıcı 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 filtrelemesi, 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 yapılır.

Ek kaynaklar:

Uygulama kaynaklarına genel bakış
Android uygulamalarının, uygulama kaynaklarını uygulama kodundan ayıracak şekilde nasıl yapılandırıldığı hakkında bilgi (belirli cihaz yapılandırmaları için alternatif kaynaklar sağlamak dahil).
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 bilgi.
Android'de izinler
Android'in, uygulamanızın ilgili API'leri kullanması için kullanıcının iznini gerektiren bir izin sistemine sahip belirli API'lere uygulama erişimini nasıl kısıtlar.