لغة تعريف واجهة Android (AIDL) هي أداة تتيح للمستخدمين
IPC تجريدها. هناك واجهة (تم تحديدها في .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 برنامج تشغيل نواة Binder لإجراء المكالمات. عند إجراء مكالمة، ويتم حزم كل الكائنات في مخزن مؤقت ونسخها إلى عملية بعيدة تنتظر فيها سلسلة المرابط لقراءة البيانات. بعد أن يتلقّى مؤشر تسلسل رسائل الربط بيانات لمعاملة، يبحث مؤشر التسلسل عن عنصر نائب أصلي في العملية المحلية، وتُفكك هذه الفئة البيانات وتُجري مكالمة على عنصر واجهة محلي. كائن الواجهة المحلية هذا هو الجزء الذي تتم منه عملية الخادم بإنشاءها وتسجيلها. عند إجراء المكالمات في العملية نفسها والخلفية نفسها، لا تتوفّر عناصر وكيلة، وبالتالي تكون المكالمات مباشرةً بدون أي تعبئة أو تفريغ.
التفاعل مع الخدمات على الجهاز
يتضمّن Android بعض الأوامر للسماح بالتفاعل مع الخدمات على الجهاز. ننصحك بما يلي:
adb shell dumpsys --help # listing and dumping services
adb shell service --help # sending commands to services for testing