لغة تعريف واجهة Android (AIDL) هي أداة تتيح للمستخدمين
تجاهُل واجهة برمجة التطبيقات. استنادًا إلى واجهة (محدّدة في ملف .aidl
)، تستخدِم أنظمة الإنشاء المختلفة الملف الثنائي aidl
لإنشاء ربطات C++ أو Java
حتى يمكن استخدام هذه الواجهة في جميع العمليات، بغض النظر عن
وقت التشغيل أو عدد الوحدات.
يمكن استخدام AIDL بين أي عملية في Android: بين مكونات النظام الأساسي أو بين التطبيقات. ومع ذلك، لا يتم استخدامها أبدًا لواجهة برمجة تطبيقات. يمكن استخدام AIDL لتنفيذ واجهة برمجة تطبيقات حزمة SDK في النظام الأساسي، على سبيل المثال، ولكن لا تحتوي واجهة برمجة تطبيقات حزمة SDK أبدًا على واجهات برمجة تطبيقات AIDL مباشرةً. للحصول على مستندات حول كيفية استخدام AIDL بين التطبيقات مباشرةً، يُرجى الاطّلاع على مستندات مطوّري تطبيقات Android ذات الصلة. عند استخدام لغة تعريف واجهة نظام Android (AIDL) بين مكوّنات النظام الأساسية التي يتم تحديثها بشكل منفصل، مثل حِزم APEX (بدءًا من Android 10) أو حِزم HAL (بدءًا من Android 11)، يجب استخدام نظام تحديد الإصدارات المعروف باسم AIDL الثابت.
مثال
في ما يلي مثال على واجهة AIDL:
package my.package;
import my.package.Baz; // defined elsewhere
interface IFoo {
void doFoo(Baz baz);
}
تسجِّل عملية الخادم واجهة وتعرض طلبات إليها، وتطلب عملية العميل طلبات إلى هذه الواجهات. في كثير من الحالات، تعمل العملية كأحد العملاء والخوادم لأنّها قد تشير إلى واجهات متعددة. لمزيد من التفاصيل حول لغة AIDL، يُرجى الاطّلاع على لغة AIDL. لمزيد من التفاصيل حول أوقات التشغيل المختلفة المتاحة لاستخدام هذه الواجهات، يُرجى الاطّلاع على خلفيات AIDL. إنّ تعريفات الأنواع هذه تشبه تمامًا تعريف فئة في لغة معيّنة، ولكنها تعمل في جميع العمليات.
آلية العمل
يستخدم AIDL برنامج تشغيل نواة الربط لإجراء المكالمات. عند إجراء مكالمة، يتم تجميع معرّف الطريقة وجميع العناصر في ذاكرة تخزين مؤقتة ونسخها إلى عملية عن بُعد حيث ينتظر مؤشر تسلسل ربط البيانات لقراءة البيانات. بعد أن يتلقّى مؤشر تسلسل رسائل الربط بيانات لمعاملة، يبحث مؤشر التسلسل عن عنصر واجهة برمجة تطبيقات أصلي في العملية المحلية، وتُفكك هذه الفئة البيانات وتُجري مكالمة بشأن عنصر واجهة برمجة تطبيقات محلي. عنصر الواجهة المحلي هذا هو العنصر الذي تنشئه عملية الخادم ويُسجَّل. عند إجراء المكالمات في العملية نفسها والخلفية نفسها، لا تتوفّر عناصر وكيلة، وبالتالي تكون المكالمات مباشرةً بدون أي تعبئة أو فكّ.
التفاعل مع الخدمات على الجهاز
يتضمّن Android بعض الأوامر للسماح بالتفاعل مع الخدمات على الجهاز. ننصحك بما يلي:
adb shell dumpsys --help # listing and dumping services
adb shell service --help # sending commands to services for testing