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 (.aidl dosyasında belirtilir) verildiğinde, çeşitli derleme sistemleri aidl ikili programını kullanarak C++ veya Java bağlamaları oluşturur. Böylece bu arayüz, çalışma zamanı veya bit sayısı ne olursa olsun süreçler arasında kullanılabilir.

AIDL, Android'deki herhangi bir işlem arasında (platform bileşenleri veya uygulamalar arasında) kullanılabilir. Ancak bu hizmet hiçbir zaman uygulamalar için API olarak kullanılmaz. AIDL, platformda bir SDK API'si uygulamak için kullanılabilir ancak SDK API yüzeyi hiçbir zaman doğrudan AIDL API'leri içermez. Uygulamalar arasında doğrudan AIDL'nin nasıl kullanılacağıyla ilgili dokümanlar için ilgili Android geliştirici belgelerine 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 Stable AIDL olarak bilinen sürüm oluşturma sistemi kullanılmalıdır.

Örnek

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

    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 yapılan çağrıları karşılar. Bir istemci işlemi ise bu arayüzlere çağrı yapar. Birçok durumda, bir işlem birden fazla arayüze başvurabileceğinden hem istemci hem de sunucu olarak hareket eder. 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 zamanları hakkında daha fazla bilgi edinmek için AIDL arka uçları başlıklı makaleyi inceleyin. Bu tür bildirimleri, belirli bir dildeki sınıf bildirimlerine benzer ancak bunlar 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. Arama yaptığınızda bir yöntem tanımlayıcısı ve tüm nesneler bir arabelleğe yerleştirilip verileri okumak için bir bağlayıcı iş parçacığının beklediği uzak bir işleme kopyalanır. Bir bağlayıcı iş parçacığı bir işlem için veri aldığında, iş parçacığı yerel süreçte yerel bir kaba kod nesnesi arar ve bu sınıf verileri açıp yerel bir arayüz nesnesinde çağrı yapar. Bu yerel arayüz nesnesi, bir sunucu işlemi tarafından oluşturulan ve kaydedilen nesnedir. Aramalar aynı süreçte ve aynı arka uçta yapıldığında proxy nesneleri olmadığından aramalar paketleme veya paket açma olmadan doğrudan yapılır. Daha fazla bilgi için Binder'a genel bakış başlıklı makaleyi inceleyin.

Cihazdaki hizmetlerle etkileşimde bulunma

Android, cihazdaki hizmetlerle etkileşimde bulunmaya olanak tanıyan birkaç komutla birlikte gelir. Şunları deneyin:

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