AIDL'ye genel bakış

Android Arayüz Tanımlama Dili (AIDL), kullanıcıların IPC'yi soyutlamalarına olanak tanıyan bir araçtır. Bir arayüz (.aidl dosyasıyla belirtilir) verildiğinde çeşitli derleme sistemleri, C++ veya Java bağlamalarını oluşturmak için aidl ikili programını kullanır. Böylece bu arayüz, çalışma zamanı veya bitlik miktarı ne olursa olsun işlemlerde kullanılabilir.

AIDL, Android'de herhangi bir işlem arasında, platform bileşenleri arasında veya uygulamalar arasında kullanılabilir. Ancak hiçbir zaman uygulamalar için API olarak kullanılmaz. Örneğin AIDL, platformda bir SDK API'yi uygulamak için kullanılabilir ancak SDK API yüzeyi hiçbir zaman doğrudan AIDL API'lerini içermez. Doğrudan uygulamalar arasında AIDL kullanmayla ilgili dokümanlar için ilgili Android geliştirici belgelerini inceleyin. APEX'ler (Android 10'dan itibaren) veya HAL'ler (Android 11'den itibaren) gibi ayrı olarak güncellenen platform bileşenleri arasında AIDL kullanıldığında Kararlı AIDL olarak bilinen sürüm oluşturma sistemi 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, arayüzü kaydederek bu arayüze çağrıları sunar. Bir istemci işlemi, bu arayüzlere çağrı yapar. Çoğu durumda, bir işlem birden çok arayüzü referans alabileceği için hem istemci hem de sunucu görevi görür. AIDL dili hakkında daha fazla bilgi için AIDL dili konusuna bakın. Bu arayüzleri kullanmak için kullanılabilen çeşitli çalışma zamanları hakkında daha fazla bilgi edinmek için AIDL arka uçları bölümüne bakın. Bu tür bildirimler, belirli bir dildeki sınıf bildirimi gibidir ancak farklı süreçlerde çalışır.

İşleyiş şekli

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ı ve tüm nesneler bir arabelleğe yerleştirilir ve bir bağlayıcı iş parçacığının verileri okumak için beklediği uzak bir işleme kopyalanır. Bağlayıcı iş parçacığı bir işlem için veri aldıktan sonra, iş parçacığı yerel işlemde bir yerel saplama nesnesi arar. Bu sınıf, verilerin paketini açar ve bir yerel 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ı işlemde ve aynı arka uçta yapıldığında hiçbir proxy nesnesi bulunmaz. Bu nedenle çağrılar herhangi bir paketleme veya paket açma işlemi olmadan doğrudan yapılır.

Cihazda hizmetlerle etkileşimde bulunma

Android, cihazda hizmetlerle etkileşimde bulunmaya izin veren birkaç komut içerir. Bunu deneyin:

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