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 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, 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ştirmeyle ilgili olarak iki tür uyumluluk vardır: cihaz uyumluluğu ve uygulama uyumluluğu.

Android açık kaynak bir proje olduğundan herhangi bir donanım üreticisi 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 tam ayrıntıları Android uyumluluk programı tarafından 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ırmaları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ş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 yararlanabileceği çeşitli özellikleri destekler. Bazı özellikler donanıma dayalı (ör. pusula sensörü), bazıları yazılıma dayalı (ör. uygulama widget'ları) ve bazıları 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 uygulamanızın Google Play Store üzerinden belirli cihazlarda kullanılmasını aşağıdaki cihaz özelliklerine göre 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ü ş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ğini gerektirmiyorsa required özelliğini "false" olarak ayarlayın ve cihaz özelliğini çalışma zamanında 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 için kullanabileceğiniz tüm filtreler hakkında bilgi edinmek üzere Google Play'de filtreler dokümanlarına bakın.

Platform sürümü

Farklı cihazlarda Android platformunun farklı sürümleri (ör. Android 12 veya Android 13) çalışabilir. 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 her yeni sürümü, önceki platform sürümlerindeki API'ler kullanılarak oluşturulan uygulamalarla uyumluluk sağlar. Böylece, 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ü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) Build.VERSION_CODES içindeki, kontrol etmek istediğiniz API seviyesine karşılık gelen kod adı sabitiyle karşılaştırın. Aşağıdaki örnekte gösterildiği gibi:

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:

  • 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, 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ü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 farklı düzenler varsa yapılandırmadaki küçük değişikliklere uyum sağlayabilecek alternatif düzenler sunabilirsiniz. Bu sayede tablet, telefon ve katlanabilir cihaz gibi form faktörlerinde kullanıcı deneyimi iyileşir. Çoklu pencere modunda pencerelerin boyutu değiştiğinde de bu özellikten yararlanabilirsiniz.

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.

Uygulamanızın kullanılabilirliğini ticari nedenlerle 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, 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ı.