ويطبق غوغل بلاي قواعد مختلفة قليلا عما هو موضح أعلاه، عند تحديد التصفية للبلوتوث.
إذا كان أحد التطبيقات يعلن عن إذن بليتوث في عنصر <uses-permission> ، ولكنه لا يعلن صراحة ميزة البلوتوث في عنصر <uses-feature> ، فإن غوغل بلاي يتحقق من إصدار (إصدارات) نظام التشغيل أندرويد الذي يكون التطبيق عليه مصممة للتشغيل، كما هو محدد في عنصر <uses-sdk> .
كما هو مبين في الجدول أدناه، جوجل اللعب تمكن تصفية لميزة بلوتوث فقط إذا كان التطبيق يعلن أدنى أو استهداف منصة كما الروبوت 2.0 (أبي مستوى 5) أو أعلى. ومع ذلك، لاحظ أن غوغل بلاي يطبق القواعد العادية للتصفية عندما يعلن التطبيق بوضوح عن ميزة البلوتوث في عنصر <uses-feature> .
جدول 1. كيفية تحديد غوغل بلاي لمتطلبات ميزة بليتوث لتطبيق يطلب إذن بليتوث ولكنه لا يعلن ميزة بليتوث في عنصر <uses-feature> .
إذا كان minSdkVersion هو ... أو targetSdkVersion هو نتيجة
توضح الأمثلة أدناه تأثيرات التصفية المختلفة، استنادا إلى كيفية تعامل غوغل بلاي مع ميزة البلوتوث.
If minSdkVersion is ... | or targetSdkVersion is | Result |
<=4 (or uses-sdk is not declared) | <=4 | Google Play will not filter the application from any devices based on their reported support for the android.hardware.bluetooth feature. |
<=4 | >=5 | Google Play filters the application from any devices that do not support the android.hardware.bluetooth feature (including older releases). |
>=5 | >=5 |
توضح الأمثلة أدناه تأثيرات التصفية المختلفة، استنادا إلى كيفية تعامل غوغل بلاي مع ميزة البلوتوث.
في المثال الأول، أحد التطبيقات المصممة للتشغيل على مستويات أبي القديمة يعلن عن إذن بليتوث، ولكنه لا يعلن ميزة بليتوث في عنصر <uses-feature> .
النتيجة: لا يقوم غوغل بلاي بتصفية التطبيق من أي جهاز.
.
<manifest ...>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-sdk android:minSdkVersion="3" />
...</manifest>
- في المثال الثاني، أدناه، نفس التطبيق أيضا يعلن مستوى أبي الهدف من "5".
- النتيجة: يفترض غوغل بلاي الآن أن هذه الميزة مطلوبة وستعمل على تصفية التطبيق من جميع الأجهزة التي لا تبلغ عن دعم البلوتوث، بما في ذلك الأجهزة التي تستخدم إصدارات قديمة من النظام الأساسي.
<manifest ...>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
...</manifest>
- هنا نفس التطبيق الآن يعلن على وجه التحديد ميزة بلوتوث.
- النتيجة: متطابقة مع المثال السابق (يتم تطبيق التصفية).
- .
<manifest ...>
<uses-feature android:name="android.hardware.bluetooth" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
...</manifest>
- وأخيرا، في الحالة أدناه، نفس التطبيق يضيف android:required="false" السمة android:required="false" .
- النتيجة: يعطل غوغل بلاي التصفية استنادا إلى دعم ميزة البلوتوث، لجميع الأجهزة.
- .
<manifest ...>
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="5" />
...</manifest>
اختبار الميزات المطلوبة من قبل التطبيق الخاص بك
يمكنك استخدام أداة aapt ، المضمنة في سك أندرويد، لتحديد كيفية تصفية غوغل بلاي للتطبيق، استنادا إلى الميزات والأذونات المعلنة. للقيام بذلك، قم بتشغيل aapt باستخدام الأمر aapt . يؤدي هذا إلى تحليل بيان تطبيقك وتطبيق القواعد نفسها التي يستخدمها غوغل بلاي لتحديد الميزات التي يتطلبها تطبيقك.
لاستخدام الأداة، اتبع الخطوات التالية:
أولا، بناء وتصدير التطبيق الخاص بك باعتبارها .apk غير موقعة. إذا كنت تقوم بتطوير في الروبوت ستوديو، بناء التطبيق الخاص بك مع غرادل:
افتح المشروع وحدد تشغيل> تعديل التهيئات .
حدد علامة الجمع بالقرب من الزاوية العلوية اليمنى من نافذة تكوين / تصحيح أخطاء التصحيح .
حدد غرادل.
أدخل Unsigned APK في الاسم .
اختر الوحدة النمطية الخاصة بك من قسم مشروع غرادل .
أدخل assemble في المهام .
حدد موافق لإكمال التهيئة الجديدة.
تأكد من تحديد تهيئة تشغيل أبك غير الموقعة في شريط الأدوات وحدد تشغيل> تشغيل "أبك غير الموقعة" .
يمكنك العثور على .apk غير الموقعة في الدليل < ProjectName >/app/build/outputs/apk/ .apk < ProjectName >/app/build/outputs/apk/ .apk / .apk < ProjectName >/app/build/outputs/apk/ .
بعد ذلك، حدد موقع الأداة aapt ، إذا لم يكن بالفعل في باث الخاص بك. إذا كنت تستخدم أدوات سك r8 أو أعلى، فيمكنك العثور على aapt في الدليل < SDK >/build-tools/< tools version number > aapt / < SDK >/build-tools/< tools version number > aapt < SDK >/build-tools/< tools version number > .
ملاحظة: يجب استخدام إصدار aapt الذي تم توفيره لأحدث مكون أدوات البناء المتوفر. إذا لم يكن لديك أحدث مكون من أدوات الإنشاء، فيمكنك تنزيله باستخدام مدير أندرويد سك .
تشغيل aapt باستخدام هذه البنية:
$ aapt dump badging <path_to_exported_.apk>
في ما يلي مثال على إخراج الأمر لمثال بليتوث الثاني، أعلاه:
:
$ ./aapt dump badging BTExample.apkpackage: name='com.example.android.btexample' versionCode='' versionName=''
uses-permission:'android.permission.BLUETOOTH_ADMIN'
uses-feature:'android.hardware.bluetooth'
sdkVersion:'3'
targetSdkVersion:'5'
application: label='BT Example' icon='res/drawable/app_bt_ex.png'
launchable activity name='com.example.android.btexample.MyActivity'label='' icon=''
uses-feature:'android.hardware.touchscreen'
main
supports-screens: 'small' 'normal' 'large'
locales: '--_--'
densities: '160'
ميزات المرجع
توفر الأقسام التالية معلومات مرجعية حول ميزات الأجهزة وميزات البرامج ومجموعات الأذونات التي تتضمن متطلبات ميزات محددة.
ميزات الأجهزة
يعرض هذا القسم ميزات الأجهزة التي تدعمها أحدث إصدار منصة. للإشارة إلى أن التطبيق الخاص بك يستخدم أو يتطلب ميزة الأجهزة، تعلن القيمة المقابلة (بدءا من "android.hardware" ) في android:name السمة. في كل مرة تعلن فيها عن ميزة الأجهزة، استخدم عنصر <uses-feature> منفصل.
ميزات الأجهزة الصوتية
android.hardware.audio.low_latency
يستخدم التطبيق خط أنابيب الصوت الكمون المنخفض للجهاز، مما يقلل من التأخير والتأخير عند معالجة إدخال الصوت أو الإخراج.
android.hardware.audio.output
التطبيق ينقل الصوت باستخدام مكبرات الصوت للجهاز، جاك الصوت، قدرات بلوتوث تدفق، أو آلية مماثلة.
android.hardware.audio.pro
يستخدم التطبيق وظائف الصوت الراقية الجهاز وقدرات الأداء.
android.hardware.microphone
يسجل التطبيق الصوت باستخدام ميكروفون الجهاز.
ميزات الأجهزة بلوتوث
android.hardware.bluetooth
يستخدم التطبيق ميزات بلوتوث للجهاز، وعادة للتواصل مع الأجهزة الأخرى التي تدعم بلوتوث.
android.hardware.bluetooth_le
يستخدم التطبيق ميزات بلوتوث بلوتوث منخفضة الطاقة للجهاز.
ميزات أجهزة الكاميرا
android.hardware.camera
يستخدم التطبيق الكاميرا الخلفية التي تواجه الجهاز. الأجهزة مع الكاميرا الأمامية فقط لا تسرد هذه الميزة، وذلك باستخدام ميزة android.hardware.camera.any بدلا من ذلك إذا كان التطبيق الخاص بك يمكن التواصل مع أي كاميرا، بغض النظر عن أي اتجاه تواجه الكاميرا.
android.hardware.camera.any
يستخدم التطبيق واحدة من كاميرات الجهاز، أو الكاميرا الخارجية التي يربط المستخدم إلى الجهاز. استخدام هذه القيمة بدلا من android.hardware.camera إذا كان التطبيق الخاص بك لا يتطلب الكاميرا لتكون واحدة تواجه الظهر.
android.hardware.camera.autofocus
يستخدم التطبيق ميزة ضبط تلقائي للصورة التي تدعمها كاميرا الجهاز.
باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .
android.hardware.camera.capability.manual_post_processing
يستخدم التطبيق ميزة MANUAL_POST_PROCESSING التي تدعمها كاميرا الجهاز.
هذه الميزة تسمح التطبيق الخاص بك لتجاوز وظيفة توازن اللون الأبيض السيارات الكاميرا. استخدام android.colorCorrection.transform ، android.colorCorrection.gains ، و android.colorCorrection.mode من TRANSFORM_MATRIX .
android.hardware.camera.capability.manual_sensor
يستخدم التطبيق ميزة MANUAL_SENSOR التي تدعمها كاميرا الجهاز.
وتعني هذه الميزة دعم القفل التلقائي للتعرض ( android.control.aeLock )، الذي يسمح بتعرض وقت الكاميرا والحساسية لتبقى ثابتة عند قيم محددة.
android.hardware.camera.capability.raw
يستخدم التطبيق ميزة RAW أن كاميرا الجهاز يدعم.
وتعني هذه الميزة أن الجهاز يمكنه حفظ ملفات دنغ (الخام) وأن كاميرا الجهاز توفر البيانات الوصفية المتعلقة ب دنغ اللازمة لتطبيقك لمعالجة هذه الصور الأولية مباشرة.
android.hardware.camera.external
التطبيق يتصل مع الكاميرا الخارجية التي يربط المستخدم إلى الجهاز. هذه الميزة لا تضمن، مع ذلك، أن الكاميرا الخارجية متاحة لتطبيقك لاستخدامها.
android.hardware.camera.flash
يستخدم التطبيق ميزة فلاش أن كاميرا الجهاز يدعم.
باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .
android.hardware.camera.front
يستخدم التطبيق الكاميرا الأمامية التي تواجه الجهاز.
باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.camera ، ما لم يتم الإعلان عن هذه الميزة الأم مع android:required="false" .
android.hardware.camera.level.full
يستخدم التطبيق FULL مستوى صورة التقاط الدعم أن واحدة على الأقل من الكاميرات الجهاز يوفر. وتوفر الكاميرات ذات الدعم FULL قدرات التقاط الصور، والتحكم في كل إطار، والتحكم اليدوي في مرحلة ما بعد المعالجة.
ميزات الأجهزة واجهة المستخدم الجهاز
android.hardware.type.automotive
تم تصميم التطبيق لإظهار واجهة المستخدم على مجموعة من الشاشات داخل السيارة. المستخدم يتفاعل مع التطبيق باستخدام أزرار الثابت، لمسة، وحدات تحكم دوارة، والماوس مثل واجهات. تظهر شاشات السيارة عادة في الكونسول المركزي أو مجموعة أجهزة السيارة. وعادة ما تكون هذه الشاشات محدودة الحجم والقرار.
ملاحظة: من المهم أن نضع في اعتبارنا أنه منذ المستخدم يقود أثناء استخدام هذا النوع من واجهة المستخدم التطبيق، يجب التطبيق تقليل الهاء السائق.
android.hardware.type.television
(ديبريكاتد؛ استخدام android.software.leanback بدلا من ذلك.)
تم تصميم التطبيق لإظهار واجهة المستخدم على التلفزيون. وتعرف هذه الميزة "التليفزيون" بأنها تجربة تلفزيون نموذجية في غرفة المعيشة: يتم عرضها على شاشة كبيرة، حيث يجلس المستخدم بعيدا، والشكل السائد من المدخلات هو شيء مثل لوحة د، ولا يستخدم عموما مؤشر الماوس ، أو لمس الجهاز.
android.hardware.type.watch
تم تصميم التطبيق لإظهار واجهة المستخدم على ساعة. يتم ارتداؤها ساعة على الجسم، مثل على المعصم. المستخدم قريب جدا من الجهاز أثناء التفاعل معه.
ميزات جهاز بصمات الأصابع
android.hardware.fingerprint
التطبيق يقرأ بصمات الأصابع باستخدام الأجهزة البيومترية للجهاز.
ميزات الأجهزة غمبد
android.hardware.gamepad
التطبيق يلتقط مدخلات وحدة تحكم اللعبة، إما من الجهاز نفسه أو من غمبد متصلة.
ميزات الأجهزة الأشعة تحت الحمراء
android.hardware.consumerir
يستخدم التطبيق قدرات الأشعة تحت الحمراء للجهاز (الأشعة تحت الحمراء)، وعادة للتواصل مع أجهزة الأشعة تحت الحمراء المستهلك الأخرى.
ميزات أجهزة الموقع
android.hardware.location
يستخدم التطبيق واحد أو أكثر من الميزات على الجهاز لتحديد الموقع، مثل موقع غس، موقع الشبكة، أو موقع الخلية.
android.hardware.location.gps
يستخدم التطبيق إحداثيات الموقع الدقيق التي تم الحصول عليها من نظام تحديد المواقع العالمي (غس) المتلقي على الجهاز.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا ميزة android.hardware.location ، إلا إذا تم الإعلان عن هذه الميزة الأم مع السمة android:required="false" .
android.hardware.location.network
يستخدم التطبيق إحداثيات موقع الخشنة التي تم الحصول عليها من نظام تحديد الموقع الجغرافي المستندة إلى الشبكة المدعومة على الجهاز.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا ميزة android.hardware.location ، إلا إذا تم الإعلان عن هذه الميزة الأم مع السمة android:required="false" .
ميزات الأجهزة نفك
android.hardware.nfc
يستخدم التطبيق ميزات الجهاز القريب من الميدان الاتصالات (نفك) الراديو.
android.hardware.nfc.hce
(إهمال.)
يستخدم التطبيق مضاهاة بطاقة نفك التي يتم استضافتها على الجهاز.
ميزات برنامج أوبنغل إس
android.hardware.opengles.aep
يستخدم التطبيق أوبنغل إس الروبوت حزمة التمديد التي يتم تثبيتها على الجهاز.
ميزات أجهزة الاستشعار
android.hardware.sensor.accelerometer
يستخدم التطبيق قراءات الحركة من التسارع للجهاز للكشف عن التوجه الحالي للجهاز. على سبيل المثال، يمكن التطبيق استخدام قراءات التسارع لتحديد متى للتبديل بين الاتجاهات العمودي والمناظر الطبيعية.
android.hardware.sensor.ambient_temperature
يستخدم التطبيق جهاز استشعار درجة الحرارة المحيطة (البيئي) الجهاز. على سبيل المثال، يمكن لتطبيق الطقس الإبلاغ عن درجة الحرارة في الأماكن المغلقة أو في الهواء الطلق.
android.hardware.sensor.barometer
يستخدم التطبيق بارومتر الجهاز. على سبيل المثال، يمكن لتطبيق الطقس الإبلاغ عن ضغط الهواء.
android.hardware.sensor.compass
يستخدم التطبيق المغنطيسية للجهاز (البوصلة). على سبيل المثال، يمكن أن يعرض تطبيق التنقل الاتجاه الحالي الذي يواجهه المستخدم.
android.hardware.sensor.gyroscope
يستخدم التطبيق جيروسكوب للجهاز للكشف عن التناوب والتطور، وخلق نظام التوجيه ستة محاور. باستخدام هذا الاستشعار، يمكن التطبيق كشف أكثر سلاسة ما إذا كان يحتاج للتبديل بين الاتجاهات العمودي والمناظر الطبيعية.
android.hardware.sensor.hifi_sensors
يستخدم التطبيق عالية الدقة الإخلاص (مرحبا فاي) أجهزة الاستشعار. على سبيل المثال، يمكن لأحد تطبيقات الألعاب اكتشاف حركات المستخدم عالية الدقة.
android.hardware.sensor.heartrate
يستخدم التطبيق رصد معدل ضربات القلب للجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن الاتجاهات في معدل ضربات القلب للمستخدم بمرور الوقت.
android.hardware.sensor.heartrate.ecg
يستخدم التطبيق إلكارديوغرام جهاز (إسغ) جهاز استشعار معدل ضربات القلب للجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن مزيد من المعلومات التفصيلية حول معدل ضربات القلب للمستخدم.
android.hardware.sensor.light
يستخدم التطبيق جهاز استشعار الضوء للجهاز. على سبيل المثال، يمكن للتطبيق عرض أحد مخططين مختلفين للون استنادا إلى ظروف الإضاءة المحيطة.
android.hardware.sensor.proximity
يستخدم التطبيق جهاز استشعار القرب للجهاز. على سبيل المثال، يمكن التطبيق الهاتفية إيقاف تشغيل شاشة الجهاز عندما يكتشف التطبيق أن المستخدم هو عقد الجهاز على مقربة من الجسم.
android.hardware.sensor.relative_humidity
يستخدم التطبيق جهاز استشعار الرطوبة النسبية للجهاز. على سبيل المثال، يمكن تطبيق الطقس استخدام الرطوبة لحساب والإبلاغ عن نقطة الندى الحالية.
android.hardware.sensor.stepcounter
يستخدم التطبيق عداد خطوة الجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية الإبلاغ عن عدد الخطوات التي يحتاج المستخدم لاتخاذها لتحقيق هدف العد اليومي.
android.hardware.sensor.stepdetector
يستخدم التطبيق للكشف عن خطوة الجهاز. على سبيل المثال، يمكن لتطبيق اللياقة البدنية استخدام الفاصل الزمني بين الخطوات لاستنتاج نوع التمرين الذي يقوم به المستخدم.
ميزات الأجهزة الشاشة
android.hardware.screen.landscape
android.hardware.screen.portrait
التطبيق يتطلب الجهاز لاستخدام صورة أو اتجاه أفقي. إذا كان التطبيق الخاص بك يدعم كلا التوجهات، ثم لا تحتاج إلى إعلان أي ميزة.
على سبيل المثال، إذا كان تطبيقك يتطلب اتجاها عموديا، فيجب أن تعلن عن الميزة التالية بحيث لا يمكن تشغيل الأجهزة التي تدعم الاتجاه الرأسي (دائما أو من خلال اختيار المستخدم)
<uses-feature android:name="android.hardware.screen.portrait" />
ويفترض أن كلا التوجهات غير مطلوبة بشكل افتراضي، لذا قد يتم تثبيت تطبيقك على الأجهزة التي تدعم أحد التوجهات أو كليهما. ومع ذلك، إذا كان أي من الأنشطة الخاصة بك طلب أنها تعمل في اتجاه معين، وذلك باستخدام android:screenOrientation السمة، ثم هذا الإعلان يعني أن التطبيق الخاص بك يتطلب هذا التوجه. على سبيل المثال، إذا كنت تعلن android:screenOrientation مع أي "landscape" ، "reverseLandscape" ، أو "sensorLandscape" ، ثم التطبيق الخاص بك سوف تكون متاحة فقط على الأجهزة التي تدعم اتجاه أفقي.
وكأفضل الممارسات، يجب عليك أن تعلن عن متطلباتك لهذا التوجه باستخدام عنصر <uses-feature> . إذا كنت تعلن عن التوجه إلى النشاط الخاص بك باستخدام android:screenOrientation ، ولكن لا تتطلب فعلا ذلك، يمكنك تعطيل شرط عن طريق إعلان التوجه مع عنصر <uses-feature> android:screenOrientation android:required="false" .
للحصول على التوافق المتخلف، أي جهاز يعمل بنظام التشغيل أندرويد 3.1 (مستوى أبي 12) أو أقل يدعم كلا من المناظر الطبيعية والتوجهات العمودي.
ميزات الأجهزة الهاتفية
android.hardware.telephony
يستخدم التطبيق ميزات الهاتف الهاتف، مثل الاتصالات الهاتفية مع خدمات الاتصالات البيانات.
android.hardware.telephony.cdma
يستخدم التطبيق الشفرة قسم الوصول المتعدد (كدما) نظام الراديو المهاتفة.
باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.telephony ، إلا إذا تم الإعلان عن هذه الميزة الأم مع android:required="false" .
android.hardware.telephony.gsm
يستخدم التطبيق النظام العالمي للاتصالات المتنقلة (غسم) نظام الراديو المهاتفة.
باستخدام هذه الميزة، يعني التطبيق أنه يستخدم أيضا ميزة android.hardware.telephony ، إلا إذا تم الإعلان عن هذه الميزة الأم مع android:required="false" .
ميزات الأجهزة التي تعمل باللمس
android.hardware.faketouch
يستخدم التطبيق الأحداث التفاعل اللمس الأساسية، مثل التنصت والسحب.
عند الإعلان حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي شاشة تعمل باللمس ("واجهة اللمس المزيف") أو لديه شاشة تعمل باللمس الفعلية.
يوفر الجهاز الذي يوفر واجهة تعمل باللمس وهمية نظام إدخال المستخدم الذي يحاكي مجموعة فرعية من قدرات الشاشة التي تعمل باللمس. على سبيل المثال، قد يؤدي الماوس أو جهاز التحكم عن بعد إلى توجيه مؤشر على الشاشة. إذا كان التطبيق الخاص بك يتطلب النقطة الأساسية وانقر فوق التفاعل (وبعبارة أخرى، فإنه لن يعمل مع وحدة تحكم د لوحة فقط)، يجب أن تعلن هذه الميزة. لأن هذا هو الحد الأدنى من مستوى التفاعل باللمس، يمكنك أيضا استخدام التطبيق الذي يعلن هذه الميزة على الأجهزة التي توفر واجهات تعمل باللمس أكثر تعقيدا.
ملاحظة: تطبيقات تتطلب ميزة android.hardware.faketouch افتراضيا. إذا كنت تريد أن يقتصر تطبيقك على الأجهزة التي تحتوي على شاشة تعمل باللمس فقط، فيجب عليك أن تعلن صراحة أن شاشة اللمس مطلوبة كما يلي:
<uses-feature android:name="android.hardware.touchscreen"
android:required="true" />
جميع التطبيقات التي لا تتطلب صراحة android.hardware.touchscreen سوف تعمل أيضا على الأجهزة مع android.hardware.faketouch .
.
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
android.hardware.faketouch.multitouch.distinct
التطبيق يتتبع اثنين أو أكثر من "الأصابع" متميزة على واجهة تعمل باللمس وهمية. هذا هو مجموعة من ميزة android.hardware.faketouch . عند الإعلان عنها حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي تتبع مميز لإصبعين أو أكثر أو لديه شاشة تعمل باللمس الفعلية.
على عكس اللمس المتعدد متميزة التي يحددها android.hardware.touchscreen.multitouch.distinct ، وأجهزة الإدخال التي تدعم اللمس المتعدد متميزة مع واجهة تعمل باللمس وهمية لا تدعم كل الإيماءات اثنين من إصبع لأن المدخلات في تحول إلى حركة المؤشر على الشاشة. وهذا هو، والإيماءات إصبع واحد على مثل هذا الجهاز تحريك المؤشر، الضربات الشديدة بإصبعين تسبب الأحداث التي تعمل باللمس إصبع واحد أن تحدث، والإيماءات الأخرى بإصبعين تؤدي أحداث اتصال اثنين من إصبع المقابلة.
يمكن للجهاز الذي يوفر لوحة اللمس باللمس بإصبعين لحركة المؤشر دعم هذه الميزة.
android.hardware.faketouch.multitouch.jazzhand
التطبيق يتتبع خمسة أو أكثر من "الأصابع" متميزة على واجهة تعمل باللمس وهمية. هذا هو مجموعة من ميزة android.hardware.faketouch . عند الإعلان حسب الحاجة، تشير هذه الميزة إلى أن التطبيق متوافق مع جهاز فقط إذا كان هذا الجهاز يحاكي تتبع متميز من خمسة أصابع أو أكثر أو لديه شاشة تعمل باللمس الفعلية.
على عكس اللمس المتعدد متميزة يحددها android.hardware.touchscreen.multitouch.jazzhand ، أجهزة الإدخال التي تدعم اللمس المتعدد jazzhand مع واجهة اللمس وهمية لا تدعم كل لفتات خمسة أصابع لأن الإدخال في تحويل لحركة المؤشر على الشاشة. وهذا هو، والإيماءات، إصبع واحد على مثل هذا الجهاز تتحرك مؤشر والإيماءات متعددة الأصابع تسبب الأحداث لمس إصبع واحد أن يحدث، وغيرها من الإيماءات متعددة إصبع الزناد أحداث اللمس المتعدد إصبع المقابلة.
وهو الجهاز الذي يوفر لمسة وحة التتبع خمسة أصابع لحركة المؤشر يمكن أن تدعم هذه الميزة.
android.hardware.touchscreen
يستخدم التطبيق قدرات لمس الجهاز لفتات التي هي أكثر تفاعلية من الأحداث مسة الأساسية، مثل قذف. هذا هو مجموعة شاملة منandroid.hardware.faketouch الميزة.
افتراضيا، التطبيق الخاص بك يتطلب هذه الميزة. على هذا النحو، التطبيق غير متوفر على الأجهزة التي لا توفر سوى واجهة تعمل باللمس يحتذى ( "لمسة وهمية") بشكل افتراضي. إذا كنت تريد أن تجعل التطبيق متاح على الأجهزة التي توفر واجهة تعمل باللمس وهمية (أو حتى على الأجهزة التي لا توفر سوى وحدة تحكم د سادة)، يجب أن تقوم بتعريف صراحة على أن الشاشة التي تعمل باللمس غير مطلوب بإعلان android.hardware.touchscreenمع android:required="false". يجب عليك إضافة هذا الإعلان إذا كان التطبيق يستخدم ولكن لا يتطلب-واجهة تعمل باللمس الحقيقية. جميع التطبيقات التي لا تتطلب صراحة android.hardware.touchscreenستعمل أيضا على الأجهزة معandroid.hardware.faketouch .
إذا كان التطبيق في الواقع يتطلب واجهة تعمل باللمس (لتنفيذ فتات اللمس أكثر تقدما مثل قذف)، فإنك لا تحتاج إلى الإعلان عن أي ميزات واجهة تعمل باللمس لأنها مطلوبة بشكل افتراضي. ومع ذلك، فمن الأفضل إذا قمت بتعريف صراحة جميع الميزات التي يستخدمها التطبيق الخاص بك.
إذا كنت تحتاج إلى لمسة التفاعل أكثر تعقيدا، مثل الإيماءات متعددة الأصابع، يجب أن تعلن أن التطبيق يستخدم ميزات شاشة اللمس المتقدمة.
android.hardware.touchscreen.multitouch
يستخدم التطبيق قدرات نقطتين الأساسية للجهاز اللمس المتعدد، مثل فتات قليل، ولكن التطبيق لا يحتاج إلى تتبع اللمسات بشكل مستقل. هذا هو مجموعة شاملة منandroid.hardware.touchscreen الميزة.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreenميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".
android.hardware.touchscreen.multitouch.distinct
يستخدم التطبيق قدرات اللمس المتعدد متقدمة للجهاز لتتبع نقطتين أو أكثر بشكل مستقل. هذه الميزة هي مجموعة شاملة من android.hardware.touchscreen.multitouchالميزة.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreen.multitouchميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".
android.hardware.touchscreen.multitouch.jazzhand
يستخدم التطبيق قدرات اللمس المتعدد متقدمة للجهاز لتتبع خمسة أو أكثر من النقاط بشكل مستقل. هذه الميزة هي مجموعة شاملة من android.hardware.touchscreen.multitouchالميزة.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.hardware.touchscreen.multitouchميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".
ميزات الأجهزة USB
android.hardware.usb.accessory
سلوك التطبيق كجهاز USB ويتصل المضيفين USB.
android.hardware.usb.host
يستخدم التطبيق الملحقات USB التي ترتبط بالجهاز. يقدم جهاز بوصفها البلد المضيف USB.
ميزات الأجهزة واي فاي
android.hardware.wifi
يستخدم التطبيق 802.11 الشبكات (واي فاي) يتميز على الجهاز.
android.hardware.wifi.direct
يستخدم التطبيق واي فاي ميزات الشبكات المباشرة على الجهاز.
ميزات البرنامج
يعرض هذا القسم ميزات البرنامج بدعم من إطلاق المنصة الأكثر الحالي. للإشارة أن يستخدم التطبيق الخاص بك أو يتطلب ميزة البرنامج، الإعلان عن قيمة المقابلة (بدءا "android.software") في android:nameالسمة. في كل مرة قمت بتعريف ميزة البرنامج، واستخدام منفصلة <uses-feature>عنصر.
ميزات البرنامج الاتصالات
android.software.sip
يستخدم التطبيق بروتوكول بدء الجلسة (SIP) الخدمات. باستخدام SIP، يمكن التطبيق دعم عمليات الهاتفي عبر الإنترنت، مثل مؤتمرات الفيديو والرسائل الفورية.
android.software.sip.voip
يستخدم التطبيق الخدمات القائمة على SIP-الصوت عبر بروتوكول الإنترنت VoIP. باستخدام الصوت عبر بروتوكول الإنترنت، يمكن أن التطبيق يدعم في الوقت الحقيقي عمليات الهاتفي عبر الإنترنت، مثل اتجاهين الفيديو كونفرنس.
باستخدام هذه الميزة، التطبيق يعني أنه يستخدم أيضا android.software.sipميزة، إلا إذا أعلنت هذه الميزة الوالد android:required="false".
android.software.webview
يعرض التطبيق على محتوى من الإنترنت.
مخصص ميزات البرنامج المدخلات
android.software.input_methods
يستخدم التطبيق طريقة إدخال الجديد الذي يحدد المطور في InputMethodService.
ميزات البرنامج إدارة الجهاز
android.software.backup
ويشمل التطبيق منطق للتعامل مع النسخ الاحتياطي والاستعادة.
android.software.device_admin
يستخدم التطبيق مدراء الجهاز لتطبيق سياسة الجهاز.
android.software.managed_users
التطبيق يدعم المستخدمين الثانوي وملامح إدارتها.
android.software.securely_removes_users
التطبيق يمكن بشكل دائم إزالة المستخدمين والبيانات المرتبطة بها.
android.software.verified_boot
ويشمل التطبيق منطق للتعامل مع النتائج من ميزة التمهيد التحقق من الجهاز، الذي يكتشف ما إذا كانت التغييرات تكوين الجهاز أثناء عملية إعادة تشغيل.
ميزات البرنامج وسائل الإعلام
android.software.midi
التطبيق يتصل الآلات الموسيقية أو مخرجات الصوت باستخدام آلات موسيقية الواجهة الرقمية (MIDI) البروتوكول.
android.software.print
ويشمل التطبيق أوامر لطباعة الوثائق المعروضة على الجهاز.
android.software.leanback
يقدم التطبيق واجهة المستخدم التي تم تصميمها للعرض على شاشة كبيرة، مثل التلفزيون.
android.software.live_tv
تيارات بث حي للبرامج التلفزيونية.
ميزات البرنامج واجهة الشاشة
android.software.app_widgets
يستخدم التطبيق أو يوفر التطبيق الحاجيات ويجب تثبيت فقط على الأجهزة التي تشتمل على الشاشة الرئيسية أو موقع مماثل حيث يمكن للمستخدمين تضمين التطبيقات الحاجيات.
android.software.home_screen
سلوك التطبيق كبديل لشاشة الجهاز الرئيسية.
android.software.live_wallpaper
يستخدم التطبيق أو يوفر خلفيات التي تشمل الرسوم المتحركة.
الأذونات التي تتضمن متطلبات ميزة
وقدمت بعض الأجهزة وميزة البرنامج الثوابت متاحة للتطبيقات API بعد المقابلة. على سبيل المثال، android.hardware.bluetoothتم إضافة ميزة في الروبوت 2.2 (مستوى API 8)، ولكن API بلوتوث أنه يشير إلى وأضيف في الروبوت 2.0 (مستوى API 5). وبسبب هذا، فإن بعض التطبيقات قادرة على استخدام API قبل كانت لديهم القدرة على أن تعلن أنها تتطلب API باستخدام <uses-feature>النظام.
لمنع هذه التطبيقات من التي يتم توفيرها عن غير قصد، وجوجل اللعب يفترض أن بعض الأذونات المتعلقة الأجهزة تشير إلى أن ميزات الأجهزة الأساسية مطلوبة من قبل الافتراضية. على سبيل المثال، يجب أن التطبيقات التي تستخدم تقنية بلوتوث طلب BLUETOOTHإذن في <uses-permission>عنصر - لالتطبيقات القديمة، وجوجل اللعب يفترض أن الإعلان إذن يعني أن الكامنة android.hardware.bluetoothميزة مطلوب من قبل التطبيق ويضع الترشيح بناء على هذه الميزة. الجدول 2 قوائم الأذونات التي تعني متطلبات ميزة مساوية لتلك التي أعلنت في <uses-feature>العناصر.
لاحظ أن <uses-feature>الإعلانات، بما في ذلك أية أعلن android:requiredسمة، ودائما تأخذ الأسبقية على الميزات التي تنطوي عليها الأذونات في الجدول 2. للحصول على أي من هذه الأذونات، يمكنك تعطيل تصفية على أساس الميزة التي تنطوي عليها معلنا صراحة ميزة ضمنية صراحة، في <uses-feature>العنصر، مع و android:required="false"السمة. على سبيل المثال، لتعطيل أي تصفية على أساس CAMERAإذن، هل إضافة هذا <uses-feature>الإعلان إلى ملف البيان:
<uses-feature android:name="android.hardware.camera" android:required="false" />
تحذير: إذا أهدافك التطبيق الروبوت (مستوى API 21) 5.0 أو أعلى ويستخدم ACCESS_COARSE_LOCATIONأو ACCESS_FINE_LOCATIONإذن من أجل الحصول على تحديثات الموقع من الشبكة أو GPS، على التوالي، يجب عليك أيضا أن يعلن صراحة أن التطبيق يستخدم android.hardware.location.networkأو android.hardware.location.gpsميزات الأجهزة.
الجدول 2. أذونات الأجهزة التي تعني جهاز استخدام الأجهزة.
الفئة هذا إذن ... ... ويعني هذا ميزة المطلوب
بلوتوث BLUETOOTH android.hardware.bluetooth
(انظر التعامل مع الخاص لخاصية البلوتوث للحصول على التفاصيل.)
BLUETOOTH_ADMIN android.hardware.bluetooth
الة تصوير CAMERA android.hardware.camera و
android.hardware.camera.autofocus
موقعك ACCESS_MOCK_LOCATION android.hardware.location
ACCESS_LOCATION_EXTRA_COMMANDS android.hardware.location
INSTALL_LOCATION_PROVIDER android.hardware.location
ACCESS_COARSE_LOCATION
android.hardware.location
android.hardware.location.network (فقط عند مستوى API الهدف هو 20 أو أقل).
ACCESS_FINE_LOCATION
android.hardware.location
android.hardware.location.gps (فقط عند مستوى API الهدف هو 20 أو أقل).
ميكروفون RECORD_AUDIO android.hardware.microphone
مهاتفة CALL_PHONE android.hardware.telephony
CALL_PRIVILEGED android.hardware.telephony
MODIFY_PHONE_STATE android.hardware.telephony
PROCESS_OUTGOING_CALLS android.hardware.telephony
READ_SMS android.hardware.telephony
RECEIVE_SMS android.hardware.telephony
RECEIVE_MMS android.hardware.telephony
RECEIVE_WAP_PUSH android.hardware.telephony
SEND_SMS android.hardware.telephony
WRITE_APN_SETTINGS android.hardware.telephony
WRITE_SMS android.hardware.telephony
واي فاي ACCESS_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_STATE android.hardware.wifi
CHANGE_WIFI_MULTICAST_STATE android.hardware.wifi.
Category | This Permission... | ...Implies This Feature Requirement |
Bluetooth | BLUETOOTH | android.hardware.bluetooth (See Special handling for Bluetooth feature for details.) |
BLUETOOTH_ADMIN | android.hardware.bluetooth |
Camera | CAMERA | android.hardware.camera and
android.hardware.camera.autofocus |
Location | ACCESS_MOCK_LOCATION | android.hardware.location |
ACCESS_LOCATION_EXTRA_COMMANDS | android.hardware.location |
INSTALL_LOCATION_PROVIDER | android.hardware.location |
ACCESS_COARSE_LOCATION |
android.hardware.location
android.hardware.location.network (Only when target API level is 20 or lower.) |
ACCESS_FINE_LOCATION |
android.hardware.location
android.hardware.location.gps (Only when target API level is 20 or lower.) |
Microphone | RECORD_AUDIO | android.hardware.microphone |
Telephony | CALL_PHONE | android.hardware.telephony |
CALL_PRIVILEGED | android.hardware.telephony |
MODIFY_PHONE_STATE | android.hardware.telephony |
PROCESS_OUTGOING_CALLS | android.hardware.telephony |
READ_SMS | android.hardware.telephony |
RECEIVE_SMS | android.hardware.telephony |
RECEIVE_MMS | android.hardware.telephony |
RECEIVE_WAP_PUSH | android.hardware.telephony |
SEND_SMS | android.hardware.telephony |
WRITE_APN_SETTINGS | android.hardware.telephony |
WRITE_SMS | android.hardware.telephony |
Wi-Fi | ACCESS_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_STATE | android.hardware.wifi |
CHANGE_WIFI_MULTICAST_STATE | android.hardware.wifi |
*******************************************************
<يستخدم المكتبة>
غوغل بلاي فيلترينغ
يستخدم غوغل بلاي العناصر <وسيس-ليبراري> المعلنة في بيان التطبيق لتصفية تطبيقك من الأجهزة التي لا تلبي متطلبات المكتبة. لمزيد من المعلومات حول التصفية، راجع موضوع غوغل بلاي فيلترس .
بناء الجملة:
<uses-library
android:name="string"
android:required=["true" | "false"] />
الواردة في:
<application>
وصف:
لتحديد مكتبة مشتركة يجب ربط التطبيق بها. يخبر هذا العنصر النظام بتضمين التعليمات البرمجية للمكتبة في محمل الفئة للحزمة.
جميع حزم android (مثل android.app ، android.content ، android.view ، و android.widget ) هي في المكتبة الافتراضية أن جميع التطبيقات ترتبط تلقائيا ضد. ومع ذلك، توجد بعض الحزم (مثل maps ) في مكتبات منفصلة لا يتم ربطها تلقائيا. راجع وثائق الحزم التي تستخدمها لتحديد المكتبة التي تحتوي على رمز الحزمة.
يؤثر هذا العنصر أيضا على تثبيت التطبيق على جهاز معين وتوافر التطبيق على غوغل بلاي:
التركيب
إذا كان هذا العنصر موجود android:required يتم تعيين السمة android:required إلى true ، فإن الإطار PackageManager لن تسمح للمستخدم تثبيت التطبيق إلا إذا كانت المكتبة موجودة على جهاز المستخدم.
ويرد وصف android:required السمة android:required بالتفصيل في القسم التالي.
الصفات:
android:name
اسم المكتبة. يتم توفير الاسم من خلال وثائق الحزمة التي تستخدمها. مثال على ذلك هو " android.test.runner "، وهي حزمة تحتوي على دروس اختبار الروبوت.
android:required
قيمة منطقية تشير إلى ما إذا كان التطبيق يتطلب مكتبة المحدد بواسطة android:name :
"true" : لا يعمل التطبيق دون هذه المكتبة. لن يسمح النظام بالتطبيق على جهاز لا يحتوي على المكتبة.
"false" : التطبيق يمكن استخدام المكتبة إذا كان موجودا، ولكن تم تصميمه للعمل دون ذلك إذا لزم الأمر. سيسمح النظام بتثبيت التطبيق، حتى لو لم تكن المكتبة موجودة. إذا كنت تستخدم "false" ، فأنت مسؤول عن التحقق من وقت تشغيل المكتبة.
للتحقق من وجود مكتبة، يمكنك استخدام التفكير لتحديد ما إذا كانت فئة معينة متاحة.
الافتراضي هو "true" .
مقدمة في: أبي ليفيل 7.
قدم في:
أبي ليفيل 1
أنظر أيضا:
PackageManager
**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*
<الاستخدامات إذن>
غوغل بلاي فيلترينغ
في بعض الحالات، يمكن أن تؤثر الأذونات التي تطلبها من خلال <uses-permission> كيفية تصفية تطبيقك بواسطة غوغل بلاي.
إذا كنت تطلب إذن الأجهزة ذات الصلة - CAMERA ، على سبيل المثال - جوجل اللعب يفترض أن التطبيق الخاص بك يتطلب ميزة الأجهزة الأساسية وفلاتر التطبيق من الأجهزة التي لا تقدم ذلك.
للتحكم في التصفية، عليك دائما الإعلان صراحة عن ميزات الأجهزة في عناصر <uses-feature> بدلا من الاعتماد على غوغل بلاي من أجل "اكتشاف" المتطلبات في عناصر <uses-permission> . ثم، إذا كنت تريد تعطيل التصفية لميزة معينة، يمكنك إضافة سمة android:required="false" إلى إعلان <uses-feature> .
للحصول على قائمة الأذونات التي تتضمن ميزات الأجهزة، اطلع على وثائق العنصر <uses-feature> .
الواردة في:
<manifest>
وصف:
يطلب الحصول على إذن بأنه يجب منح الطلب لكي يعمل بشكل صحيح. يتم منح الأذونات من قبل المستخدم عند تثبيت التطبيق (على الأجهزة التي تعمل بنظام التشغيل أندرويد 5.1 وأقل) أو أثناء تشغيل التطبيق (على الأجهزة التي تعمل بنظام التشغيل أندرويد 6.0 والإصدارات الأحدث).
لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ودليل أبي أذونات النظام المنفصل. قائمة الأذونات التي تم تعريفها من قبل منصة قاعدة يمكن العثور عليها في android.Manifest.permission .
الصفات:
android:name
اسم الإذن. يمكن أن يكون الإذن المحدد من قبل التطبيق مع <permission> عنصر، إذن محدد من قبل تطبيق آخر، أو واحد من أذونات النظام القياسية (مثل "android.permission.CAMERA" أو "android.permission.READ_CONTACTS" ). كما تظهر هذه الأمثلة، اسم إذن عادة ما يتضمن اسم الحزمة كبادئة.
android:maxSdkVersion
أعلى مستوى أبي الذي ينبغي أن يمنح هذا الإذن لتطبيقك. يعد تعيين هذه السمة مفيدا إذا لم يعد هناك حاجة إلى إذن التطبيق الذي تطلبه بدءا من مستوى معين من واجهة برمجة التطبيقات.
على سبيل المثال، بدءا من أندرويد 4.4 (مستوى واجهة برمجة التطبيقات 19)، لم يعد من الضروري أن يطلب WRITE_EXTERNAL_STORAGE إذن WRITE_EXTERNAL_STORAGE عندما يريد تطبيقك الكتابة إلى الأدلة الخاصة بالتطبيقات الخاصة به على وحدة التخزين الخارجية (الأدلة المقدمة من getExternalFilesDir() ) . ومع ذلك، مطلوب إذن لمستوى أبي 18 وأقل. لذلك يمكنك أن تعلن أن هناك حاجة إلى هذا الإذن فقط حتى مستوى أبي 18 مع إعلان مثل هذا:
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:maxSdkVersion="18" />
وبهذه الطريقة، بدءا من مستوى أبي 19، فإن النظام لم يعد منح التطبيق الخاص بك إذن WRITE_EXTERNAL_STORAGE .
تمت إضافة هذه السمة في مستوى واجهة برمجة التطبيقات (أبي) رقم 19.
قدم في:
أبي ليفيل 1
أنظر أيضا:
<permission>
<uses-permission-sdk-23>
<uses-feature>
**-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*
<الاستخدامات إذن-SDK-23>
بناء الجملة:
- SYNTAX:
<uses-permission-sdk-23 android:name="string"
android:maxSdkVersion="integer" />
الواردة في:
<manifest>
وصف:
لتحديد أن أحد التطبيقات يريد الحصول على إذن معين، ولكن فقط إذا كان التطبيق قيد التشغيل على جهاز بمستوى واجهة برمجة التطبيقات 23 أو أعلى. إذا كان الجهاز يشغل مستوى أبي 22 أو أقل، فإن التطبيق ليس لديه الإذن المحدد.
يكون هذا العنصر مفيدا عند تحديث أحد التطبيقات لتضمين ميزة جديدة تتطلب إذنا إضافيا. إذا قام مستخدم بتحديث أحد التطبيقات على جهاز يقوم بتشغيل مستوى أبي 22 أو أقل، يطالب النظام المستخدم في وقت التثبيت بمنح كافة الأذونات الجديدة التي تم الإعلان عنها في هذا التحديث. إذا كانت ميزة جديدة صغيرة بما فيه الكفاية، قد تفضل تعطيل الميزة تماما على تلك الأجهزة، لذلك لا يحتاج المستخدم لمنح أذونات إضافية لتحديث التطبيق. باستخدام عنصر <uses-permission> <uses-permission-sdk-23> بدلا من <uses-permission> ، يمكنك طلب الإذن فقط إذا كان التطبيق قيد التشغيل على الأنظمة الأساسية التي تدعم نموذج أذونات التشغيل ، والذي يمنح المستخدم الأذونات للتطبيق بينما هو قيد التشغيل.
لمزيد من المعلومات حول الأذونات، راجع قسم أذونات في المقدمة ودليل أبي أذونات النظام المنفصل. قائمة الأذونات المحددة من قبل منصة الأساسي هو متاح في android.Manifest.permission .
الصفات:
android:name
اسم الإذن. يمكن تعريف هذا الإذن من قبل التطبيق مع عنصر <permission> ، يمكن أن يكون إذن يحدده التطبيق آخر، أو يمكن أن يكون واحدا من أذونات النظام القياسية، مثل "android.permission.CAMERA" أو "android.permission.READ_CONTACTS" .
android:maxSdkVersion
أعلى مستوى أبي الذي ينبغي أن يمنح هذا الإذن لتطبيقك. إذا تم تثبيت التطبيق على جهاز مع مستوى أبي في وقت لاحق، لا يتم منح التطبيق الإذن ولا يمكن استخدام أي وظيفة ذات الصلة.
قدم في:
مستوى واجهة برمجة التطبيقات 23
أنظر أيضا:
<permission>
<uses-permission>
<uses-feature>
*-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*
<يستخدم-الإستراحة>
في هذه الوثيقة
ما هو مستوى واجهة برمجة التطبيقات؟
استخدامات مستوى أبي في الروبوت
اعتبارات التنمية
التطبيق إلى الأمام التوافق
تطبيق التوافق الخلفي
تحديد إصدار المنصة ومستوى واجهة برمجة التطبيقات
إعلان الحد الأدنى لمستوى واجهة برمجة التطبيقات
اختبار ضد مستويات أبي أعلى
تصفية الوثائق المرجعية حسب مستوى واجهة برمجة التطبيقات
غوغل بلاي فيلترينغ
يستخدم غوغل بلاي السمات <uses-sdk> المعلنة في بيان التطبيق لتصفية تطبيقك من الأجهزة التي لا تلبي متطلبات إصدار النظام الأساسي. قبل تعيين هذه السمات، تأكد من استيعاب فلاتر غوغل بلاي .
الواردة في:
<manifest>
وصف:
يتيح لك التعبير عن توافق التطبيق مع واحد أو أكثر من الإصدارات من منصة أندرويد، عن طريق عدد صحيح أبي المستوى. سيتم مقارنة مستوى أبي التي أعرب عنها تطبيق لمستوى أبي من نظام أندرويد معين، والتي قد تختلف بين أجهزة الروبوت المختلفة.
على الرغم من اسمه، يتم استخدام هذا العنصر لتحديد مستوى أبي، وليس رقم إصدار سك (مجموعة تطوير البرامج) أو منصة أندرويد. مستوى أبي هو دائما عدد صحيح واحد. لا يمكنك استخلاص مستوى أبي من رقم إصدار أندرويد المرتبط به (على سبيل المثال، فإنه ليس هو نفسه الإصدار الرئيسي أو مجموع الإصدارات الرئيسية والثانوية).
اقرأ أيضا الوثيقة حول إصدار تطبيقاتك .
الصفات:
android:minSdkVersion
عدد صحيح تعيين الحد الأدنى لمستوى أبي المطلوب لتشغيل التطبيق. سيقوم نظام أندرويد بمنع المستخدم من تثبيت التطبيق إذا كان مستوى أبي للنظام أقل من القيمة المحددة في هذه السمة. يجب دائما أن تعلن هذه السمة.
تحذير: إذا لم تقم بإعلان هذه الخاصية المميزة، يفترض النظام قيمة افتراضية "1"، مما يشير إلى أن التطبيق متوافق مع جميع إصدارات أندرويد. إذا كان تطبيقك غير متوافق مع جميع الإصدارات (على سبيل المثال، فإنه يستخدم واجهات برمجة التطبيقات التي تم إدخالها في أبي ليفيل 3) ولم يتم الإعلان عن minSdkVersion المناسب، ثم عند تثبيته على نظام بمستوى أبي أقل من 3، minSdkVersion التطبيق أثناء وقت التشغيل عند محاولة الوصول إلى واجهات برمجة التطبيقات غير المتوفرة. لهذا السبب، تأكد من الإعلان عن مستوى أبي المناسب في السمة minSdkVersion .
android:targetSdkVersion
عدد صحيح تعيين مستوى أبي أن يستهدف التطبيق. إذا لم يتم تعيين القيمة الافتراضية تساوي التي تعطى إلى minSdkVersion .
هذه السمة بإعلام النظام الذي كنت قد اختبرت ضد النسخة المستهدفة ويجب أن النظام لا تمكين أي سلوك التوافق للحفاظ على التطبيق الخاص بك إلى الأمام التوافق مع الإصدار الهدف. التطبيق لا يزال قادرا على تشغيل على الإصدارات القديمة (وصولا إلى minSdkVersion ).
كما يتطور الروبوت مع كل إصدار جديد، قد تتغير بعض السلوكيات وحتى المظاهر. ومع ذلك، إذا كان مستوى واجهة برمجة التطبيقات للمنصة أعلى من الإصدار المعلن عن طريق targetSdkVersion في تطبيقك، فقد يعمل النظام على تمكين سلوكيات التوافق لضمان استمرار تطبيقك للعمل بالطريقة التي تتوقعها. يمكنك تعطيل سلوكيات التوافق هذه من خلال تحديد targetSdkVersion لتطابق مستوى واجهة برمجة التطبيقات للمنصة التي يتم تشغيلها. على سبيل المثال، يسمح تعيين هذه القيمة إلى "11" أو أعلى للنظام بتطبيق سمة افتراضية جديدة (هولو) على تطبيقك عند التشغيل على نظام التشغيل أندرويد 3.0 أو أحدث كما يعمل على تعطيل وضع توافق الشاشة عند التشغيل على شاشات أكبر (لأن دعم واجهة برمجة التطبيقات مستوى 11 يدعم ضمنا شاشات أكبر).
هناك العديد من سلوكيات التوافق التي يمكن للنظام تمكينها استنادا إلى القيمة التي قمت بتعيينها لهذه السمة. يتم وصف العديد من هذه السلوكيات بواسطة إصدارات المنصة المقابلة في مرجع Build.VERSION_CODES .
للحفاظ على التطبيق الخاص بك جنبا إلى جنب مع كل إصدار أندرويد، يجب زيادة قيمة هذه السمة لتتناسب مع أحدث مستوى أبي، ثم اختبار التطبيق الخاص بك بدقة على إصدار المنصة المقابلة.
قدم في: أبي المستوى 4
android:maxSdkVersion
عدد صحيح تعيين الحد الأقصى لمستوى أبي الذي تم تصميم التطبيق لتشغيل.
في نظام التشغيل أندرويد 1.5 و 1.6 و 2.0 و 2.0.1، يتحقق النظام من قيمة هذه السمة عند تثبيت تطبيق وعند إعادة التحقق من صحة التطبيق بعد تحديث النظام. في كلتا الحالتين، إذا كانت السمة maxSdkVersion للتطبيق أقل من مستوى أبي المستخدم من قبل النظام نفسه، فلن يسمح النظام بتثبيت التطبيق. في حالة إعادة التحقق من صحة بعد تحديث النظام، وهذا يزيل بشكل فعال التطبيق الخاص بك من الجهاز.
لتوضيح كيفية تأثير هذه السمة على تطبيقك بعد تحديثات النظام، ضع في اعتبارك المثال التالي:
يتم نشر تطبيق يعلن maxSdkVersion="5" في بيانه على غوغل بلاي. يقوم المستخدم الذي يقوم جهازه بتشغيل أندرويد 1.6 (أبي ليفيل 4) بتنزيل التطبيق وتثبيته. بعد بضعة أسابيع، يتلقى المستخدم تحديث نظام الإفراط في الهواء لالروبوت 2.0 (أبي مستوى 5). بعد تثبيت التحديث، يقوم النظام بالتحقق من maxSdkVersion للتطبيق بنجاح وإعادة التحقق من صحة ذلك. وظائف التطبيق كالمعتاد. ومع ذلك، في وقت لاحق، يتلقى الجهاز آخر تحديث النظام، وهذه المرة لالروبوت 2.0.1 (أبي مستوى 6). بعد التحديث، يمكن للنظام لم يعد إعادة التحقق من صحة التطبيق لأن مستوى أبي الخاص للنظام (6) هو الآن أعلى من الحد الأقصى المدعوم من قبل التطبيق (5). النظام يمنع التطبيق من أن تكون مرئية للمستخدم، في الواقع إزالته من الجهاز.
تحذير: لا ينصح بإعلان هذه السمة. أولا، ليست هناك حاجة إلى تعيين السمة كوسيلة لحظر نشر التطبيق الخاص بك على إصدارات جديدة من منصة أندرويد كما يتم الافراج عنهم. وبحلول التصميم، تكون الإصدارات الجديدة من المنصة متوافقة تماما مع الخلف. يجب أن يعمل طلبك بشكل صحيح على الإصدارات الجديدة، شريطة أن يستخدم واجهات برمجة التطبيقات القياسية فقط ويتبع أفضل ممارسات التطوير. ثانيا، لاحظ أنه في بعض الحالات، قد يؤدي إعلان السمة إلى إزالة طلبك من أجهزة المستخدمين بعد تحديث النظام إلى مستوى أبي أعلى. معظم الأجهزة التي من المرجح أن يتم تثبيت التطبيق الخاص بك سوف تتلقى تحديثات النظام الدورية عبر الهواء، لذلك يجب أن تنظر في تأثيرها على التطبيق الخاص بك قبل تعيين هذه السمة.
قدم في: أبي المستوى 4
الإصدارات المستقبلية من الروبوت (وراء الروبوت 2.0.1) لن تحقق أو فرض السمة maxSdkVersion أثناء التثبيت أو إعادة التحقق. سيواصل غوغل بلاي استخدام السمة كفلتر، مع ذلك، عند تقديم المستخدمين الذين لديهم تطبيقات متاحة للتنزيل.
قدم في:
أبي ليفيل 1
ما هو مستوى واجهة برمجة التطبيقات؟
أبي ليفيل هو قيمة عدد صحيح يحدد بشكل فريد مراجعة أبي الإطار التي يقدمها إصدار من منصة أندرويد.
يوفر منصة أندرويد أبي الإطار التي يمكن للتطبيقات استخدامها للتفاعل مع نظام أندرويد الأساسي. يتكون إطار عمل برمجة التطبيقات من:
مجموعة أساسية من الحزم والصفوف
مجموعة من عناصر وخصائص شمل لإعلان ملف بيان
مجموعة من عناصر وسمات شمل لإعلان الموارد والوصول إليها
مجموعة من النوايا
مجموعة من الأذونات التي يمكن للتطبيقات طلبها، فضلا عن تنفيذ الأذونات المضمنة في النظام
يمكن أن تتضمن كل نسخة متعاقبة من منصة أندرويد التحديثات إلى واجهة برمجة تطبيقات إطار تطبيق أندرويد التي توفرها.
تم تصميم التحديثات إلى واجهة برمجة تطبيقات الإطار بحيث تظل واجهة برمجة التطبيقات الجديدة متوافقة مع الإصدارات السابقة من واجهة برمجة التطبيقات. وهذا هو، فإن معظم التغييرات في أبي هي إضافة وإدخال وظيفة جديدة أو استبدال. أثناء ترقية أجزاء من واجهة برمجة التطبيقات، يتم إيقاف الأجزاء القديمة التي تم استبدالها ولكن لا تتم إزالتها، حتى تتمكن التطبيقات الحالية من استخدامها. في عدد قليل جدا من الحالات، قد يتم تعديل أجزاء من واجهة برمجة التطبيقات أو إزالتها، على الرغم من أن هذه التغييرات عادة ما تكون مطلوبة فقط لضمان متانة واجهة برمجة التطبيقات وتطبيقها أو أمن النظام. يتم نقل جميع أجزاء أبي الأخرى من المراجعات السابقة بدون تعديل.
يتم تحديد أبي الإطار الذي يسلم منصة أندرويد باستخدام معرف صحيح يسمى "مستوى أبي". كل إصدار منصة أندرويد يدعم بالضبط مستوى أبي واحد، على الرغم من أن الدعم هو ضمني لجميع مستويات أبي السابقة (وصولا الى أبي المستوى 1). الإصدار الأولي من منصة أندرويد المقدمة أبي المستوى 1 والإصدارات اللاحقة قد زادت مستوى أبي.
ويحدد الجدول أدناه مستوى أبي المدعوم من كل إصدار من نظام التشغيل أندرويد. للحصول على معلومات حول الأرقام النسبية للأجهزة التي تقوم بتشغيل كل إصدار، راجع صفحة لوحات تحكم إصدارات المنصة .
إصدار المنصة مستوى واجهة برمجة التطبيقات VERSION_CODE ملاحظات
الروبوت O 26 O أبرز المنبر
الروبوت 7.1.1
الروبوت 7.1 25 N_MR1 أبرز المنبر
الروبوت 7.0 24 N أبرز المنبر
الروبوت 6.0 23 M أبرز المنبر
الروبوت 5.1 22 LOLLIPOP_MR1 أبرز المنبر
أندرويد 5.0 21 LOLLIPOP
الروبوت 4.4W 20 KITKAT_WATCH كيت كات للارتداء فقط
أندرويد 4.4 19 KITKAT أبرز المنبر
أندرويد 4.3 18 JELLY_BEAN_MR2 أبرز المنبر
أندرويد 4.2، 4.2.2 17 JELLY_BEAN_MR1 أبرز المنبر
أندرويد 4.1، 4.1.1 16 JELLY_BEAN أبرز المنبر
أندرويد 4.0.3، 4.0.4 15 ICE_CREAM_SANDWICH_MR1 أبرز المنبر
أندرويد 4.0، 4.0.1، 4.0.2 14 ICE_CREAM_SANDWICH
الروبوت 3.2 13 HONEYCOMB_MR2
أندرويد 3.1.x 12 HONEYCOMB_MR1 أبرز المنبر
أندرويد 3.0.x 11 HONEYCOMB أبرز المنبر
أندرويد 2.3.4
الروبوت 2.3.3 10 GINGERBREAD_MR1 أبرز المنبر
أندرويد 2.3.2
الروبوت 2.3.1
أندرويد 2.3 9 GINGERBREAD
الإصدار 2.2.x من أندرويد 8 FROYO أبرز المنبر
أندرويد 2.1.x 7 ECLAIR_MR1 أبرز المنبر
الروبوت 2.0.1 6 ECLAIR_0_1
الروبوت 2.0 5 ECLAIR
الروبوت 1.6 4 DONUT أبرز المنبر
الروبوت 1.5 3 CUPCAKE أبرز المنبر
الروبوت 1.1 2 BASE_1_1
الروبوت 1.0 1 BASE
استخدامات مستوى أبي في الروبوت
يخدم معرف مستوى واجهة برمجة التطبيقات (أبي) دورا رئيسيا في ضمان أفضل تجربة ممكنة للمستخدمين ومطوري التطبيقات:
فإنه يتيح منصة أندرويد وصف الحد الأقصى إطار أبي المراجعة التي يدعمها
وهو يتيح للتطبيقات وصف مراجعة أبي الإطار التي تتطلبها
وهو يتيح للنظام التفاوض بشأن تثبيت التطبيقات على جهاز المستخدم، بحيث لا يتم تثبيت التطبيقات غير متوافقة مع الإصدار.
كل إصدار منصة أندرويد يخزن معرف أبي مستوى داخليا، في نظام أندرويد نفسه.
يمكن للتطبيقات استخدام عنصر البيان الذي توفره أبي الإطار - <uses-sdk> - لوصف الحد الأدنى والحد الأقصى لمستويات أبي التي تكون قادرة على تشغيلها، فضلا عن مستوى أبي المفضل التي تم تصميمها لدعم. يقدم العنصر ثلاث سمات رئيسية:
android:minSdkVersion - يحدد الحد الأدنى لمستوى أبي الذي يكون التطبيق قادرا على تشغيله. القيمة الافتراضية هي "1".
android:targetSdkVersion - يحدد مستوى أبي الذي تم تصميم التطبيق لتشغيله. في بعض الحالات، يسمح هذا للتطبيق باستخدام عناصر البيان أو السلوكيات المحددة في مستوى أبي المستهدف، بدلا من أن يقتصر على استخدام تلك المحددة فقط لمستوى أبي الأدنى.
android:maxSdkVersion - يحدد الحد الأقصى لمستوى أبي الذي يكون التطبيق قادرا على تشغيله. هام: يرجى قراءة الوثائق <uses-sdk> قبل استخدام هذه السمة.
على سبيل المثال، لتحديد الحد الأدنى لمستوى أبي للنظام الذي يتطلبه التطبيق من أجل التشغيل، سيتضمن التطبيق في البيان الخاص به عنصر <uses-sdk> android:minSdkVersion <uses-sdk> مع سمة android:minSdkVersion . قيمة android:minSdkVersion سيكون عدد صحيح المقابلة لمستوى أبي من أقرب نسخة من منصة أندرويد التي بموجبها يمكن تشغيل التطبيق.
عندما يحاول المستخدم تثبيت تطبيق، أو عند إعادة التحقق من تطبيق بعد تحديث النظام، يقوم نظام أندرويد أولا بالتحقق من السمات <uses-sdk> في بيان التطبيق ويقارن القيم مع مستوى أبي الداخلي. يسمح النظام لبدء التثبيت فقط إذا تم استيفاء هذه الشروط:
إذا تم android:minSdkVersion سمة android:minSdkVersion ، يجب أن تكون قيمته أقل من أو تساوي العدد الصحيح لمستوى أبي للنظام. إذا لم يتم الإعلان عنها، يفترض النظام أن التطبيق يتطلب أبي المستوى 1.
إذا تم تعريف سمة android:maxSdkVersion يجب أن تكون قيمته مساوية أو أكبر من عدد صحيح أبي مستوى النظام. إذا لم يتم الإعلان عنها، يفترض النظام أن التطبيق لا يوجد لديه الحد الأقصى لمستوى أبي. يرجى قراءة الوثائق <uses-sdk> لمزيد من المعلومات حول كيفية تعامل النظام مع هذه السمة.
عند الإعلان في بيان التطبيق، قد يظهر عنصر <uses-sdk> :
<manifest>
<uses-sdk android:minSdkVersion="5" />
...</manifest>
السبب الرئيسي أن أحد التطبيقات سوف يعلن مستوى أبي في android:minSdkVersion هو أن أقول لنظام أندرويد أنه يستخدم واجهات برمجة التطبيقات التي تم تقديمها في مستوى أبي المحدد. إذا كان التطبيق مثبتا بطريقة ما على منصة ذات مستوى أبي أقل، فسيتعطل عند وقت التشغيل عندما يحاول الوصول إلى واجهات برمجة التطبيقات غير الموجودة. يمنع النظام مثل هذه النتيجة من خلال عدم السماح بتثبيت التطبيق إذا كان أدنى مستوى أبي يتطلبه أعلى من إصدار النظام الأساسي على الجهاز المستهدف.
على سبيل المثال، تم تقديم حزمة android.appwidget مع أبي ليفيل 3. إذا كان أحد التطبيقات يستخدم أبي، يجب أن تعلن سمة android:minSdkVersion بقيمة "3". ثم سيتم تثبيت التطبيق على منصات مثل الروبوت 1.5 (أبي المستوى 3) والروبوت 1.6 (أبي المستوى 4)، ولكن ليس على الروبوت 1.1 (أبي المستوى 2) ومنصات أندرويد 1.0 (أبي المستوى 1).
لمزيد من المعلومات حول كيفية تحديد متطلبات مستوى واجهة برمجة تطبيقات التطبيق، راجع قسم <uses-sdk> من وثائق ملف البيان.
اعتبارات التنمية
توفر الأقسام أدناه معلومات ذات صلة بمستوى واجهة برمجة التطبيقات (أبي) يجب مراعاتها عند تطوير تطبيقك.
التطبيق إلى الأمام التوافق
تطبيقات الروبوت عموما إلى الأمام متوافقة مع الإصدارات الجديدة من منصة أندرويد.
لأن كل التغييرات تقريبا على أبي الإطار هي المضافة، وتطبيق الروبوت المتقدمة باستخدام أي إصدار معين من أبي (كما هو محدد من قبل مستوى أبي لها) متوافق مع الإصدارات اللاحقة من منصة أندرويد ومستويات أبي أعلى. يجب أن يكون التطبيق قادرا على تشغيل على جميع الإصدارات الأحدث من منصة أندرويد، إلا في حالات معزولة حيث يستخدم التطبيق جزءا من أبي التي تتم إزالتها في وقت لاحق لسبب ما.
التوافق إلى الأمام مهم لأن العديد من الأجهزة التي تعمل بنظام التشغيل أندرويد تلقي الإفراط في الهواء (أوتا) تحديثات النظام. يمكن للمستخدم تثبيت التطبيق الخاص بك واستخدامها بنجاح، ثم في وقت لاحق الحصول على تحديث أوتا إلى إصدار جديد من منصة أندرويد. بمجرد تثبيت التحديث، سيتم تشغيل التطبيق في إصدار وقت التشغيل الجديد للبيئة، ولكن واحد لديه قدرات أبي والنظام التي يعتمد عليها التطبيق الخاص بك.
في بعض الحالات، قد تؤثر التغييرات التي تقع أسفل واجهة برمجة التطبيقات، مثل تلك الموجودة في النظام الأساسي نفسه، على تطبيقك عند تشغيله في البيئة الجديدة. لهذا السبب من المهم بالنسبة لك، كمطور التطبيق، لفهم كيف التطبيق سوف تبدو وتتصرف في كل بيئة النظام. لمساعدتك في اختبار تطبيقك على إصدارات مختلفة من نظام التشغيل أندرويد، يتضمن نظام التشغيل أندرويد سك العديد من الأنظمة الأساسية التي يمكنك تنزيلها. كل منصة تتضمن صورة نظام متوافقة يمكنك تشغيلها في أفد، لاختبار التطبيق الخاص بك.
تطبيق التوافق الخلفي
تطبيقات الروبوت ليست بالضرورة متخلفة متوافقة مع الإصدارات من منصة أندرويد أقدم من الإصدار الذي تم تجميعها.
يمكن أن يشتمل كل إصدار جديد من نظام التشغيل أندرويد على واجهات برمجة تطبيقات إطارية جديدة، مثل تلك التي تمنح التطبيقات إمكانية الدخول إلى إمكانات جديدة في النظام الأساسي أو تستبدل أجزاء أبي الحالية. يمكن الوصول إلى واجهات برمجة التطبيقات الجديدة للتطبيقات عند التشغيل على النظام الأساسي الجديد، وكما ذكر أعلاه، عند تشغيل الإصدارات الأحدث من النظام الأساسي، كما هو محدد بواسطة مستوى واجهة برمجة التطبيقات. وعلى العكس من ذلك، نظرا لأن الإصدارات السابقة من النظام الأساسي لا تتضمن واجهات برمجة التطبيقات الجديدة، يتعذر تشغيل التطبيقات التي تستخدم واجهات برمجة التطبيقات الجديدة على تلك الأنظمة الأساسية.
على الرغم من أنه من غير المحتمل أن يتم تشغيل جهاز يعمل بنظام التشغيل أندرويد إلى إصدار سابق من النظام الأساسي، فمن المهم أن ندرك أنه من المرجح أن يكون هناك العديد من الأجهزة في هذا المجال التي تعمل على تشغيل الإصدارات السابقة من النظام الأساسي. حتى بين الأجهزة التي تتلقى تحديثات أوتا، قد يتأخر بعض وربما لا تتلقى تحديثا لفترة كبيرة من الزمن.
تحديد إصدار المنصة ومستوى واجهة برمجة التطبيقات
عندما كنت تقوم بتطوير التطبيق الخاص بك، سوف تحتاج إلى اختيار إصدار منصة التي سوف تجميع التطبيق. بشكل عام، يجب تجميع التطبيق الخاص بك ضد أدنى نسخة ممكنة من النظام الأساسي أن التطبيق الخاص بك يمكن أن تدعم.
يمكنك تحديد أدنى إصدار ممكن من منصة عن طريق تجميع التطبيق ضد أهداف بناء أقل تباعا. بعد تحديد الإصدار الأدنى، يجب إنشاء أفد باستخدام إصدار المنصة المطابق (ومستوى أبي) واختبار التطبيق بالكامل. تأكد من الإعلان عن سمة android:minSdkVersion في بيان التطبيق وتعيين قيمته إلى مستوى واجهة برمجة التطبيقات لإصدار النظام الأساسي.
إعلان الحد الأدنى لمستوى واجهة برمجة التطبيقات
إذا قمت بإنشاء تطبيق يستخدم واجهات برمجة التطبيقات أو ميزات النظام التي تم إدخالها في أحدث إصدار للنظام الأساسي، فيجب تعيين السمة android:minSdkVersion إلى مستوى واجهة برمجة التطبيقات لأحدث إصدار للنظام الأساسي. وهذا يضمن أن المستخدمين سوف تكون قادرة فقط على تثبيت التطبيق الخاص بك إذا كانت أجهزتهم تعمل على إصدار متوافق من منصة أندرويد. بدوره، وهذا يضمن أن التطبيق الخاص بك يمكن أن تعمل بشكل صحيح على أجهزتهم.
إذا كان التطبيق الخاص بك يستخدم واجهات برمجة التطبيقات المقدمة في أحدث إصدار منصة ولكن لا تعلن android:minSdkVersion السمة، ثم سيتم تشغيله بشكل صحيح على الأجهزة التي تعمل على أحدث إصدار من النظام الأساسي، ولكن ليس على الأجهزة التي تعمل الإصدارات السابقة من النظام الأساسي. في الحالة الأخيرة، سوف تعطل التطبيق في وقت التشغيل عند محاولة استخدام واجهات برمجة التطبيقات التي لا توجد على الإصدارات السابقة.
اختبار ضد مستويات أبي أعلى
بعد تجميع التطبيق الخاص بك، يجب التأكد من اختباره على النظام الأساسي المحدد في android:minSdkVersion التطبيق android:minSdkVersion السمة. للقيام بذلك، إنشاء أفد يستخدم إصدار منصة المطلوبة من قبل التطبيق الخاص بك. بالإضافة إلى ذلك، لضمان التوافق إلى الأمام، يجب تشغيل واختبار التطبيق على جميع الأنظمة الأساسية التي تستخدم مستوى أبي أعلى من تلك المستخدمة من قبل التطبيق الخاص بك.
يتضمن أندرويد سك إصدارات متعددة للمنصة التي يمكنك استخدامها، بما في ذلك أحدث إصدار، ويوفر أداة تحديث يمكنك استخدامها لتنزيل إصدارات الأنظمة الأساسية الأخرى حسب الضرورة.
للوصول إلى المحدث، استخدم أداة سطر الأوامر android ، الموجود في الدليل <سك> / أدوات. يمكنك إطلاق التحديث سك عن طريق تنفيذ android sdk سك. يمكنك أيضا ببساطة انقر نقرا مزدوجا فوق ملف android.bat (ويندوز) أو الروبوت (أوس X / لينكس).
لتشغيل التطبيق الخاص بك ضد إصدارات منصة مختلفة في المحاكي، إنشاء أفد لكل إصدار منصة تريد اختبار. لمزيد من المعلومات حول أفدس، راجع إنشاء وإدارة الأجهزة الظاهرية . إذا كنت تستخدم جهازا فعليا للاختبار، فتأكد من معرفة مستوى واجهة برمجة التطبيقات لنظام التشغيل أندرويد الذي يتم تشغيله. راجع الجدول أعلى هذا المستند للحصول على قائمة بإصدارات النظام الأساسي ومستويات واجهة برمجة التطبيقات.
تصفية الوثائق المرجعية حسب مستوى واجهة برمجة التطبيقات
تقدم صفحات الوثائق المرجعية في موقع مطوري برامج أندرويد عنصر تحكم "التصفية بحسب مستوى واجهة برمجة التطبيقات" في أعلى يمين منطقة كل صفحة. يمكنك استخدام عنصر التحكم لعرض الوثائق فقط لأجزاء من واجهة برمجة التطبيقات التي يمكن الوصول إليها فعليا للتطبيق الخاص بك، استنادا إلى مستوى أبي الذي android:minSdkVersion السمة android:minSdkVersion لملف البيان.
لاستخدام التصفية، حدد مربع الاختيار لتمكين التصفية، أسفل مربع بحث الصفحة مباشرة. ثم عين عنصر التحكم "التصفية حسب مستوى واجهة برمجة التطبيقات" إلى مستوى واجهة برمجة التطبيقات نفسه كما هو محدد من قبل تطبيقك. لاحظ أن واجهات برمجة التطبيقات التي تم إدخالها في مستوى أبي لاحق يتم تجاهلها بعد ذلك، كما أن محتوياتها مخفية، نظرا لأنها لن تكون متاحة للتطبيق.
التصفية حسب مستوى أبي في الوثائق لا توفر عرضا لما هو جديد أو تم تقديمه في كل مستوى أبي - فهو يوفر ببساطة طريقة لعرض أبي بالكامل المرتبطة بمستوى أبي معين، مع استبعاد عناصر واجهة برمجة التطبيقات التي تم إدخالها في مستويات أبي اللاحقة.
إذا قررت عدم رغبتك في تصفية وثائق واجهة برمجة التطبيقات، فما عليك سوى تعطيل الميزة باستخدام مربع الاختيار. بشكل افتراضي، يتم تعطيل تصفية مستوى واجهة برمجة التطبيقات، بحيث يمكنك عرض واجهة برمجة تطبيقات الإطار الكامل، بغض النظر عن مستوى واجهة برمجة التطبيقات.
لاحظ أيضا أن الوثائق المرجعية لعناصر أبي الفردية تحدد مستوى أبي الذي تم إدخال كل عنصر فيه. يتم تحديد مستوى واجهة برمجة التطبيقات للحزم والصفوف على أنها "منذ <أبي ليفيل>" في الجانب العلوي الأيسر من منطقة المحتوى في كل صفحة وثائق. يتم تحديد مستوى أبي لأعضاء الفصل في رؤوس الوصف التفصيلي، على الهامش الأيمن.
*-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-***-*-*-*-*-*