تم تصميم نظام التشغيل 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()
النحو التالي:
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature() }
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
:
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) ... } }
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
ويتوافق مع مستوى واجهة برمجة التطبيقات الذي تريد التحقق منه، كما هو موضح في ما يلي
مثال:
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() }
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 سمتَين لكل جهاز: حجم الشاشة (الحجم الفعلي للشاشة) وكثافة الشاشة (الكثافة الفعلية للبكسل على الشاشة، والمعروفة باسم عدد النقاط لكل بوصة). لتبسيط الإعدادات المختلفة، يُجمِّع Android هذه الأسعار المتغيرة في مجموعات تسهِّل استهدافها:
- أربعة أحجام عامة: صغير، عادي، كبير، كبير جدًا
- العديد من الكثافات المعممة: mdpi (متوسط)، hdpi (مرتفع)، xhdpi (إضافي عالية)، وxxhdpi (مرتفعة للغاية)، وغيرها
يكون تطبيقك متوافقًا تلقائيًا مع جميع أحجام الشاشات وكثافتها، لأنّ النظام يُجري تعديلات على تنسيق واجهة المستخدم وموارد الصور كما هو مطلوب لكل شاشة. قدِّم صورًا نقطية محسّنة لكثافة الشاشة الشائعة.
يمكنك تحسين تجربة المستخدم من خلال استخدام تنسيقات مرنة قدر الإمكان. حيث توجد تخطيطات لتغييرات التهيئة الكبيرة، مثل العمودي أو نوافذ أفقية أو كبيرة مقابل نوافذ صغيرة، ننصحك بتوفير طرق بديلة تخطيطات مرنة للتغييرات الأصغر في التهيئة. سيتحسّن ذلك تجربة المستخدم على أشكال الأجهزة مثل الأجهزة اللوحية والهواتف والأجهزة القابلة للطي. ويساعدك هذا الإجراء أيضًا عند تغيير حجم النوافذ في وضع "النوافذ المتعددة".
للحصول على معلومات حول كيفية إنشاء موارد بديلة لمختلف وكيفية حصر تطبيقك بأحجام شاشات معيّنة عند الضرورة قراءة توافق الشاشة نظرة عامة والاطلاع على تطبيق الشاشة الكبيرة إرشادات الجودة.
التحكّم في مدى توفّر تطبيقك لأسباب تتعلّق بالنشاط التجاري
بالإضافة إلى حظر توفُّر تطبيقك حسب الجهاز قد تحتاج إلى تقييد توفّر تطبيقك للنشاط التجاري أو لأسباب قانونية. وفي مثل هذا النوع من الحالات، يوفّر "متجر Google Play" خيارات الفلترة في Play Console التي تتيح لك التحكّم في مدى التوفّر لأسباب غير تقنية، مثل لغة المستخدم أو الاتصال اللاسلكي الشبكة.
تصفية التوافق الفني، مثل الأجهزة المطلوبة المكونات—يستند دائمًا إلى المعلومات المتوفرة في حزمة APK أو AAB الملف. لكن الفلترة لأسباب غير تقنية، مثل المواقع الجغرافية اللغة - يتم التعامل معها دائمًا في Google Play Console
معلومات إضافية:
- نظرة عامة على موارد التطبيقات
- معلومات عن كيفية تنظيم تطبيقات Android لفصل موارد التطبيق عن رمز التطبيق، بما في ذلك كيفية توفير موارد بديلة لإعدادات أجهزة معيّنة
- الفلاتر على Google Play
- معلومات حول الطرق المختلفة التي يمكن لتطبيق "متجر Google Play" من خلالها منع تطبيقك على أجهزة مختلفة.
- الأذونات على Android
- كيف يفرض Android قيودًا على وصول التطبيقات إلى واجهات برمجة تطبيقات معيّنة باستخدام نظام أذونات يتطلب موافقة المستخدم على استخدام تطبيقك لهذه الواجهات