AIDL 總覽

Android 介面定義語言 (AIDL) 這項工具可讓使用者 以及抽象化的處理序間通訊 (IPC)提供介面 (在 .aidl 中指定) 檔案),各種建構系統會使用 aidl 二進位檔建構 C++ 或 Java 因此無論 執行階段或位元間隔

Android 中的任何程序之間都能使用 AIDL:平台元件之間 或在應用程式之間切換不過從來不會做為應用程式的 API。可能會用到 AIDL 平台導入 SDK API 的例子,更在 SDK API 介面 一律不含 AIDL API有關於如何使用 AIDL 的說明文件 之間的互動,請參閱 Android 開發人員 說明文件。 在分別更新的平台元件之間使用 AIDL 時,例如 例如 APEXs (Android 10 以上版本) 或 HAL (自 Android 11) 的版本管理系統,稱為 必須使用 Stable AIDL

範例

以下是 AIDL 介面範例:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

伺服器程序會註冊介面並向其提供呼叫,以及「用戶端」 這個程序會呼叫這些介面。在許多情況下,處理程序可同時 用戶端和伺服器。如要 進一步瞭解 AIDL 語言,請參閱 AIDL 語言。瞭解詳情 可使用這些介面的各種執行階段,請參見 AIDL 後端。這些類型 宣告與指定語言的類別宣告完全相同 如何跨程序運作

運作方式

AIDL 會使用繫結器核心驅動程式發出呼叫。當你撥打電話時, 方法 ID 和所有物件都會封裝至緩衝區中,並複製到 一種遠端程序,其中繫結器執行緒會等候讀取資料。成為繫結器後 執行緒接收交易資料,執行緒會查詢原生虛設常式物件 在本機程序中,這個類別會解壓縮資料,並對 本機介面物件這個本機介面物件是伺服器程序 建立及註冊的叢集在同一程序發起的通話時 後端,沒有 Proxy 物件,因此呼叫可直接存取,沒有任何 Proxy 物件 打包或拆封

與裝置上的服務互動

Android 隨附幾個指令,可讓您在 裝置。請嘗試:

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