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. AIDL kullanılabilir (ör. platforma bir SDK API uygulamak için) ancak SDK API'nin hiçbir zaman doğrudan AIDL API'lerini içermez. AIDL'nin nasıl kullanılacağıyla ilgili dokümanlar için uygulamalar arasında geçiş yapma konusunda Android geliştiricileri dokümanlarına göz atı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

Aşağıda örnek bir AIDL arayüzü verilmiştir:

    package my.package;

    import my.package.Baz; // defined elsewhere

    interface IFoo {
        void doFoo(Baz baz);
    }

Sunucu işlemi, bir arayüzü kaydederek bu arayüze çağrılar sunar ve istemci 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. Daha fazla AIDL dili hakkında ayrıntılı bilgi için bkz. AIDL dili. Ayrıntılı bilgi için için bkz. AIDL arka uçları. 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 bağlayıcı çekirdek sürücüsünü kullanır. Telefon ettiğinizde yöntem tanımlayıcısı ve tüm nesneler bir arabelleğe yerleştirilir ve bağlayıcı iş parçacığının verileri okumak için beklediği uzak bir süreçtir. Bağlayıcı iş parçacığı bir işleme ait verileri aldığında, iş parçacığı yerel saplama nesnesini arar vardır, bu sınıf verilerin paketlemesini açar ve bir sonraki yerel arayüz nesnesi. Bu yerel arayüz nesnesi, bir sunucu işlemidir kayıt altına alır. Aramalar aynı süreçte ve aynı şekilde yapıldığında proxy nesnesi yoktur, bu nedenle çağrılar hazırlamanız gerekir.

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