تعریف سازگاری اندروید 4.2

تجدید نظر 2
آخرین به روز رسانی: 17 فوریه 2013

حق نشر © 2012، Google Inc. کلیه حقوق محفوظ است.
[email protected]

فهرست مطالب

1. معرفی
2. منابع
3. نرم افزار
3.1. سازگاری API مدیریت شده
3.2. سازگاری نرم افزار API
3.3. سازگاری Native API
3.4. سازگاری وب
3.5. سازگاری رفتاری API
3.6. فضاهای نام API
3.7. سازگاری با ماشین مجازی
3.8. سازگاری با رابط کاربری
3.9 مدیریت دستگاه
3.10 دسترسی
3.11 تبدیل متن به گفتار
4. سازگاری بسته بندی برنامه
5. سازگاری چند رسانه ای
6. سازگاری با ابزارها و گزینه های توسعه دهنده
7. سازگاری سخت افزار
7.1. نمایشگر و گرافیک
7.2. دستگاه های ورودی
7.3. حسگرها
7.4. اتصال داده
7.5. دوربین ها
7.6. حافظه و ذخیره سازی
7.7. یو اس بی
8. سازگاری با عملکرد
9. سازگاری مدل امنیتی
10. تست سازگاری نرم افزار
11. نرم افزار قابل به روز رسانی
12. تماس با ما
ضمیمه A - روش تست بلوتوث

1. معرفی

این سند شرایطی را که باید برای سازگاری دستگاه‌ها با Android 4.2 رعایت شود، برشمرده است.

استفاده از "باید"، "نباید"، "لازم"، "باید"، "نباید"، "باید"، "نباید"، "توصیه شده"، "ممکن است" و "اختیاری" طبق استاندارد IETF است. تعریف شده در RFC2119 [ منابع، 1 ].

همانطور که در این سند استفاده می‌شود، «پیاده‌کننده دستگاه» یا «اجراکننده» شخص یا سازمانی است که راه‌حل سخت‌افزار/نرم‌افزاری را با Android 4.2 توسعه می‌دهد. "پیاده سازی دستگاه" یا "پیاده سازی" راه حل سخت افزاری/نرم افزاری است که به این شکل توسعه یافته است.

برای اینکه پیاده‌سازی‌های دستگاه با Android 4.2 سازگار در نظر گرفته شوند، باید الزامات ارائه‌شده در این تعریف سازگاری، از جمله هر سندی که از طریق مرجع گنجانده شده‌اند، داشته باشند.

در مواردی که این تعریف یا تست‌های نرم‌افزاری توضیح داده شده در بخش 10 بی‌صدا، مبهم یا ناقص است، این مسئولیت اجرای دستگاه است که از سازگاری با پیاده‌سازی‌های موجود اطمینان حاصل کند.

به همین دلیل، پروژه منبع باز اندروید [ منابع، 3 ] هم مرجع و هم پیاده سازی ترجیحی اندروید است. پیاده‌سازان دستگاه به شدت تشویق می‌شوند تا پیاده‌سازی‌های خود را تا حد امکان بر اساس کد منبع «بالادست» موجود در پروژه منبع باز Android قرار دهند. در حالی که برخی از مؤلفه‌ها را می‌توان به طور فرضی با پیاده‌سازی‌های جایگزین جایگزین کرد، این عمل به شدت ممنوع است، زیرا گذراندن آزمون‌های نرم‌افزار به طور قابل‌توجهی دشوارتر می‌شود. این مسئولیت پیاده‌کننده است که از سازگاری کامل رفتاری با پیاده‌سازی استاندارد Android، از جمله و فراتر از مجموعه تست سازگاری اطمینان حاصل کند. در نهایت، توجه داشته باشید که تعویض و اصلاح برخی از اجزا به صراحت توسط این سند ممنوع است.

2. منابع

  1. سطوح مورد نیاز IETF RFC2119: http://www.ietf.org/rfc/rfc2119.txt
  2. مروری بر برنامه سازگاری اندروید: http://source.android.com/docs/compatibility/index.html
  3. پروژه متن باز اندروید: http://source.android.com/
  4. تعاریف و مستندات API: http://developer.android.com/reference/packages.html
  5. مرجع مجوزهای Android: http://developer.android.com/reference/android/Manifest.permission.html
  6. مرجع android.os.Build: http://developer.android.com/reference/android/os/Build.html
  7. رشته های نسخه مجاز Android 4.2: http://source.android.com/docs/compatibility/4.2/versions.html
  8. Renderscript: http://developer.android.com/guide/topics/graphics/renderscript.html
  9. شتاب سخت افزار: http://developer.android.com/guide/topics/graphics/hardware-accel.html
  10. کلاس android.webkit.WebView: http://developer.android.com/reference/android/webkit/WebView.html
  11. HTML5: http://www.whatwg.org/specs/web-apps/current-work/multipage/
  12. قابلیت های آفلاین HTML5: http://dev.w3.org/html5/spec/Overview.html#offline
  13. برچسب ویدیوی HTML5: http://dev.w3.org/html5/spec/Overview.html#video
  14. HTML5/W3C geolocation API: http://www.w3.org/TR/geolocation-API/
  15. API پایگاه داده وب HTML5/W3C: http://www.w3.org/TR/webdatabase/
  16. HTML5/W3C IndexedDB API: http://www.w3.org/TR/IndexedDB/
  17. مشخصات ماشین مجازی Dalvik: در کد منبع Android در dalvik/docs موجود است
  18. AppWidgets: http://developer.android.com/guide/practices/ui_guidelines/widget_design.html
  19. اعلان ها: http://developer.android.com/guide/topics/ui/notifiers/notifications.html
  20. منابع برنامه: http://code.google.com/android/reference/available-resources.html
  21. راهنمای سبک نماد نوار وضعیت: http://developer.android.com/guide/practices/ui_guidelines/icon_design_status_bar.html
  22. مدیر جستجو: http://developer.android.com/reference/android/app/SearchManager.html
  23. نان تست: http://developer.android.com/reference/android/widget/Toast.html
  24. تم ها: http://developer.android.com/guide/topics/ui/themes.html
  25. کلاس R.style: http://developer.android.com/reference/android/R.style.html
  26. تصاویر پس زمینه زنده: https://android-developers.googleblog.com/2010/02/live-wallpapers.html
  27. مدیریت دستگاه Android: http://developer.android.com/guide/topics/admin/device-admin.html
  28. مرجع DevicePolicyManager: http://developer.android.com/reference/android/app/admin/DevicePolicyManager.html
  29. APIهای سرویس دسترس‌پذیری Android: http://developer.android.com/reference/android/accessibilityservice/package-summary.html
  30. APIهای دسترسی Android: http://developer.android.com/reference/android/view/accessibility/package-summary.html
  31. پروژه Eyes Free: http://code.google.com/p/eyes-free
  32. APIهای Text-To-Speech: http://developer.android.com/reference/android/speech/tts/package-summary.html
  33. مستندات ابزار مرجع (برای adb، aapt، ddms، systrace): http://developer.android.com/guide/developing/tools/index.html
  34. توضیحات فایل apk اندروید: http://developer.android.com/guide/topics/fundamentals.html
  35. فایل های مانیفست: http://developer.android.com/guide/topics/manifest/manifest-intro.html
  36. ابزار تست میمون: https://developer.android.com/studio/test/other-testing-tools/monkey
  37. Android android.content.pm.PackageManager کلاس و لیست ویژگی های سخت افزار: http://developer.android.com/reference/android/content/pm/PackageManager.html
  38. پشتیبانی از چند صفحه: http://developer.android.com/guide/practices/screens_support.html
  39. android.util.DisplayMetrics: http://developer.android.com/reference/android/util/DisplayMetrics.html
  40. android.content.res.Configuration: http://developer.android.com/reference/android/content/res/Configuration.html
  41. android.hardware.SensorEvent: http://developer.android.com/reference/android/hardware/SensorEvent.html
  42. API بلوتوث: http://developer.android.com/reference/android/bluetooth/package-summary.html
  43. NDEF Push Protocol: http://source.android.com/docs/compatibility/ndef-push-protocol.pdf
  44. MIFARE MF1S503X: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf
  45. MIFARE MF1S703X: http://www.nxp.com/documents/data_sheet/MF1S703x.pdf
  46. MIFARE MF0ICU1: http://www.nxp.com/documents/data_sheet/MF0ICU1.pdf
  47. MIFARE MF0ICU2: http://www.nxp.com/documents/short_data_sheet/MF0ICU2_SDS.pdf
  48. MIFARE AN130511: http://www.nxp.com/documents/application_note/AN130511.pdf
  49. MIFARE AN130411: http://www.nxp.com/documents/application_note/AN130411.pdf
  50. API جهت‌گیری دوربین: http://developer.android.com/reference/android/hardware/Camera.html#setDisplayOrientation(int)
  51. دوربین: http://developer.android.com/reference/android/hardware/Camera.html
  52. لوازم جانبی باز اندروید: http://developer.android.com/guide/topics/usb/accessory.html
  53. USB Host API: http://developer.android.com/guide/topics/usb/host.html
  54. مرجع امنیت و مجوزهای Android: http://developer.android.com/guide/topics/security/security.html
  55. برنامه های اندروید: http://code.google.com/p/apps-for-android
  56. Android DownloadManager: http://developer.android.com/reference/android/app/DownloadManager.html
  57. انتقال فایل اندروید: http://www.android.com/filetransfer
  58. قالب‌های رسانه اندروید: http://developer.android.com/guide/appendix/media-formats.html
  59. پروتکل پیش‌نویس پخش جریانی زنده HTTP: http://tools.ietf.org/html/draft-pantos-http-live-streaming-03
  60. انتقال اتصال NFC: http://www.nfc-forum.org/specs/spec_list/#conn_handover
  61. جفت‌سازی ساده بلوتوث ایمن با استفاده از NFC: http://www.nfc-forum.org/resources/AppDocs/NFCForum_AD_BTSSP_1_0.pdf
  62. Wifi Multicast API: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
  63. Action Assist: http://developer.android.com/reference/android/content/Intent.html#ACTION_ASSIST
  64. مشخصات شارژ USB: http://www.usb.org/developers/devclass_docs/USB_Battery_Charging_1.2.pdf
  65. Android Beam: http://developer.android.com/guide/topics/nfc/nfc.html
  66. Android USB Audio: http://developer.android.com/reference/android/hardware/usb/UsbConstants.html#USB_CLASS_AUDIO
  67. تنظیمات اشتراک‌گذاری NFC Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_NFCSHARING_SETTINGS
  68. Wifi Direct (Wifi P2P): http://developer.android.com/reference/android/net/wifi/p2p/WifiP2pManager.html
  69. ویجت قفل و صفحه اصلی: http://developer.android.com/reference/android/appwidget/AppWidgetProviderInfo.html
  70. مرجع UserManager: http://developer.android.com/reference/android/os/UserManager.html
  71. مرجع حافظه خارجی: https://source.android.com/docs/core/storage
  72. APIهای حافظه خارجی: http://developer.android.com/reference/android/os/Environment.html
  73. کد کوتاه پیامکی: http://en.wikipedia.org/wiki/Short_code
  74. سرویس گیرنده کنترل از راه دور رسانه: http://developer.android.com/reference/android/media/RemoteControlClient.html
  75. مدیر نمایش: http://developer.android.com/reference/android/hardware/display/DisplayManager.html
  76. رویاها: http://developer.android.com/reference/android/service/dreams/DreamService.html
  77. تنظیمات مربوط به توسعه برنامه Android: http://developer.android.com/reference/android/provider/Settings.html#ACTION_APPLICATION_DEVELOPMENT_SETTINGS
  • دوربین: http://developer.android.com/reference/android/hardware/Camera.Parameters.html
  • بسیاری از این منابع به طور مستقیم یا غیرمستقیم از Android 4.2 SDK مشتق شده اند و از نظر عملکردی با اطلاعات موجود در اسناد آن SDK یکسان خواهند بود. در هر موردی که این تعریف سازگاری یا مجموعه تست سازگاری با مستندات SDK مخالف باشد، اسناد SDK معتبر تلقی می‌شوند. هر گونه جزئیات فنی ارائه شده در مراجع ذکر شده در بالا به عنوان بخشی از این تعریف سازگاری در نظر گرفته می شود.

    3. نرم افزار

    3.1. سازگاری API مدیریت شده

    محیط اجرای مدیریت شده (مبتنی بر دالویک) وسیله اصلی برنامه های اندروید است. رابط برنامه نویسی برنامه اندروید (API) مجموعه ای از رابط های پلتفرم اندروید است که در معرض برنامه های کاربردی در حال اجرا در محیط VM مدیریت شده قرار دارند. پیاده‌سازی‌های دستگاه باید پیاده‌سازی‌های کامل، از جمله تمام رفتارهای مستند، هر API مستندی را که توسط Android 4.2 SDK در معرض نمایش قرار می‌گیرد [ منابع، 4 ] ارائه دهد.

    پیاده‌سازی‌های دستگاه نباید هیچ‌یک از APIهای مدیریت‌شده را حذف کنند، رابط‌ها یا امضاهای API را تغییر دهند، از رفتار مستند منحرف شوند، یا شامل موارد بدون عملیات باشند، مگر در مواردی که به‌طور خاص توسط این تعریف سازگاری مجاز است.

    این تعریف سازگاری اجازه می‌دهد برخی از انواع سخت‌افزاری که Android برای آن‌ها دارای API است توسط پیاده‌سازی دستگاه حذف شوند. در چنین مواردی، APIها باید همچنان وجود داشته باشند و به روشی معقول رفتار کنند. برای شرایط خاص این سناریو به بخش 7 مراجعه کنید.

    3.2. سازگاری نرم افزار API

    علاوه بر APIهای مدیریت شده از بخش 3.1، Android همچنین شامل یک API "نرم" فقط زمان اجرا قابل توجه است، به شکل مواردی مانند Intent ها، مجوزها، و جنبه های مشابه برنامه های Android که در زمان کامپایل برنامه قابل اجرا نیستند.

    3.2.1. مجوزها

    پیاده‌کننده‌های دستگاه باید تمام ثابت‌های مجوز را همانطور که در صفحه مرجع مجوز [ منابع، 5 ] مستند شده است، پشتیبانی و اجرا کنند. توجه داشته باشید که بخش 10 الزامات اضافی مربوط به مدل امنیتی اندروید را فهرست می کند.

    3.2.2. ساخت پارامترها

    APIهای Android شامل تعدادی ثابت در کلاس android.os.Build [ منابع، 6 ] هستند که برای توصیف دستگاه فعلی در نظر گرفته شده است. برای ارائه مقادیر معنادار و منسجم در بین پیاده‌سازی‌های دستگاه، جدول زیر شامل محدودیت‌های اضافی در قالب‌های این مقادیر است که پیاده‌سازی دستگاه باید با آنها مطابقت داشته باشد.

    پارامتر نظرات
    android.os.Build.VERSION.RELEASE نسخه سیستم اندروید در حال اجرا، در قالب قابل خواندن توسط انسان. این فیلد باید دارای یکی از مقادیر رشته تعریف شده در [ منابع، 7 ] باشد.
    android.os.Build.VERSION.SDK نسخه سیستم Android در حال اجرا، در قالبی که برای کد برنامه شخص ثالث قابل دسترسی است. برای اندروید 4.2، این فیلد باید دارای عدد صحیح 17 باشد.
    android.os.Build.VERSION.SDK_INT نسخه سیستم Android در حال اجرا، در قالبی که برای کد برنامه شخص ثالث قابل دسترسی است. برای اندروید 4.2، این فیلد باید دارای عدد صحیح 17 باشد.
    android.os.Build.VERSION.INCREMENTAL مقداری که توسط پیاده‌کننده دستگاه انتخاب شده است که ساختار خاص سیستم Android در حال اجرا را در قالب قابل خواندن توسط انسان تعیین می‌کند. این مقدار نباید برای ساخت‌های مختلفی که در دسترس کاربران نهایی قرار گرفته‌اند دوباره استفاده شود. یک استفاده معمولی از این فیلد این است که نشان دهد کدام شماره ساخت یا شناسه تغییر منبع-کنترل برای تولید بیلد استفاده شده است. هیچ الزامی برای قالب خاص این فیلد وجود ندارد، به جز اینکه نباید خالی یا رشته خالی ("") باشد.
    android.os.Build.BOARD مقداری که توسط پیاده‌کننده دستگاه انتخاب می‌شود و سخت‌افزار داخلی خاص مورد استفاده دستگاه را در قالب قابل خواندن توسط انسان شناسایی می‌کند. یکی از کاربردهای احتمالی این فیلد نشان دادن بازبینی خاص برد تغذیه کننده دستگاه است. مقدار این فیلد باید به صورت ASCII 7 بیتی قابل رمزگذاری باشد و با عبارت منظم "^[a-zA-Z0-9.,_-]+$" مطابقت داشته باشد.
    android.os.Build.BRAND مقداری که توسط پیاده‌کننده دستگاه انتخاب می‌شود و نام شرکت، سازمان، فردی و غیره را که دستگاه را تولید کرده است، در قالب قابل خواندن توسط انسان مشخص می‌کند. استفاده احتمالی از این فیلد نشان دادن OEM و/یا حاملی است که دستگاه را فروخته است. مقدار این فیلد باید به صورت ASCII 7 بیتی قابل رمزگذاری باشد و با عبارت منظم "^[a-zA-Z0-9.,_-]+$" مطابقت داشته باشد.
    android.os.Build.CPU_ABI نام مجموعه دستورالعمل (نوع CPU + قرارداد ABI) کد بومی. به