ภาพรวมของ AIDL

Android Interface Definition Language (AIDL) เป็นเครื่องมือที่ช่วยให้ผู้ใช้ ไม่แสดงนามธรรม IPC ได้รับอินเทอร์เฟซ (ระบุไว้ใน .aidl ) ระบบบิลด์ต่างๆ จะใช้ไบนารี aidl เพื่อสร้าง C++ หรือ Java การเชื่อมโยงเพื่อให้อินเทอร์เฟซนี้สามารถใช้ข้ามกระบวนการได้ โดยไม่คำนึงถึง รันไทม์หรือบิตเหล่านี้

AIDL สามารถใช้ระหว่างกระบวนการใดก็ได้ใน Android: ระหว่างคอมโพเนนต์ของแพลตฟอร์ม หรือระหว่างแอป แต่ไม่ได้ใช้เป็น API สำหรับแอป อาจมีการใช้ AIDL ในการนำ SDK API มาใช้ในแพลตฟอร์ม เป็นต้น แต่แพลตฟอร์ม SDK API ไม่เคยมี AIDL API โดยตรง โปรดดูเอกสารเกี่ยวกับวิธีใช้ AIDL ระหว่างแอปโดยตรง โปรดดูส่วนที่เกี่ยวข้อง นักพัฒนาซอฟต์แวร์ Android เอกสารประกอบ เมื่อมีการใช้ AIDL ระหว่างคอมโพเนนต์ของแพลตฟอร์มที่อัปเดตแยกกัน เช่น เป็น APEXes (เริ่มต้นใน 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 ใช้ไดรเวอร์ Kernel แบบเยนเดอร์เพื่อโทรออก เมื่อคุณโทรออก และออบเจ็กต์ทั้งหมดจะได้รับการบรรจุลงในบัฟเฟอร์และคัดลอกไปยัง กระบวนการระยะไกลที่เทรด Binder รออ่านข้อมูล เมื่อแฟ้ม เทรดได้รับข้อมูลสำหรับธุรกรรม เทรดจะค้นหาออบเจ็กต์สตับดั้งเดิม ในกระบวนการภายในระบบ และคลาสนี้จะคลายการแพคข้อมูลและทำการเรียกใน ออบเจ็กต์อินเทอร์เฟซภายในเครื่อง ออบเจ็กต์อินเทอร์เฟซในเครื่องนี้เป็นกระบวนการของเซิร์ฟเวอร์ สร้างและลงทะเบียน เมื่อมีการเรียกใช้ด้วยกระบวนการเดียวกันและเหมือนกัน แบ็กเอนด์ ไม่มีออบเจ็กต์พร็อกซีอยู่ และการเรียกใช้จึงโดยตรงโดยไม่มี การบรรจุหีบห่อหรือการบรรจุหีบห่อ

โต้ตอบกับบริการในอุปกรณ์

Android มาพร้อมกับคำสั่งบางอย่างเพื่อให้โต้ตอบกับบริการต่างๆ บน อุปกรณ์ ลองถามคำถามเหล่านี้ดู

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