نظرة عامة على توافق الأجهزة

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

للمساعدة في توافُق الأجهزة، يوفّر Android إطار عمل ديناميكيًا للتطبيقات يمكنك من خلاله توفير ميزات محددة موارد التطبيق في الثابتة مثل تنسيقات XML المختلفة لأحجام الشاشات المختلفة. Android ثم يحمّل الموارد المناسبة بناءً على الإعدادات الحالية للجهاز. مع تصميم التطبيق وموارد التطبيق الإضافية، يمكنك نشر حزمة تطبيق واحد (APK) تعمل على تحسين تجربة المستخدم على مجموعة متنوعة من الأجهزة.

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

ماذا يعني "التوافق" أعني؟

فيما يتعلق بتطوير تطبيقات Android، هناك نوعان من التوافق: توافق الجهاز وتوافق التطبيقات.

وبما أنّ Android مشروع مفتوح المصدر، يمكن لأي شركة مصنّعة للأجهزة إنشاء جهاز يعمل بنظام التشغيل Android. لكن الجهاز "متوافق مع Android" فقط إذا كان بإمكانه تشغيل التطبيقات المصمَّمة خصيصًا بيئة تنفيذ Android: التفاصيل الدقيقة لنظام Android بيئة التنفيذ من خلال أجهزة Android برنامج التوافق. يجب أن يجتاز كل جهاز مجموعة أدوات اختبار التوافق. (CTS) ليتم اعتبارها متوافقة.

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

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

التحكّم في مدى توفُّر تطبيقك على الأجهزة

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

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

ميزات الجهاز

لإدارة مدى توفُّر تطبيقك استنادًا إلى ميزات الجهاز، يحدّد نظام Android معرّفات الميزات لأي ميزات في الأجهزة أو البرامج قد لا تكون متاحة متاحة على جميع الأجهزة. على سبيل المثال، معرّف الميزة لمستشعر البوصلة هو FEATURE_SENSOR_COMPASS, ومعرّف الميزة لأدوات التطبيق هو FEATURE_APP_WIDGETS

وإذا لزم الأمر، يمكنك منع المستخدمين من تثبيت تطبيقك عند الأجهزة لا توفر ميزة ضرورية من خلال الإعلان عن الميزة باستخدام <uses-feature> العنصر في موضع تطبيقك ملف البيان.

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

<manifest ... >
    <uses-feature android:name="android.hardware.sensor.compass"
                  android:required="true" />
    ...
</manifest>

يقارن "متجر Google Play" بين الميزات التي يتطلبها تطبيقك الميزات المتوفرة على كل جهاز مستخدم لتحديد ما إذا كان تطبيقك متوافقة مع كل جهاز. إذا كان الجهاز لا يحتوي على كل الميزات التطبيقات المطلوبة، لا يمكن للمستخدم تثبيت تطبيقك.

ومع ذلك، إذا كانت الوظيفة الأساسية لتطبيقك لا تتطلب ميزة جهاز المستخدم، يمكنك ضبط required إلى "false" والتحقق من ميزة الجهاز في وقت التشغيل. إذا لم تكن ميزة التطبيق متاحة على الجهاز الحالي، عليك خفض ترتيب المقابلة لها. على سبيل المثال، يمكنك الاستعلام عما إذا كان العنصر متاح من خلال الاتصال hasSystemFeature() النحو التالي:

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();
}

للحصول على معلومات عن جميع الفلاتر التي يمكنك استخدامها للتحكّم في مدى توفّرها لتطبيقك من خلال متجر Google Play، فراجع الفلاتر على Google Play التوثيق.

إصدار النظام الأساسي

قد تعمل أجهزة مختلفة بإصدارات مختلفة من نظام Android الأساسي، مثل مثل Android 12 أو Android 13. غالبًا ما يضيف كل إصدار متتابع من الأنظمة الأساسية واجهات برمجة تطبيقات غير متاح في الإصدار السابق. للإشارة إلى مجموعة واجهات برمجة التطبيقات المتاحة، يحدد كل إصدار من إصدارات النظام الأساسي مستوى واجهة برمجة التطبيقات: على سبيل المثال، Android 12 هو المستوى 31 من واجهة برمجة التطبيقات، في حين يشير Android 13 إلى المستوى 33 من واجهة برمجة التطبيقات.

يجب تحديد minSdkVersion أو targetSdkVersion القيم في ملف build.gradle:

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، يُرجى قراءة عليك ضبط الإصدار.

يوفّر كل إصدار متتالية من Android التوافق مع التطبيقات المصمَّمة. باستخدام واجهات برمجة التطبيقات من إصدارات الأنظمة الأساسية السابقة، بحيث يصبح تطبيقك متوافقًا مع الإصدارات المستقبلية من Android أثناء استخدام واجهات برمجة تطبيقات Android الموثقة.

ولكن إذا كان تطبيقك يستخدم واجهات برمجة التطبيقات المضافة في إصدار نظام أساسي أحدث، ولكن لا تتطلبها لوظائفها الأساسية، فتحقق من مستوى واجهة برمجة التطبيقات على ثم خفض الميزات المتوافقة بشكل سلس عندما يكون مستوى واجهة برمجة التطبيقات منخفضة جدًا. في هذه الحالة، اضبط minSdkVersion على أدنى قيمة. من خلال الوظيفة الأساسية لتطبيقك، ثم مقارنة وظائف النظام الحالي والإصدار، SDK_INT, إلى ثابت الاسم الرمزي في Build.VERSION_CODES ويتوافق مع مستوى واجهة برمجة التطبيقات الذي تريد التحقق منه، كما هو موضح في ما يلي مثال:

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();
}

إعدادات الشاشة

يعمل نظام التشغيل Android على أجهزة بأحجام مختلفة، مثل الهواتف والأجهزة اللوحية وأجهزة التلفزيون. إلى الأجهزة حسب نوع الشاشة، يحدد Android سمتين كل جهاز: حجم الشاشة (الحجم الفعلي للشاشة) وكثافة الشاشة (الكثافة الفيزيائية للبكسل على الشاشة، والمعروفة باسم نقطة لكل بوصة (DPI)). لتبسيط مختلف فإن Android يعمم هذه المتغيرات إلى مجموعات تجعلها أسهل في الاستهداف:

  • أربعة أحجام عامة: صغير، عادي، كبير، كبير جدًا
  • العديد من الكثافات المعممة: mdpi (متوسط)، hdpi (مرتفع)، xhdpi (إضافي عالية)، وxxhdpi (مرتفعة للغاية)، وغيرها

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

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

للحصول على معلومات حول كيفية إنشاء موارد بديلة لمختلف وكيفية حصر تطبيقك بأحجام شاشات معيّنة عند الضرورة قراءة توافق الشاشة نظرة عامة والاطلاع على تطبيق الشاشة الكبيرة إرشادات الجودة.

التحكّم في مدى توفُّر تطبيقك لأغراض تجارية

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

تصفية التوافق الفني، مثل الأجهزة المطلوبة المكونات—يستند دائمًا إلى المعلومات المتوفرة في حزمة APK أو AAB الملف. لكن الفلترة لأسباب غير تقنية، مثل المواقع الجغرافية اللغة - يتم التعامل معها دائمًا في Google Play Console

معلومات إضافية:

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