نظرة عامة على لغة تعريف واجهة نظام Android ‏(AIDL)

لغة تعريف واجهة Android (AIDL) هي أداة تتيح للمستخدمين تجريد عملية الاتصال بين العمليات (IPC). عند توفّر واجهة (محدّدة في ملف .aidl)، تستخدم أنظمة إنشاء مختلفة الملف الثنائي aidl لإنشاء روابط C++ أو Java، ما يتيح استخدام هذه الواجهة في جميع العمليات، بغض النظر عن وقت التشغيل أو عدد البتات.

يمكن استخدام AIDL بين أي عملية في Android، سواء بين مكوّنات النظام الأساسي أو بين التطبيقات. ومع ذلك، لا يتم استخدامها أبدًا كواجهة برمجة تطبيقات للتطبيقات. يمكن استخدام AIDL لتنفيذ واجهة برمجة تطبيقات حزمة SDK في النظام الأساسي، على سبيل المثال، ولكن لا يتضمّن سطح واجهة برمجة تطبيقات حزمة SDK واجهات برمجة تطبيقات AIDL مباشرةً. للحصول على مستندات حول كيفية استخدام AIDL بين التطبيقات مباشرةً، يُرجى الاطّلاع على مستندات مطوّري تطبيقات Android ذات الصلة. عند استخدام AIDL بين مكوّنات النظام الأساسي التي يتم تعديلها بشكل منفصل، مثل حِزم APEX (بدءًا من Android 10) أو طبقات HAL (بدءًا من Android 11)، يجب استخدام نظام تحديد الإصدار المعروف باسم Stable AIDL.

مثال

في ما يلي مثال على واجهة AIDL:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

تسجّل عملية الخادم واجهة وتنفّذ طلبات إليها، بينما تنفّذ عملية العميل طلبات إلى تلك الواجهات. في كثير من الحالات، يعمل أحد العمليات كعميل وخادم في الوقت نفسه، لأنّه قد يشير إلى واجهات متعددة. لمزيد من التفاصيل حول لغة AIDL، يُرجى الاطّلاع على لغة AIDL. لمزيد من التفاصيل حول بيئات التشغيل المختلفة المتاحة لاستخدام هذه الواجهات، راجِع برامج AIDL الخلفية. تتشابه تعريفات الأنواع هذه تمامًا مع تعريفات الفئات في لغة معيّنة، ولكنّها تعمل على مستوى العمليات.

آلية العمل

يستخدم AIDL برنامج تشغيل نواة binder لإجراء المكالمات. عند إجراء مكالمة، يتم تجميع معرّف الطريقة وجميع العناصر في مخزن مؤقت ونسخها إلى عملية بعيدة ينتظر فيها أحد سلاسل ربط البيانات قراءة البيانات. عندما يتلقّى أحد سلاسل ربط Binder بيانات خاصة بمعاملة، تبحث السلسلة عن عنصر جذع أصلي في العملية المحلية، ويقوم هذا الصف بفك حزمة البيانات وإجراء طلب على عنصر واجهة محلية. كائن الواجهة المحلية هذا هو الذي تنشئه عملية الخادم وتسجّله. عند إجراء المكالمات في العملية نفسها والخادم الخلفي نفسه، لا توجد عناصر وكيل، وبالتالي تكون المكالمات مباشرةً بدون أي عملية حزم أو فك حزم. لمزيد من المعلومات، اطّلِع على نظرة عامة على Binder.

التفاعل مع الخدمات على الجهاز

يتضمّن نظام التشغيل Android بعض الأوامر التي تتيح التفاعل مع الخدمات على الجهاز. ننصحك بما يلي:

    adb shell dumpsys --help # listing and dumping services
    adb shell service --help # sending commands to services for testing