Ringkasan AIDL

Android Interface Definition Language (AIDL) adalah alat yang memungkinkan pengguna mengabstraksi IPC. Memiliki antarmuka (ditentukan dalam .aidl ), berbagai sistem build menggunakan biner aidl untuk membuat C++ atau Java binding 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: di antara komponen platform atau antar-aplikasi. Namun, tag ini tidak pernah digunakan sebagai API untuk aplikasi. AIDL dapat digunakan untuk mengimplementasikan API SDK di platform, misalnya, tetapi platform API SDK tidak pernah berisi API AIDL secara langsung. Untuk dokumentasi tentang cara menggunakan AIDL antar-aplikasi secara langsung, lihat opsi Developer Android dokumentasi tambahan. Ketika AIDL digunakan di antara komponen platform yang diupdate secara terpisah, seperti sebagai APEX (mulai Android 10) atau HAL (dimulai dalam Android 11), sistem pembuatan 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 antarmuka tersebut, serta klien membuat panggilan ke antarmuka tersebut. Di banyak kasus, proses bertindak sebagai klien dan server karena mungkin merujuk pada beberapa antarmuka. Untuk selengkapnya detail tentang bahasa AIDL, lihat Bahasa AIDL. Untuk detail selengkapnya tentang berbagai runtime yang tersedia untuk menggunakan antarmuka ini, lihat Backend AIDL. Jenis ini Deklarasi persis seperti deklarasi class dalam bahasa tertentu, tetapi deklarasi bekerja lintas proses.

Cara kerjanya

AIDL menggunakan driver kernel binder untuk melakukan panggilan. Saat Anda menelepon, ID metode dan semua objek dikemas ke dalam {i>buffer<i} dan disalin ke proses jarak jauh di mana {i>thread binder<i} menunggu untuk membaca data. Setelah binder thread menerima data untuk transaksi, thread mencari objek stub native di proses lokal, dan class ini mengekstrak data dan melakukan panggilan . Objek antarmuka lokal ini adalah yang merupakan proses server membuat dan mendaftar. Saat panggilan dilakukan dalam proses dan proses yang sama backend, tidak ada objek proxy, sehingga panggilan langsung tanpa mengemas atau membongkar barang.

Berinteraksi dengan layanan di perangkat

Android dilengkapi dengan beberapa perintah untuk memungkinkan interaksi dengan layanan pada perangkat seluler. Coba:

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