Ikhtisar AIDL, Ikhtisar AIDL

Android Interface Definition Language (AIDL) adalah alat yang memungkinkan pengguna mengabstraksi IPC. Mengingat sebuah antarmuka (ditentukan dalam file .aidl ), berbagai sistem pembangunan menggunakan biner aidl untuk membuat pengikatan C++ atau Java sehingga antarmuka ini dapat digunakan di seluruh proses, terlepas dari runtime atau bitness di sana.

AIDL dapat digunakan di antara proses apa pun di Android: antar komponen platform atau antar aplikasi. Namun, ini tidak pernah digunakan sebagai API untuk aplikasi. AIDL dapat digunakan untuk mengimplementasikan API SDK di platform, misalnya, namun permukaan SDK API tidak pernah berisi API AIDL secara langsung. Untuk dokumentasi tentang cara menggunakan AIDL antar aplikasi secara langsung, lihat dokumentasi pengembang Android terkait. Saat AIDL digunakan di antara komponen platform yang diperbarui secara terpisah, seperti APEX (dimulai di Android 10) atau HAL (dimulai di Android 11), sistem versi yang dikenal sebagai AIDL Stabil harus digunakan.

Contoh

Berikut adalah contoh antarmuka AIDL:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

Proses server mendaftarkan antarmuka dan melayani panggilan ke sana, dan proses klien membuat panggilan ke antarmuka tersebut. Dalam banyak kasus, suatu proses bertindak sebagai klien dan server karena mungkin mereferensikan banyak antarmuka. Untuk detail lebih lanjut tentang bahasa AIDL, lihat Bahasa AIDL . Untuk detail lebih lanjut tentang berbagai runtime yang tersedia untuk menggunakan antarmuka ini, lihat backend AIDL . Deklarasi tipe ini persis seperti deklarasi kelas dalam bahasa tertentu, tetapi deklarasi ini bekerja lintas proses.

Bagaimana itu bekerja

AIDL menggunakan driver kernel pengikat untuk melakukan panggilan. Saat Anda melakukan panggilan, pengidentifikasi metode dan semua objek dimasukkan ke dalam buffer dan disalin ke proses jarak jauh di mana thread pengikat menunggu untuk membaca data. Setelah thread pengikat menerima data untuk suatu transaksi, thread tersebut mencari objek stub asli dalam proses lokal, dan kelas ini membongkar data dan membuat panggilan pada objek antarmuka lokal. Objek antarmuka lokal ini adalah objek yang dibuat dan didaftarkan oleh proses server. Ketika panggilan dilakukan dalam proses yang sama dan backend yang sama, tidak ada objek proxy, sehingga panggilan dilakukan secara langsung tanpa pengepakan atau pembongkaran apa pun.

Berinteraksi dengan layanan di perangkat

Android hadir dengan beberapa perintah untuk memungkinkan interaksi dengan layanan di perangkat. Mencoba:

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