نظرة عامة على AIDL

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

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

مثال

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

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

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

طريقة العمل

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

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

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

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