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