Android sistem mimarisi aşağıdaki bileşenleri içerir:
- Uygulama çerçevesi . Uygulama çerçevesi, en sık uygulama geliştiricileri tarafından kullanılır. Bir donanım geliştiricisi olarak, geliştirici API'lerinin çoğu, doğrudan temeldeki HAL arabirimleriyle eşleşir ve sürücülerin uygulanmasıyla ilgili yararlı bilgiler sağlayabilir.
- Bağlayıcı IPC . Bağlayıcı İşlemler Arası İletişim (IPC) mekanizması, uygulama çerçevesinin işlem sınırlarını aşmasına ve Android sistem hizmetleri kodunu aramasına olanak tanır. Bu, üst düzey çerçeve API'lerinin Android sistem hizmetleriyle etkileşime girmesini sağlar. Uygulama çerçevesi düzeyinde, bu iletişim geliştiriciden gizlenir ve işler "sadece çalışıyor" gibi görünür.
- Sistem hizmetleri . Sistem hizmetleri, Pencere Yöneticisi, Arama Hizmeti veya Bildirim Yöneticisi gibi modüler, odaklanmış bileşenlerdir. Uygulama çerçevesi API'lerinin sunduğu işlevsellik, temel donanıma erişmek için sistem hizmetleriyle iletişim kurar. Android iki grup hizmet içerir: sistem (Pencere Yöneticisi ve Bildirim Yöneticisi gibi) ve medya (medya oynatma ve kaydetmeyle ilgili hizmetler).
- Donanım soyutlama katmanı (HAL) . HAL, donanım satıcılarının uygulaması için standart bir arabirim tanımlar; bu, Android'in alt düzey sürücü uygulamaları hakkında agnostik olmasını sağlar. HAL kullanmak, üst düzey sistemi etkilemeden veya değiştirmeden işlevsellik uygulamanıza olanak tanır. HAL uygulamaları modüller halinde paketlenir ve uygun zamanda Android sistemi tarafından yüklenir. Ayrıntılar için bkz. Donanım Soyutlama Katmanı (HAL) .
- Linux çekirdeği . Aygıt sürücülerinizi geliştirmek, tipik bir Linux aygıt sürücüsü geliştirmeye benzer. Android, Low Memory Killer (belleği korumada daha agresif olan bir bellek yönetim sistemi), uyanık kalma kilitleri (bir
PowerManagersistem hizmeti), Binder IPC sürücüsü ve diğer önemli özellikler gibi birkaç özel eklemeye sahip Linux çekirdeğinin bir sürümünü kullanır. mobil gömülü bir platform için. Bu eklemeler öncelikle sistem işlevselliği içindir ve sürücü geliştirmeyi etkilemez. Gerekli özellikleri (binder sürücüsü gibi) desteklediği sürece çekirdeğin herhangi bir sürümünü kullanabilirsiniz. Ancak, Android çekirdeğinin en son sürümünü kullanmanızı öneririz. Ayrıntılar için, bkz. Çekirdek Oluşturma .
HAL arayüzü tanımlama dili (AIDL/HIDL)
Android 8.0, üreticilerin cihazları yeni bir Android sürümüne güncellemesini daha kolay, daha hızlı ve daha az maliyetli hale getirmek için Android OS çerçevesini ( Tiz olarak bilinen bir projede) yeniden tasarladı. Bu yeni mimaride, HAL arabirim tanımlama dili (HIDL, "hide-l" olarak telaffuz edilir), bir HAL ile kullanıcıları arasındaki arabirimi belirtir ve HAL'leri yeniden oluşturmadan Android çerçevesinin değiştirilmesini sağlar. Android 10'da HIDL özellikleri AIDL'ye dahil edildi. O zamandan beri, HIDL kullanımdan kaldırıldı ve yalnızca henüz AIDL'ye dönüştürülmemiş alt sistemler tarafından kullanılıyor.
Treble, satıcı uygulamasını (silikon üreticileri tarafından yazılan cihaza özel, daha düşük seviyeli yazılım) yeni bir satıcı arayüzü aracılığıyla Android işletim sistemi çerçevesinden ayırır. Satıcılar veya SOC oluşturucular, HAL'leri bir kez oluşturur ve bunları aygıttaki bir
/vendor bölümüne yerleştirir; çerçeve, kendi bölümünde, HAL'leri yeniden derlemeden kablosuz (OTA) bir güncelleme ile değiştirilebilir.
Eski Android mimarisi ile mevcut IDL tabanlı mimari arasındaki fark, satıcı arayüzünün kullanımındadır:
- Android 7.x ve önceki sürümlerde resmi bir satıcı arabirimi yoktur, bu nedenle cihaz üreticilerinin bir cihazı Android'in daha yeni bir sürümüne taşımak için Android kodunun büyük bölümlerini güncellemesi gerekir:
Şekil 2. Eski Android güncelleme ortamı
- Android 8.0 ve sonraki sürümlerde, yeni bir kararlı satıcı arabirimi, Android'in donanıma özgü bölümlerine erişim sağlar, böylece cihaz üreticileri, silikon üreticilerinin ek çalışmasına gerek kalmadan yalnızca Android işletim sistemi çerçevesini güncelleyerek yeni Android sürümlerini sunabilir:
Şekil 3. Mevcut Android güncelleme ortamı
Android 8.0 ve sonraki sürümleriyle piyasaya sürülen tüm yeni cihazlar, yeni mimariden yararlanabilir. Satıcı uygulamalarının ileriye dönük uyumluluğunu sağlamak için satıcı arayüzü, Uyumluluk Test Takımına (CTS) benzer olan Satıcı Test Takımı (VTS) tarafından doğrulanır. Hem eski hem de mevcut Android mimarilerinde HAL ve OS çekirdek testini otomatikleştirmek için VTS'yi kullanabilirsiniz.
Mimari kaynaklar
Android mimarisiyle ilgili ayrıntılar için aşağıdaki bölümlere bakın:
- HAL Türleri . Birleştirilmiş, geçiş, Aynı İşlem (SP) ve eski HAL'leri açıklar.
- AIDL . AIDL ile ilgili belgeler, ister genel olarak ister HAL arabirimi olarak kullanılsın.
- HIDL (Genel) . Bir HAL ve kullanıcıları arasındaki arabirim hakkında genel bilgileri içerir.
- HIDL (C++) . HIDL arabirimlerinin C++ uygulamalarını oluşturmaya ilişkin ayrıntıları içerir.
- HIDL (Java) . HIDL arabirimleri için Java ön ucuyla ilgili ayrıntıları içerir.
- ConfigStore HAL . Android çerçevesini yapılandırmak için kullanılan salt okunur yapılandırma öğelerine erişmek için API'leri açıklar.
- Cihaz Ağacı Kaplamaları . Android'de cihaz ağacı kaplamalarını (DTO'lar) kullanma hakkında ayrıntılar sağlar.
- Satıcı Yerel Geliştirme Kiti (VNDK) . Satıcı HAL'lerini uygulamak için satıcıya özel kitaplıklar kümesini açıklar.
- Satıcı Arabirim Nesnesi (VINTF) . Bir cihazla ilgili bilgileri toplayan ve bu bilgileri sorgulanabilir bir API aracılığıyla kullanıma sunan nesneleri açıklar.
- Android 8.0 için SELinux . Ayrıntılar SELinux değişiklikleri ve özelleştirmeleri.
Bu sitedeki kaynaklara ek olarak, Treble ekibinin üyeleri Treble: Global Olarak Dağıtılmış Paydaşların Aktif Yazılım Ekosisteminde Bir Denge Oluşturarak Hızlı Yazılım Güncellemeleri yayınladı. Bildiri ACM üyeleri için ücretsizdir ve üye olmayanlar özeti satın alabilir veya okuyabilir.