تقديم بيان أذونات الوصول إلى الشاشة المشروطة

على الرغم من أنّنا ننصح بشدة بتصميم تطبيقك حتى يتكيف مع جميع أحجام الشاشات وكثافاتها، قد لا تحتاج إلى أن يتوافق تطبيقك مع إعدادات بعض الشاشات. فإذا كان الأمر كذلك، يمكنك تحديد مقدار حجم التطبيق الذي يستطيع Android تغييره أو تحديد الأجهزة التي يمكنها تثبيته، كما هو موضّح في هذه الصفحة.

قبل أن يقتصر تطبيقك على شاشات معينة، ينبغي عليك فهم جميع أساليب إتاحة استخدام شاشات متعددة وتنفيذها بقدر المستطاع.

نشر عناصر منفصلة للشاشات المختلفة

إذا كان من غير المنطقي إنشاء تطبيق واحد يتوافق مع جميع عمليات إعداد الشاشة، يسمح لك Google Play بنشر إصدارات متعددة لبطاقة بيانات التطبيق نفسها. ويمكنك استخدام هذه الميزة لتوفير عناصر منفصلة يتيح كل منها ضبط مجموعة مختلفة من إعدادات الشاشات (كما هو موضّح في ملف البيان) بدون إنشاء بطاقات بيانات منفصلة في "متجر Google Play".

على سبيل المثال، إذا كنت تريد نشر إصدار من تطبيقك وإصدار جهاز لوحي معًا، إلا أنه لا يمكنك جعل ملف APK واحد يناسب كل من حجمي الشاشة، فيمكنك نشر ملفي APK لبطاقة بيانات التطبيق نفسها. وفقًا لإعدادات شاشة كل جهاز، سينزّل Google Play حزمة APK التي تتوافق مع حجم شاشة كل جهاز. يُرجى العِلم أنّه عند النشر باستخدام مجموعة حزمات تطبيق Android، يتم تحسين حِزم APK التي تم إرسالها تلقائيًا بما يتوافق مع كثافة الشاشة، ويجب استخدام الطريقة نفسها في حال استهداف حجم الشاشة.

لمزيد من المعلومات، يُرجى الاطّلاع على إنشاء عدة حِزم APK لأحجام شاشات مختلفة.

تعريف الحدّ الأقصى لنسبة العرض إلى الارتفاع

لإتاحة أكبر عدد ممكن من الأجهزة، يجب أن يعدِّل التطبيق تنسيقه ديناميكيًا لضمان ظهور المحتوى وعناصر التحكّم فيه بشكل جيد ومنظمة.

ويجب أن تكون معظم التطبيقات قابلة لتغيير الحجم حتى يتمكّن المستخدم من تشغيلها في وضع النوافذ المتعددة. يمكن للمستخدم بدء نشاط قابل لتغيير الحجم في وضعي تقسيم الشاشة والشكل الحر وتغيير حجم النشاط عن طريق سحب جوانبه أو زواياه.

يتوفّر وضع النوافذ المتعددة لجميع التطبيقات التي تعمل بالإصدار 7.0 من نظام التشغيل Android (المستوى 24 من واجهة برمجة التطبيقات) أو الإصدارات الأحدث، ويمكن تغيير حجم التطبيقات تلقائيًا. ويمكنك أيضًا ضبط السمة android:resizeableActivity=true بشكل صريح لتطبيق كامل أو لأنشطة معيّنة.

الإعداد التلقائي لنظام التشغيل Android 12 (المستوى 31 لواجهة برمجة التطبيقات) هو وضع النوافذ المتعددة. في الشاشات الكبيرة (sw >= 600dp)، تعمل جميع التطبيقات في وضع النوافذ المتعددة بغض النظر عن إعدادات التطبيق. إذا كان resizeableActivity="false"، يتم إدراج التطبيق في وضع التوافق عند الضرورة للامتثال لأبعاد العرض. على الشاشات الصغيرة (sw < 600dp)، يتحقّق النظام من إعدادات minWidth وminHeight وresizeableActivity للنشاط لتحديد ما إذا كان يمكن تشغيله في وضع النوافذ المتعددة. إذا resizeableActivity="false"، لا يتيح النشاط استخدام وضع النوافذ المتعددة بغض النظر عن الحد الأدنى للعرض والارتفاع للنشاط.

في المستوى 30 لواجهة برمجة التطبيقات والمستويات الأقدم، إذا كنت لا تريد تشغيل تطبيقك أو نشاطك في وضع النوافذ المتعددة، يمكنك ضبط resizeableActivity=false. في هذه الحالة، يظهر التطبيق دائمًا بملء الشاشة. يتحكم النظام في كيفية القيام بذلك، بناءً على مستوى نظام التشغيل Android:

  • إذا كان تطبيقك يستهدف الإصدار Android 8.0 (المستوى 26 من واجهة برمجة التطبيقات) إلى Android 11 (المستوى 30)، سيملأ التطبيق الشاشة بأكملها وفقًا لتنسيقها.
  • إذا كان تطبيقك يستهدف الإصدار 7.1 من نظام التشغيل Android (المستوى 25 من واجهة برمجة التطبيقات) أو الإصدارات الأقدم، يحصر النظام حجم واجهة التطبيق بنافذة تبلغ نسبة العرض إلى الارتفاع فيها 16:9 (1.86 تقريبًا). إذا كان التطبيق يعمل على جهاز بنسبة عرض إلى ارتفاع أكبر على الشاشة، فإن التطبيق يظهر في شاشة أفقية بحجم 16:9 ويترك جزءًا من الشاشة غير مستخدم.

إذا لم يتمكّن تنسيق تطبيقك من التكيف مع نِسب عرض إلى ارتفاع كبيرة عشوائيًا، يمكنك فرض استخدام تنسيق مُعدّ للعرض على شاشة عريضة أفقيًا على جميع مستويات نظام التشغيل Android من خلال ضبط حد أقصى لنسبة العرض إلى الارتفاع. ننصحك باستخدام نسبة العرض إلى الارتفاع 2.4 (12:5). سيتم عرض تطبيقك على شاشة عريضة أفقيًا عند تشغيله على جهاز بنسبة عرض إلى ارتفاع أكبر من الجهاز الذي تحدّده يجب أن تكون القيمة التي تختارها 1.0 على الأقل للأجهزة التي تعمل بنظام التشغيل Wear OS و1.33 على الأقل للأجهزة الأخرى. إذا حددت نسبة أصغر من هذه الحدود، سيقيّد النظام نسبة العرض إلى الارتفاع لتطبيقك بناءً على مستوى نظام التشغيل كما هو موضّح أعلاه.

لضبط الحد الأقصى لنسبة العرض إلى الارتفاع في Android 8.0 (المستوى 26 لواجهة برمجة التطبيقات) والإصدارات الأحدث، حدِّد الحدّ الأقصى لنسبة العرض إلى الارتفاع باستخدام android:maxAspectRatio في علامة <activity>. يوضّح المثال التالي كيفية الإعلان عن حد أقصى لنسبة العرض إلى الارتفاع، وهي 2.4:

<!-- 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>

بالنسبة إلى الإصدار 7.1 من نظام التشغيل Android والإصدارات الأقدم، أضِف عنصر <meta-data> باسم android.max_aspect إلى عنصر <application> على النحو التالي:

<!-- 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" />

عند ضبط حد أقصى لنسبة العرض إلى الارتفاع، لا تنسَ ضبط android:resizeableActivity false أيضًا. وبخلاف ذلك، لن يكون للحد الأقصى لنسبة العرض إلى الارتفاع أي تأثير.

تعريف الحد الأقصى لحجم الشاشة

حتى إذا لم يتم تحسين تطبيقك بالكامل ليتوافق مع أحجام الشاشات المختلفة، سيظل بإمكان Android تعديل معظم التطبيقات لتلائم الشاشات الأكبر حجمًا. لذلك، ليس من الضروري أبدًا إعلان الحد الأقصى لحجم الشاشة.

وإذا قررت إنشاء حِزم APK متعدّدة لأحجام شاشات مختلفة، لن يكون من الضروري حصر حزمة APK على الشاشات الصغيرة فقط، لأنّ حزمة APK المحسَّنة للشاشات الكبيرة يجب أن تتضمّن "versionCode" الأكبر، لذلك يوفّر Google Play دائمًا ملف APK هذا للأجهزة ذات الشاشات الكبيرة.

ومع ذلك، إذا كنت لا تزال غير راضٍ عن الطريقة التي يغيّر بها Android حجم تطبيقك للشاشات الكبيرة، يمكنك إيقاف تغيير الحجم بما يتجاوز عرض معيّن من خلال تحديد السمة largestWidthLimitDp في علامة البيان <supports-screens>. بعد ذلك، بدلاً من تغيير حجم التنسيق، يتيح Android وضع توافق الشاشة الذي يرسم التنسيق كما هو الحال على أكبر حجم يتوافق مع تطبيقك، ثم يزيد حجم جميع وحدات البكسل لملء الشاشة.

حظر عرض تطبيقك على الأجهزة اللوحية أو أجهزة التلفزيون فقط

يمكنك منع أجهزة الهاتف من تنزيل تطبيقك باستخدام عنصر البيان <supports-screens>.

على سبيل المثال، يوضح ما يلي أنّه يجب تثبيت تطبيقك على الشاشات الكبيرة والكبيرة فقط:

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

تقييد محتوى التطبيق بأحجام وكثافة معيّنة فقط

يمكنك تحديد أحجام الشاشة وكثافاتها الدقيقة المتوافقة مع تطبيقك باستخدام عنصر البيان <compatible-screens>. ولكننا ننصحك بشدة بتجنُّب استخدام هذه الفئة لأن أي مزيج من الحجم والكثافة لا تحدِّده يُعتبر إعداد شاشة لا يتوافق معه تطبيقك. لذا فإن استخدام هذا العنصر يسهّل حظر تطبيقك من العديد من الأجهزة التي يمكن لتطبيقك دعمها بالفعل.

يجب أن يحتوي العنصر <compatible-screens> على عنصر <screen> واحد أو أكثر. ويحدّد كل عنصر <screen> إعدادات شاشة يتوافق معها تطبيقك، وذلك باستخدام السمتَين android:screenSize وandroid:screenDensity. يجب أن يتضمن كل <screen> عنصر كلا السمتين لتحديد تهيئة شاشة فردية — وفي حالة عدم وجود أي سمة، يكون العنصر غير صالح (ستتجاهله الخدمات الخارجية مثل Google Play).

إليك كيفية ظهور إدخال البيان إذا كان تطبيقك متوافقًا مع أحجام الشاشات الصغيرة والعادية فقط (ومجموعة فرعية من كثافات الشاشات):

<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>

وسيتم منع تثبيت التطبيق من خلال أي تركيبة للحجم والكثافة لم يتم توضيحها صراحةً هنا.