Cihaz uyumluluğuna genel bakış

Android; telefon, tablet ve televizyon gibi çeşitli cihazlarda ç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 yapılandırmaya özel uygulama kaynaklarını farklı ekran boyutları için farklı XML düzenleri gibi statik dosyalarda 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ızı ve ek uygulama kaynaklarınızı önceden planlayarak ç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 Google Play Store'dan uygulamanızı hangi cihaz türlerinin yükleyebileceğini kontrol edebilirsiniz. Bu belgede, uygulamalarınıza hangi cihazların erişebileceğini 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 iki tür uyumluluk vardır: Cihaz uyumluluğu ve uygulama uyumluluğu.

Android açık kaynaklı bir proje olduğundan herhangi bir donanım üreticisi, Android işletim sisteminin çalıştığı bir cihaz oluşturabilir. 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 tam ayrıntıları Android uyumluluk programı tarafından tanımlanır. Uyumlu olarak kabul edilebilmesi için her cihazın Compatibility Test Suite (CTS) testini geçmesi gerekir.

Uygulama geliştirici olarak, bir cihazın Android uyumlu olup olmadığını düşünmenize gerek yoktur. Çünkü Google Play Store yalnızca Android uyumlu cihazlarda bulunur. Dolayısıyla, bir kullanıcı uygulamanızı Google Play Store'dan yüklüyorsa Android uyumlu bir cihaz kullanıyordur.

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ırmalarında çalıştığından bazı özellikler tüm cihazlarda kullanılamaz. Örneğin, bazı cihazlarda pusula sensörü bulunmayabilir. Uygulamanızın temel işlevselliği için pusula sensörü gerekiyorsa uygulamanız yalnızca bu özelliği içeren cihazlarla uyumludur.

Uygulamanızın cihazlarda kullanılabilirliğini kontrol etme

Android, uygulamanızın platform API'leri aracılığıyla kullanabileceği çeşitli özellikleri destekler. Bazı özellikler donanıma (ör. pusula sensörü), bazıları yazılıma (ör. uygulama widget'ları) bağlıdır ve bazıları da platform sürümüne göre değişir. Her cihaz her özelliği desteklemez. Bu nedenle, uygulamanızın gerekli özelliklerine göre uygulamanızın cihazlarda 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, bunu ç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ırmalara yönelik alternatifler içeren uygulama kaynakları sağlayarak yapabilirsiniz. Gerekirse aşağıdaki cihaz özelliklerine göre uygulamanızın Google Play Store üzerinden belirli cihazlarda 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 bulunmayabilecek 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 şeklindedir.

Gerekirse uygulamanızın manifest dosyasında <uses-feature> öğesini kullanarak özelliği bildirerek kullanıcıların cihazları gerekli özelliği sağlamadığında uygulamanızı yüklemesini engelleyebilirsiniz.

Örneğin, uygulamanız pusula sensörü olmayan bir cihazda mantıklı değilse aşağıdaki manifest etiketiyle pusula sensörünü bir gereklilik olarak bildirebilirsiniz:

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

Google Play Store, uygulamanızın gerektirdiği özellikleri her kullanıcının cihazında bulunan özelliklerle karşılaştırarak uygulamanızın her cihazla uyumlu olup olmadığını belirler. Cihazda uygulamanızın gerektirdiği tüm özellikler yoksa kullanıcı uygulamanızı yükleyemez.

Ancak uygulamanızın birincil işlevi bir cihaz özelliğini 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ü bir şekilde azaltın. Örneğin, bir özelliğin kullanılabilir olup olmadığını hasSystemFeature() çağrısı yaparak sorgulayabilirsiniz: hasSystemFeature()

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'daki kullanılabilirliğini kontrol etmek için kullanabileceğiniz tüm filtreler hakkında bilgi edinmek istiyorsanız Google Play'de filtreler dokümanına bakın.

Platform sürümü

Farklı cihazlarda Android platformunun farklı sürümleri (ör. Android 12 veya Android 13) çalıştırılabilir. Bir sonraki platform sürümünde genellikle önceki sürümde bulunmayan API'ler eklenir. Hangi API grubunun kullanılabileceğini belirtmek için her platform sürümünde bir API düzeyi belirtilir. Örneğin, Android 12'nin API düzeyi 31, Android 13'ün API düzeyi ise 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 inceleyin.

Android'in her yeni 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 uyumlu olur.

Ancak uygulamanız daha yeni bir platform sürümünde eklenen API'leri kullanıyorsa ancak birincil işlevselliği için bu API'lere ihtiyaç duymuyorsa çalışma zamanında API düzeyini kontrol edin ve API düzeyi çok düşük olduğunda ilgili özellikleri kontrollü bir şekilde azaltın. Bu durumda, minSdkVersion değerini uygulamanızın temel işlevi için mümkün olan en düşük değere ayarlayın. Ardından, aşağıdaki örnekte gösterildiği gibi, mevcut sistemin sürümünü (SDK_INT) kontrol etmek istediğiniz API seviyesine karşılık gelen Build.VERSION_CODES içindeki 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 sınıflandırmak için her cihazla ilgili iki özellik tanımlar: ekran boyutu (ekranın fiziksel boyutu) ve ekran yoğunluğu (ekrandaki piksellerin fiziksel yoğunluğu, DPI olarak bilinir). Farklı yapılandırmaları basitleştirmek için Android bu varyantları, hedeflemeyi kolaylaştıran gruplar halinde genelleştirir:

  • Dört genel boyut: küçük, normal, büyük ve çok bü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, kullanıcı arayüzü düzeninizde ve resim kaynaklarınızda her ekran için gerekli 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ş bit eşlem resimler sağlayın.

Mümkün olduğunca esnek düzenler kullanarak kullanıcı deneyimini optimize edin. Dikey ve yatay gibi büyük yapılandırma değişiklikleri veya büyük ve küçük pencere boyutları için düzenlerin olduğu durumlarda, yapılandırmadaki daha küçük değişikliklere esneklik sağlayan alternatif düzenler sunmayı düşünebilirsiniz. Bu, tabletler, telefonlar ve katlanabilir cihazlar gibi form faktörlerinde kullanıcı deneyimini iyileştirir. Ayrıca, çoklu pencere modunda pencerelerin boyutu değiştiğinde de yardımcı olur.

Farklı ekranlar için alternatif kaynaklar oluşturma ve uygulamanızı gerektiğinde belirli ekran boyutlarıyla sınırlama hakkında bilgi edinmek için Ekran uyumluluğuna genel bakış başlıklı makaleyi okuyun ve Büyük ekranlı uygulamaların kalite yönergeleri'ni inceleyin.

İşletme nedenleriyle 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şletmeyle veya yasal nedenlerle de kısıtlamanız gerekebilir. Google Play Store, bu tür durumlarda Play Console'da filtreleme seçenekleri sunar. Bu seçenekler sayesinde, uygulamanızın kullanılabilirliğini kullanıcı yerel ayarı veya kablosuz operatör gibi teknik olmayan nedenlerle kontrol edebilirsiniz.

Gerekli donanım bileşenleri gibi teknik uyumluluk için filtreleme her zaman APK veya AAB dosyanızda yer alan bilgilere göre yapılı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ığıyla ilgili bilgiler (ör. belirli cihaz yapılandırmaları için alternatif kaynakları nasıl sağlayabileceğiniz).
Google Play'deki filtreler
Google Play Store'un, uygulamanızın farklı cihazlara yüklenmesini önleyebileceğ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 uygulamaların belirli API'lere erişimini nasıl kısıtladığı.