HAR platform soyutlama katmanı

Android'in gösteremediği araç bilgilerini göstermek için yüksek kullanılabilirlik oluşturucuyu (HAR) kullanın. Bu durum; başlatma, kullanılabilirlik, güvenlik veya yönetmeliklerle ilgili sorunlardan kaynaklanabilir. HAR, Rust dilinde yazılmış, taşınabilir ve yerleşik bir uygulamadır.

HAR çerçevesi olarak da adlandırılan HAR, uygulama 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 özel kodun alt sistemler olarak adlandırılan bölümleri vardır. Her alt sistem; ses, EVS kameraları veya araç verileri gibi bir platform özelliğini yönetir. Bir platformu desteklemek için HAR çerçevesinin tüm alt sistemlerinin uygulanması gerekir.

Platforma özgü alt sistem kodu, HAR tabanlı uygulamayla aynı işlemde veya ayrı bir işlemde çalışabilir. Ayrı olduğunda bu kod, platformun uygulamayı desteklediğini doğrulamaya yardımcı olmak için işlemler 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 şartları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 alıyor:

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

Kapsam dışı olanlar

HAR şunları ele almaz:

  • Tüm platform hedefleri için ayrı uygulamalar: Hedef platformlar için uygulamalar. Bu sayfada, platform uygulamalarının ve test paketlerinin karşılaması gereken arayüzler açıklanmaktadır.

  • Test durumları: Tüm arayüzler için özel test durumları. Bu sayfada, bağımsız değişkenler, dönüş değerleri, beklenen davranışlar ve beklenen yan etkiler dahil olmak üzere arayüzlerin ayrı ayrı işlevleri açıklanmaktadır. Bu sayfada, test durumlarını uygulayıp çalıştırabileceğiniz test paketi açıklanmaktadır.

Platform soyutlama üst düzey crate yapısı

Rust projeleri crate'lerden oluşur. Şekil 1'de HAR platformu soyutlama katmanının crate yapısı gösterilmektedir. Platform soyutlama katmanı, iki veya daha fazla Rust crate'ini etkiler:

  • Soyutlamalar (Rust trait açıklamaları) HAR çerçeve kasasındadır.

  • Bir platformun uygulamaları ayrı bir har-platform-x crate'i tarafından yapılır. Örneğin, har-platform-linux veya har-platform-android.

Belirli bir platform uygulaması olmadan HAR crate'ini derleyemez veya test edemezsiniz. HAR çerçevesi bir çerçeve olduğundan bu durum kasıtlıdır.

Bir platform belirten uygulamaları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 diyagramda gösterilmiştir:

HAR kasası

Şekil 1. HAR kasası.

Ekran güvenliğiyle ilgili 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 bir uygulamaya benzer ancak yalnızca belirli bir platform uygulama sandığına dayanır. Test paketi, HAR çerçevesinde tanımlanan özelliklere ve yapılara başvurmalıdır ancak daha karmaşık uygulamalara başvurmamalıdır.

Platform soyutlama katmanının üst düzey açıklaması

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

Soyutlama adı İlgili işlev Açıklama Notlar
OpenGL 2D oluşturma HAR çerçeve kasasına OpenGLES 2.0/3.0 oluşturma özellikleri sağlar.
Audio Ses oluşturma Sistem sesini yönetmek ve çalmak 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 Uygulama ana döngüsü ve ekran yapılandırması Platforma özel uygulama ana döngülerini ve ekran yapılandırmasını yönetmek için Android Looper benzeri bir arayüz sağlar.
UserInput Dokunma, klavye, direksiyon veya döner multimedya kontrol düğmesi ve platforma özgü diğer girişler HAR tabanlı uygulamalara dokunma ve klavye girişi sağlayan bir arayüz sunar. har-user-input-evdev içinde Linux evdev tabanlı referans uygulama.
VehicleData Araç durumu girişi HAR tabanlı uygulamalara, Android VHAL veya CAN veri yolu tarafından sağlananlar gibi rastgele araç verileri akışı sağlayan bir arayüz sunar.
ResourceManager Uygulamaya özel önbelleğe alınmış tasarım dokümanı HAR'ın başlatılması için gereken kaynakların (ör. önbelleğe alınmış resimler ve tasarım dokümanları) RAM ö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 sayede, platformun gerektirdiği telemetri verileri toplanabilir.
Tracing Sistem izleme İzleme ve profil oluşturma sistemleriyle entegrasyon için bir soyutlama sağlar.
Monitoring Sistem izleme HAR çerçevesinde performansı ve gecikmeleri izlemek için kullanılan araç seti.
Commlib Araç verileri Protobuf serileştirmesini kullanan bir referans uygulama. Desteği sonlandırıldı: reference/harry-control-api içinde tanımlanan API'leri ve harry-grpcio-server ile harry-tonic-server (referans uygulama) uygulamalarını kullanın.
TestSupport Test desteği kancaları Test durumlarının oluşturulmasını ve kaldırılmasını, test etkinliklerinin oluşturulmasını ve test yapılarının oluşturulmasını destekler. Örneğin, UserInput uygulamasını test etmek için simüle edilmiş dokunma etkinlikleri ve analiz için ekran görüntüleri oluşturma. Bu özellik, üretim derlemelerine dahil edilmesini önlemek için Rust tarafından kilitlenir.

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

Bu tabloda, bu 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 platform sandığında platforma özgü alt sistem uygulamalarının beklenen adları. HAR tabanlı uygulamalar, bu özel 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, hata içeren Result türlerini kontrol etmenizi gerektirir. Aksi takdirde derleyici bir uyarı veya hata oluşturur. Derleme zamanı kontrolü, platforma özgü koddan hata kontrolü yapılması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 sistemler için 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),
}

Düzeltilemeyen 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 özgü uygulamalarını doğrulayan test paketinin tasarımı açıklanmaktadır.

Test paketi testlerini oluşturma

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

Test paketini çalıştırma

Tek bir platformu test etmek için ilgili test hedefiyle (ör. atest <module_name>) atest komutunu kullanın. Bu komut, testleri Android destekli bir cihazda veya emülatörde dağıtır ve çalıştırır.