Android; telefon, tablet ve televizyon gibi birçok farklı cihazda çalışacak şekilde tasarlanmıştır. Cihaz çeşitliliği, uygulamanız için devasa 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 konusunda 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 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ü 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 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 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 istiyorsanız 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 bir <uses-feature> öğesi 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 çalışmı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. 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 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. Her yeni 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'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 konusunu okuyun.
Android'in her yeni sürümü, önceki platform sürümlerinin API'leri kullanılarak geliştirilen uygulamalarla uyumludur. 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üne 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) kontrol etmek istediğiniz API düzeyine karşılık gelen Build.VERSION_CODES içindeki 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ı hedeflemeyi kolaylaştıran 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üşünebilirsiniz. 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.
İşletmeyle 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 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 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, uygulamanızın belirli API'leri kullanması için kullanıcı izni gerektiren bir izin sistemiyle uygulama erişimini nasıl kısıtlar?