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

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

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

مثال

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

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

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

كيف تعمل

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

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

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

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