Android; telefon, tablet ve televizyon gibi birçok farklı cihazda çalışacak şekilde tasarlanmıştır. Cihaz çeşitliliği, 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 çeşitliliğini tolere etmesi 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. Android daha sonra 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 gereksinimlerini belirtebilir ve hangi cihaz türlerinin uygulamanızı Google Play Store'dan 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ırlayacağınız 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, tüm donanım üreticileri Android işletim sistemini çalıştıran cihazlar ü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. Uyumlu 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ığı konusunda endişelenmenize gerek yoktur. Çünkü yalnızca Android uyumlu cihazlarda Google Play Store bulunur. Yani 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ğe sahip cihazlarla uyumlu olur.
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. Pusula sensörü gibi bazı özellikler donanım tabanlıdır, uygulama widget'ları gibi bazı özellikler yazılım tabanlıdır ve bazı özellikler platform sürümüne bağlıdır. Her cihaz her özelliği desteklemediğinden, uygulamanızın cihazlarda kullanılabilirliğini uygulamanızın gerekli özelliklerine göre 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 uygulamanızın Google Play Store'da belirli cihazlarda kullanılabilirliğini 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 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 beyan edip cihazları gerekli bir özelliği sağlamayan kullanıcıların uygulamanızı yüklemesini engelleyebilirsiniz.
Örneğin, uygulamanız pusula sensörü olmayan bir cihazda kullanılamıyorsa pusula sensörünü aşağıdaki manifest etiketiyle zorunlu 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ında bulunan özelliklerle karşılaştırır. Cihazda uygulamanızın gerektirdiği tüm özellikler yoksa kullanıcı uygulamanızı yükleyemez.
Ancak uygulamanızın birincil işlevi için bir cihaz özelliği gerekmiyorsa 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ü azalma ile devre dışı bırakın. Örneğin, bir özelliğin kullanılabilir olup olmadığını sorgulamak için hasSystemFeature() yöntemini şu şekilde çağırabilirsiniz:
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 istiyorsanız Google Play'deki filtreler belgesini inceleyin.
Platform sürümü
Farklı cihazlar, Android platformunun farklı sürümlerini (ör. Android 12 veya Android 13) çalıştırabilir. Birbirini takip eden 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'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(36) ... } }
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 36 ... } }
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ümlerinin API'leri 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ıyor ancak birincil işlevi için bu API'leri gerektirmiyorsa çalışma zamanında API düzeyini kontrol edin ve API düzeyi çok düşük olduğunda ilgili özellikleri kontrollü azalma uygulayı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çinde kontrol etmek istediğiniz API düzeyine karşılık gelen kod adı sabitiyle karşılaştırın. Aşağıdaki örnekte bu durum gösterilmektedir:
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 kategorize etmek için her cihazda 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ı, hedeflenmelerini kolaylaştıracak gruplar halinde genelleştirir:
- Dört genel boyut: küçük, normal, büyük ve xlarge
- Genelleştirilmiş birkaç yoğunluk: mdpi (orta), hdpi (yüksek), xhdpi (ekstra yüksek), xxhdpi (ekstra ekstra yüksek) ve diğerleri
Sistem, kullanıcı arayüzü yerleşiminizde ve resim kaynaklarınızda her ekran için gereken 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üzenler varsa yapılandırmadaki daha küçük değişikliklere esnek olan alternatif düzenler sağlamayı düşünün. Bu sayede tablet, telefon ve katlanabilir cihaz gibi form faktörlerinde kullanıcı deneyimi iyileşir. Ayrıca, çoklu pencere modunda pencerelerin boyutu değiştiğinde de yardımcı 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 ekranlı cihazlar için uygulama kalitesi yönergelerini inceleyin.
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 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ı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 için filtreleme her zaman APK veya AAB dosyanızda bulunan bilgilere dayanır. Ancak coğrafi konum gibi teknik olmayan nedenlerle filtreleme her zaman Google Play Console'da yapılır.
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ığı hakkında bilgi. Belirli cihaz yapılandırmaları için alternatif kaynakları nasıl sağlayabileceğiniz de buna dahildir.
- Google Play'deki filtreler
- Google Play Store'un, uygulamanızın farklı cihazlara yüklenmesini engelleyebileceği farklı yöntemler hakkında bilgi.
- Android'deki izinler
- Android, uygulamanızın belirli API'leri kullanması için kullanıcı izni gerektiren bir izin sistemiyle uygulamaların bu API'lere erişimini nasıl kısıtlar?