Kısıtlı ekran desteği bildirme

Uygulamanızı tüm ekran boyutlarına ve yoğunluklarına uyum sağlayacak şekilde tasarlamanızı kesinlikle önersek de uygulamanızın belirli ekran yapılandırmalarını desteklemesini istemeyebilirsiniz. Öyleyse bu sayfada açıklandığı gibi, Android'in uygulamanızı yeniden boyutlandırabileceği miktarı sınırlayabilir, hatta hangi cihazların yükleyebileceğini sınırlayabilirsiniz.

Uygulamanızı belirli ekranlarla kısıtlamadan önce, birden çok ekranı destekleyecek tüm teknikleri anlamalı ve bunları elinizden gelen en iyi şekilde uygulamalısınız.

Farklı ekranlar için ayrı yapılar yayınlama

Tüm ekran yapılandırmalarını destekleyen tek bir uygulama oluşturmak makul değilse Google Play, aynı uygulama girişi için birden fazla sürüm yayınlamanıza izin verir. Bu özelliği, Google Play Store'da ayrı girişler oluşturmadan her biri farklı ekran yapılandırmalarını (manifest dosyasında belirtildiği şekilde) destekleyen ayrı yapılar sağlamak için kullanabilirsiniz.

Örneğin, uygulamanızın hem cihaz hem de tablet sürümünü yayınlamak isterseniz ancak bir APK'nın her iki ekran boyutu için de çalışmasını sağlayamıyorsanız, aynı uygulama girişi için iki APK yayınlayabilirsiniz. Google Play, her cihazın ekran yapılandırmasına bağlı olarak her cihazın ekran boyutuyla eşleşen APK'yı indirir. Android App Bundle kullanarak yayınlama sırasında, yayınlanan APK'ların ekran yoğunluğu için otomatik olarak optimize edildiğini lütfen unutmayın. Ancak ekran boyutu hedeflemede aynı yöntemin kullanılması gerekir.

Daha fazla bilgi için Farklı Ekran Boyutları için Birden Fazla APK Oluşturma bölümüne bakın.

Maksimum en boy oranı belirt

Mümkün olduğunca fazla cihazı desteklemek isteyen bir uygulama, içeriğinin ile kontrollerinin görünür ve iyi organize edildiğinden emin olmak için düzenini dinamik olarak uyarlamalıdır.

Kullanıcıların aynı zamanda uygulamaları çoklu pencere modunda çalıştırabilmesi için çoğu uygulamanın yeniden boyutlandırılabilmesi gerekir. Kullanıcı, bölünmüş ekran ve serbest biçimli modlarda yeniden boyutlandırılabilir bir etkinlik başlatabilir ve yanlarını veya köşelerini sürükleyerek etkinliğin boyutunu değiştirebilir.

Çoklu pencere modu, Android 7.0 (API düzeyi 24) veya sonraki sürümlerde çalışan tüm uygulamalar için kullanılabilir ve uygulamalar varsayılan olarak yeniden boyutlandırılabilir. Ayrıca, android:resizeableActivity=true özelliğini bir uygulamanın tamamı veya belirli etkinlikler için açık bir şekilde ayarlayabilirsiniz.

Android 12 (API düzeyi 31) varsayılan olarak çoklu pencere moduna geçer. Büyük ekranlarda (sw >= 600 dp), tüm uygulamalar, uygulama yapılandırmasından bağımsız olarak çoklu pencere modunda çalışır. resizeableActivity="false" ise uygulama, görüntüleme boyutlarına uyması için gerektiğinde uyumluluk moduna alınır. Küçük ekranlarda (sw < 600dp) sistem, bir etkinliğin çoklu pencere modunda çalışıp çalışmayacağını belirlemek için etkinliğin minWidth, minHeight ve resizeableActivity ayarlarını kontrol eder. resizeableActivity="false" ise etkinlik, minimum genişlik ve yükseklikten bağımsız olarak çoklu pencere modunu desteklemez.

30 ve önceki API düzeylerinde, uygulamanızın veya etkinliğinizin çoklu pencere modunda çalışmasını istemiyorsanız resizeableActivity=false ayarını yapın. Bu durumda, uygulama her zaman tam ekran görünür. Sistem, Android işletim sistemi düzeyine bağlı olarak bunun nasıl yapılacağını kontrol eder:

  • Uygulamanız, Android 8.0 (API düzeyi 26) ile Android 11 (API düzeyi 30) arasındaki sürümleri hedefliyorsa düzenine göre ekranın tamamını doldurur.
  • Uygulamanız Android 7.1 (API düzeyi 25) veya önceki sürümleri hedefliyorsa sistem, uygulamanın arayüz boyutunu 16:9 (yaklaşık 1,86) en boy oranına sahip bir pencereyle sınırlar. Uygulama, daha büyük ekran en boy oranına sahip bir cihazda çalıştırılıyorsa uygulama, ekranın bir kısmını kullanılmayan 16:9 sinemaskopta görünür.

Uygulama düzeniniz rastgele büyük en boy oranlarına uyum sağlayamazsa maksimum en boy oranı ayarlayarak tüm Android OS seviyelerinde sinemaskop özelliğini açıkça uygulayabilirsiniz. Oranın 2,4 (12:5) olmasını öneririz. Uygulamanız, belirttiğinizden daha büyük bir en boy oranına sahip bir cihazda çalıştığında sinemaskop yapılır. Seçtiğiniz değer Wear OS cihazlar için en az 1,0, diğer cihazlar için en az 1,33 olmalıdır. Bu sınırlardan daha küçük bir oran belirtirseniz sistem, uygulamanızın en boy oranını yukarıda açıklandığı gibi OS seviyesine göre kısıtlar.

Android 8.0 (API düzeyi 26) ve sonraki sürümler için maksimum en boy oranını ayarlamak üzere <activity> etiketinizde android:maxAspectRatio kullanarak maksimum oranı bildirin. Aşağıdaki örnekte 2,4'lük bir maksimum en boy oranının nasıl belirtileceği gösterilmektedir:

<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<activity android:maxAspectRatio="2.4">
 ...
</activity>

Android 7.1 ve önceki sürümler için <application> öğesine android.max_aspect adlı bir <meta-data> öğesini aşağıdaki gibi ekleyin:

<!-- Render on full screen up to screen aspect ratio of 2.4 -->
<!-- Use a letterbox on screens larger than 2.4 -->
<meta-data android:name="android.max_aspect" android:value="2.4" />

Maksimum en boy oranı belirlerseniz android:resizeableActivity false değerini de ayarlamayı unutmayın. Aksi takdirde, maksimum en boy oranının hiçbir etkisi yoktur.

Maksimum ekran boyutu belirtme

Uygulamanızı farklı ekran boyutlarını destekleyecek şekilde tamamen optimize etmeseniz bile, Android çoğu uygulamayı daha büyük ekranlara uyacak şekilde genişletebilir. Bu nedenle, neredeyse hiçbir zaman maksimum ekran boyutu belirtmek gerekmez.

Farklı ekran boyutları için birden fazla APK oluşturmaya karar verirseniz bir APK'yı yalnızca küçük ekranlarla sınırlamaya gerek yoktur. Büyük ekranlar için optimize edilen APK'nızın daha büyük versionCode içermesi gerekir. Böylece Google Play, bu APK'yı her zaman büyük ekranlı cihazlara verir.

Ancak Android'in uygulamanızı büyük ekranlar için yeniden boyutlandırma biçiminden hâlâ memnun değilseniz <supports-screens> manifest etiketinde largestWidthLimitDp özelliğini belirterek belirli bir genişliğin ötesinde yeniden boyutlandırmayı devre dışı bırakabilirsiniz. Ardından Android, düzeninizi yeniden boyutlandırmak yerine, düzeninizi uygulamanızın desteklediği en büyük boyutta olduğu gibi çizen ve daha sonra, tüm pikselleri ekranı dolduracak şekilde ölçeklendiren ekran uyumluluğu modunu etkinleştirir.

Uygulamanızı yalnızca tabletler veya TV'ler için kısıtlama

<supports-screens> manifest öğesini kullanarak telefon cihazlarının uygulamanızı indirmesini engelleyebilirsiniz.

Örneğin aşağıda, uygulamanızı yalnızca büyük ve çok büyük ekranların yüklemesi gerektiği beyan edilmektedir:

<manifest ... >
    <supports-screens android:smallScreens="false"
                      android:normalScreens="false"
                      android:largeScreens="true"
                      android:xlargeScreens="true"/>
    ...
</manifest>

Uygulamanızı yalnızca belirli boyut ve yoğunluklara göre kısıtlama

<compatible-screens> manifest öğesini kullanarak uygulamanızın desteklediği tam ekran boyutlarını ve yoğunluklarını tanımlayabilirsiniz. Ancak belirtmediğiniz herhangi bir boyut ve yoğunluk kombinasyonu uygulamanızın uyumlu olmadığı bir ekran yapılandırması olarak kabul edildiğinden, bunu kullanmaktan kaçınmanızı önemle tavsiye ederiz. Dolayısıyla bu öğeyi kullanmak, uygulamanızın gerçekten destekleyebileceği çok sayıda cihazda uygulamanızı engellemenizi kolaylaştırır.

<compatible-screens> öğesi bir veya daha fazla <screen> öğesi içermelidir. Her <screen> öğesi, hem android:screenSize hem de android:screenDensity özelliklerini kullanarak uygulamanızın uyumlu olduğu bir ekran yapılandırması belirtir. Her <screen> öğesi, bağımsız bir ekran yapılandırması belirtmek için her iki özelliği de içermelidir. Özelliklerden herhangi biri eksikse öğe geçersiz olur (Google Play gibi harici hizmetler bu özelliği yoksayar).

Uygulamanız yalnızca küçük ve normal ekran boyutlarıyla (ve ekran yoğunluklarının bir alt kümesiyle) uyumluysa manifest girişi şu şekilde görünür:

<manifest ... >
    <compatible-screens>
        <!-- all small size screens -->
        <screen android:screenSize="small" android:screenDensity="ldpi" />
        <screen android:screenSize="small" android:screenDensity="mdpi" />
        <screen android:screenSize="small" android:screenDensity="hdpi" />
        <screen android:screenSize="small" android:screenDensity="xhdpi" />
        <!-- all normal size screens -->
        <screen android:screenSize="normal" android:screenDensity="ldpi" />
        <screen android:screenSize="normal" android:screenDensity="mdpi" />
        <screen android:screenSize="normal" android:screenDensity="hdpi" />
        <screen android:screenSize="normal" android:screenDensity="xhdpi" />
    </compatible-screens>
    ...
    <application ... >
        ...
    <application>
</manifest>

Burada açıkça belirtilmeyen tüm boyut ve yoğunluk kombinasyonlarının uygulamayı yüklemesi kısıtlanır.