AIDL'ye Genel Bakış,AIDL'ye Genel Bakış

Android Arayüz Tanımlama Dili (AIDL), kullanıcıların IPC'yi soyutlamasına olanak tanıyan bir araçtır. Bir arayüz verildiğinde ( .aidl dosyasında belirtilir), çeşitli yapı sistemleri aidl ikili dosyasını C++ veya Java bağlamaları oluşturmak için kullanır, böylece bu arayüz oradaki çalışma süresi veya bit miktarına bakılmaksızın işlemler arasında kullanılabilir.

AIDL, Android'deki herhangi bir işlem arasında kullanılabilir: platform bileşenleri arasında veya uygulamalar arasında. Ancak hiçbir zaman uygulamalar için API olarak kullanılmaz. AIDL, örneğin platformda bir SDK API'sini uygulamak için kullanılabilir, ancak SDK API yüzeyi hiçbir zaman doğrudan AIDL API'lerini içermez. AIDL'nin doğrudan uygulamalar arasında nasıl kullanılacağına ilişkin belgeler için ilgili Android geliştiricilerinin belgelerine bakın. APEX'ler (Android 10'dan başlayarak) veya HAL'ler (Android 11'den başlayarak) gibi ayrı olarak güncellenen platform bileşenleri arasında AIDL kullanıldığında, Stabil AIDL olarak bilinen sürüm oluşturma sisteminin kullanılması gerekir.

Örnek

İşte örnek bir AIDL arayüzü:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

Bir sunucu işlemi bir arayüzü kaydeder ve ona çağrılar sunar ve bir istemci süreci bu arayüzlere çağrı yapar. Çoğu durumda, bir süreç birden fazla arayüze başvuruyor olabileceğinden hem istemci hem de sunucu gibi davranır. AIDL dili hakkında daha fazla ayrıntı için bkz. AIDL dili . Bu arayüzleri kullanmak için mevcut olan çeşitli çalışma zamanları hakkında daha fazla ayrıntı için bkz . AIDL arka uçları . Bu tür bildirimler tam olarak belirli bir dildeki sınıf bildirimine benzer, ancak süreçler arasında çalışırlar.

Nasıl çalışır

AIDL, çağrı yapmak için bağlayıcı çekirdek sürücüsünü kullanır. Bir çağrı yaptığınızda, bir yöntem tanımlayıcısı ve tüm nesneler bir ara belleğe paketlenir ve bir bağlayıcı iş parçacığının verileri okumayı beklediği uzak bir işleme kopyalanır. Bir ciltleyici iş parçacığı bir işlem için veri aldığında, iş parçacığı yerel işlemde yerel bir saplama nesnesini arar ve bu sınıf, verileri paketinden çıkarır ve yerel bir arayüz nesnesine çağrı yapar. Bu yerel arayüz nesnesi, bir sunucu işleminin oluşturduğu ve kaydettiği nesnedir. Çağrılar aynı süreçte ve aynı arka uçta yapıldığında, hiçbir proxy nesnesi mevcut değildir ve bu nedenle çağrılar, herhangi bir paketleme veya açma işlemine gerek kalmadan doğrudan gerçekleştirilir.

Cihazdaki hizmetlerle etkileşim kurma

Android, cihazdaki hizmetlerle etkileşime izin veren birkaç komutla birlikte gelir. Denemek:

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