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 (.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. Ayrı olarak güncellenen platform bileşenleri arasında AIDL kullanıldığında: APEX (Android 10 sürümünden itibaren) veya HAL (önceki sürümden itibaren) Android 11) yüklüdür. Kararlı AIDL 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);
    }

Sunucu işlemi, arayüzü kaydedip bu hizmete çağrılar sunar. İstemci de işlemi, bu arayüzlere çağrı yapar. Ç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. AIDL dili hakkında daha fazla bilgi için AIDL dili başlıklı makaleyi inceleyin. 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ür bildirimleri, belirli bir dildeki sınıf bildirimleri gibidir ancak süreçler arasında çalışır.

İşleyiş şekli

AIDL, arama yapmak için bağlayıcı ç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.

Cihazda 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