AIDL'ye genel bakış

Android Arayüz Tanımlama Dili (AIDL), kullanıcıların soyutlayan IPC'yi özetlemesidir. Bir arayüz verildi (.aidl ile belirtilir) dosyası içeriyorsa), çeşitli derleme sistemleri, C++ veya Java'yı oluşturmak için aidl ikili programını kullanır. Bu arayüzün, güvenlik düzeyi ne olursa olsun işlemler arasında kullanılabilmesi için oradaki bit hızına değinin.

AIDL Android'de tüm işlemler arasında, platform bileşenleri arasında kullanılabilir veya uygulamalar arasında geçiş yapın. Ancak hiçbir zaman uygulamalar için API olarak kullanılmaz. Örneğin, platformda bir SDK API'si uygulamak için AIDL kullanılabilir ancak SDK API yüzeyi hiçbir zaman doğrudan AIDL API'leri içermez. AIDL'nin uygulamalar arasında doğrudan nasıl kullanılacağıyla ilgili dokümanlar için ilgili Android geliştirici dokümanlarına bakın. APEX'ler (Android 10'dan itibaren) veya HAL'ler (Android 11'den itibaren) gibi ayrı ayrı güncellenen platform bileşenleri arasında AIDL kullanıldığında Sabit AIDL olarak bilinen sürüm sistemi kullanılmalıdır.

Örnek

Ö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 bu arayüze çağrı gönderir. Bir istemci işlemi ise bu arayüzlere çağrı gönderir. Çoğu durumda, bir süreç hem birden çok arayüze referans veriyor olabileceğinden farklı bir istemci ve sunucu arasında geçiş yapın. Daha fazla AIDL dili hakkında ayrıntılı bilgi için bkz. AIDL dili. Bu arayüzleri kullanmak için kullanılabilen çeşitli çalışma ortamları hakkında daha fazla bilgi için AIDL arka uçları bölümüne bakın. Bu türler beyanları belirli bir dildeki sınıf bildirimi gibidir ancak ve süreçlerde nasıl işleyeceğini konuştuk.

İşleyiş şekli

AIDL, çağrı yapmak için binder çekirdek sürücüsünü kullanır. Bir çağrı yaptığınızda yöntem tanımlayıcısı ve tüm nesneler bir arabelleğe paketlenir ve bir bağlayıcı iş parçacığının verileri okumayı beklediği uzak bir sürece kopyalanır. Bir bağlayıcı iş parçacığı bir işleme ait verileri aldıktan sonra, yerel işlemde yerel bir stub nesnesi arar. Bu sınıf, verileri paketten çıkarır ve yerel bir arayüz nesnesine çağrı yapar. Bu yerel arayüz nesnesi, bir sunucu işlemidir kayıt altına alır. Aynı süreçte ve aynı arka uçta çağrı yapıldığında proxy nesnesi bulunmaz. Bu nedenle, çağrılar paketlenmeden veya paketten çıkarılmadan doğrudan yapılır.

Cihazdaki hizmetlerle etkileşimde bulunma

Android, cihazdaki hizmetlerle etkileşimde bulunmaya izin veren birkaç komut içerir. olanak tanır. Bunu deneyin:

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