AIDL 總覽

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

AIDL 可用於 Android 中的任何程序:平台元件之間或應用程式之間。不過,它從未用於應用程式 API。可能會用到 AIDL 平台導入 SDK API 的例子,更在 SDK API 介面 一律不含 AIDL API有關於如何使用 AIDL 的說明文件 之間的互動,請參閱 Android 開發人員 說明文件。 如果在個別更新的平台元件之間使用 AIDL (例如 APEX (自 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