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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

يمكن استخدام AIDL بين أي عملية في Android: بين مكونات النظام الأساسي أو بين التطبيقات. ومع ذلك ، لا يتم استخدامه أبدًا كواجهة برمجة تطبيقات للتطبيقات. يمكن استخدام AIDL لتنفيذ SDK API في النظام الأساسي ، على سبيل المثال ، لكن سطح واجهة برمجة تطبيقات 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 لإجراء المكالمات. عند إجراء مكالمة ، يتم حزم معرف الأسلوب وجميع الكائنات في مخزن مؤقت ونسخها إلى عملية بعيدة حيث ينتظر مؤشر ترابط رابط لقراءة البيانات. بمجرد أن يتلقى مؤشر ترابط Binder بيانات لمعاملة ما ، يبحث مؤشر الترابط عن كائن كعب روتين أصلي في العملية المحلية ، وتقوم هذه الفئة بفك حزم البيانات وإجراء مكالمة على كائن واجهة محلية. كائن الواجهة المحلية هذا هو الكائن الذي تقوم عملية الخادم بإنشائه وتسجيله. عندما يتم إجراء المكالمات في نفس العملية ونفس الخلفية ، لا توجد كائنات وكيل ، وبالتالي تكون المكالمات مباشرة دون أي تعبئة أو تفريغ.

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

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

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