HAR platform soyutlama katmanı

Android'in görüntüleyemediği araç bilgilerini göstermek için yüksek kullanılabilirlik oluşturucuyu (HAR) kullanın. Bu durum, başlangıç, kullanılabilirlik, güvenlik veya yönetmelikler gibi sorunlardan kaynaklanabilir. HAR, Rust ile yazılmış taşınabilir ve yerleşik bir uygulamadır.

HAR (HAR çerçevesi olarak da bilinir), uygulamalar oluşturmak için kullandığınız kodu içerir. HAR ile oluşturulan uygulamalar HAR tabanlı uygulamalardır. HAR çerçevesinde farklı platformlar için kod bölümleri bulunur. Örneğin, Linux sisteminde sesler için tinyalsa gibi kitaplıklar kullanırsınız. QNX'in kendine özgü ses kitaplıkları vardır.

Platform; donanım, işletim sistemi, sistem kitaplıkları ve diğer faktörleri içerir. Platforma özgü kodun, alt sistem adı verilen bölümleri vardır. Her alt sistem; ses, EVS kameraları veya araç verileri gibi bir platform özelliğini işler. Bir platformun desteklenmesi için HAR çerçevesinin tüm alt sistemlerinin uygulanması gerekir.

Platforma özgü alt sistem kodu, HAR tabanlı uygulama ile aynı süreçte veya ayrı bir süreçte çalışabilir. Bu kod, ayrı olduğunda platformun uygulamayı desteklediğini doğrulamaya yardımcı olmak için süreçler arası iletişimi (IPC) yönetir. Karmaşık IPC mekanizmaları, platforma özel kodun bir parçası olmalıdır.

HAR test paketi, bir platform için uygulanan tüm alt sistemlerde testler çalıştırır. Platformların HAR koşullarını karşılayıp karşılamadığını kontrol etmek ve yeni sorunlar bulmak için bu paketi kullanın.

Terminoloji

Bu terimler bu sayfada yer almaktadır:

HAR tabanlı uygulama
HAR çerçevesiyle oluşturulmuş bir OEM veya işleve özel uygulama. Uygulamalar, uygulama durumuna ve diğer özelleştirilebilir özelliklere göre farklılık gösterir.
HAR çerçevesi
Uygulama oluşturmak için kullanılan temel bir araç seti sağlar.
HAR platformu soyutlaması
Tüm hedef platformların uygulaması gereken bilinen bir API sağlayan HAR çerçevesinin bir parçasıdır.
HAR test paketi
Platform uygulamaları üzerinde bilinen bir dizi test yaparak platform uygulamalarının belirli bir platformda HAR çerçevesini desteklediğini doğrulamanıza yardımcı olur.

Kapsam dışı olanlar

HAR, aşağıdakileri ele almaz:

  • Tüm platform hedefleri için ayrı uygulamalar: Hedef platformlar için uygulamalar. Bunun yerine bu sayfada, platform uygulamalarının karşılaması gereken arayüzler ve test paketinin karşılaması gereken koşullar açıklanmaktadır.

  • Test senaryoları: Tüm arayüzler için belirli test senaryoları. Bunun yerine bu sayfada, bağımsız değişkenler, döndürülen değerler, beklenen davranışlar ve beklenen yan etkiler dahil olmak üzere arayüzlerle ilgili tek tek işlevler açıklanmaktadır. Bu sayfada, test senaryolarını uygulayabileceğiniz ve çalıştırabileceğiniz test paketi açıklanmaktadır.

Platform soyutlama üst düzey sandık yapısı

Rust projeleri, paketlerden oluşur. Şekil 1'de, HAR platformu soyutlama katmanının sandık yapısı gösterilmektedir. Platform soyutlama katmanı iki veya daha fazla Rust sandığını etkiliyor:

  • Abstractions (Rust trait açıklamaları) HAR framework sandığındadır.

  • Bir platform için uygulamalar ayrı bir har-platform-x sandığıyla yapılır. Örneğin, har-platform-linux veya har-platform-android.

Belirtilen bir platform uygulaması olmadan HAR sandığını oluşturamaz veya test edemezsiniz. HAR çerçevesi bir çerçeve olduğundan bu durum kasıtlıdır.

Bir platform belirten uygulamanın çalışması ve test edilmesi için bu çerçeveyle oluşturulması gerekir. HAR çerçevesi ile platform arasındaki bağlantılar bu şemada gösterilmektedir:

HAR dosyası oluşturma

Şekil 1. HAR sandığı.

display-safety içindeki genel yapı

Bu tasarım, Şekil 2'de gösterildiği gibi display_safety deposuna bir dizi yeni sandık ekler:

HAR sandığı, çerçevesi ve uygulaması

Şekil 2. Soyutlama modülleri.

Test paketi yapısal olarak uygulamaya benzer ancak yalnızca belirli bir platform uygulama paketine bağlıdır. Test paketi, HAR çerçevesinde tanımlanan özellikleri ve yapıları referans almalı ancak daha karmaşık uygulamaları referans almamalıdır.

Platform soyutlama katmanı yüksek düzeyli açıklaması

Bu tabloda, HAR platformu soyutlama katmanı tarafından tanımlanan platforma özel alt sistemler açıklanmaktadır.

Özetleme adı İlgili işlev Açıklama Notlar
OpenGL 2D oluşturma HAR çerçevesi sandığına OpenGLES 2.0/3.0 oluşturma özellikleri sağlar.
Audio Ses oluşturma Sistem sesini yönetmek ve oynatmak için Android SoundPool benzeri bir arayüz sağlar.
Camera Araç kamerası ekranı Araç kamerası bilgilerini yönetmek ve görüntülemek için EVS HAL benzeri bir arayüz sağlar.
Looper Uygulamanın ana döngüsü ve ekran yapılandırması Platforma özel uygulama ana döngülerini yönetmek ve ekran yapılandırmasını göstermek için Android Looper benzeri bir arayüz sağlar.
UserInput Dokunma, klavye, direksiyon veya döner kontrol cihazı ve diğer platforma özel girişler HAR tabanlı uygulamalara dokunma ve klavye girişi sağlamak için bir arayüz sunar. har-user-input-evdev içinde Linux evdev tabanlı referans uygulama.
VehicleData Araç durumu girişi Android VHAL veya CAN veri yolu tarafından sağlananlar gibi rastgele araç verileri akışıyla HAR tabanlı uygulamaları beslemek için bir arayüz sağlar.
ResourceManager Uygulamaya özel önbelleğe alınmış tasarım belgesi Önbelleğe alınmış resimler ve tasarım belgeleri gibi HAR başlatma için gerekli kaynakların bellek içi önbelleğini sağlar. Henüz disk önbelleği uygulanmadı.
Logging Sistem günlük kaydı ve telemetri İzleme sistemini kullanarak platforma özel günlük kaydı desteği sağlar. Bu, platformun gerektirdiği şekilde telemetri toplama işlemini etkinleştirir.
Tracing Sistem izleme İzleme ve profil oluşturma sistemleriyle entegrasyon için bir soyutlama sağlar.
Monitoring Sistem izleme HAR çerçevesindeki performansı ve gecikmeleri izleme araç seti.
Commlib Araç verileri protobuf serileştirmesini kullanan bir referans uygulama. Kullanımdan kaldırıldı: reference/harry-control-api ve harry-grpcio-server uygulamalarında tanımlanan API'leri kullanın ve harry-tonic-server (referans uygulaması) uygulayın.
TestSupport Test desteği kancaları Test senaryolarının oluşturulmasını ve kaldırılmasını, test etkinliklerinin oluşturulmasını ve test yapıları oluşturulmasını destekler. Örneğin, UserInput'yı test etmek için simüle edilmiş dokunma etkinlikleri oluşturma ve analiz için ekran görüntüleri oluşturma. Bu özellik, üretim derlemelerine dahil edilmesini önlemek için Rust tarafından kilitlenmiştir.

Adlandırma kuralları ve çerçeve yapıları

Bu tabloda aşağıdaki adlar ve yapılar gösterilmektedir:

  • HAR çerçevesi tarafından sağlanan beklenen alt sistem trait örnekleri. Her trait, uygulanması gereken platforma özgü bir alt sistemi temsil eder.

  • Herhangi bir platformda platforma özgü alt sistem uygulamalarının beklenen adları. HAR tabanlı uygulamalar, bu adların uygulanmasını bekler.

  • Platformla ilgili uygulamalardan HAR çerçevesine bilgi aktarmak için genellikle ilgili HAR çerçevesi enum ve struct örnekleri kullanılır.

Özellik adları Uygulama adları HAR çerçevesi enum ve yapıları
GlContextFactory OpenGL trait harry::Renderer
harry::DisplayRotation
AudioApiFactory Audio harry::AudioApi
harry::AudioDevice
harry::VolumeMillibel
ICameraManager Camera harry::ICameraDevice
harry::CameraDescriptor
Looper Looper harry::LooperMessage
harry::LooperOptions
harry::DisplayId
PlatformVehicleData VehicleData harry::VehicleDataType
harry::VehicleDataListener
ResourceManager (Struct) ResourceManager harry::ResourceManagerMessage
harry::ResourceToken
harry::RawImageData
PlatformTracing Tracing Yok
HarPerformanceMonitor Monitoring harry::Renderer
harry::ResolveLatencyToken
PlatformTestSupport TestSupport harry::TestConfig
harry::TestDisplayConfig

Hatalar ve hata giderme

Önerilen API'ler Rust Result<> türünü kullanır. Rust, hatalı Result türlerini kontrol etmenizi gerektirir. Aksi takdirde derleyici bir uyarı veya hata oluşturur. Derleme zamanı kontrolü, platforma özgü kodda hata kontrolünü zorunlu kılar.

Platform uygulamaları tarafından döndürülen hatalar harry::error::Error türündedir. Platform hata türlerinin uygulama koduna sızmadığını doğrulamak için HAR çerçevesi tarafından sağlanan standart hata türünü kullanın.

harry::error::Error türü, tüm alt sistemlerdeki belirli hataları içerecek şekilde genişletilir:

// This is Rust
pub enum Error {
  Msg(String), // A generic message string
  // Legacy error type, likely to be removed or merged into Msg
  Audio(String),
}

Kurtarılamayan hatalar öncelikle tanımlanan arayüzler ve geri çağırmalar aracılığıyla döndürülür.

Test paketi ayrıntılı tasarımı

Bu bölümde, soyutlamaların platforma özel uygulamalarını doğrulayan test paketinin tasarımı açıklanmaktadır.

Test paketi testlerini oluşturma

Soong derlemeleri (Android.bp dosyalarıyla tanımlanır) için testler, Android platformu derleme sisteminin bir parçası olarak derlenir ve yürütülmeleri atest tarafından yönetilir.

Test paketini çalıştırma

Tek bir platformu test etmek için:

İlgili test hedefiyle (örneğin, atest) atest komutunu kullanın. Bu komut, testleri bir Android cihazda veya emülatörde dağıtır ve çalıştırır.atest <module_name>