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
traitaçıklamaları) HAR çerçeve kasasındadır.Bir platformun uygulamaları ayrı bir
har-platform-xcrate'i tarafından yapılır. Örneğin,har-platform-linuxveyahar-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:
Ş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:
Ş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. Hertrait, 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
enumvestructörnekleri kullanılır.
| Özellik adları | Uygulama adları | HAR çerçevesi enum ve yapıları |
|---|---|---|
GlContextFactory |
OpenGL |
trait harry::Rendererharry::DisplayRotation |
AudioApiFactory |
Audio |
harry::AudioApiharry::AudioDeviceharry::VolumeMillibel |
ICameraManager |
Camera |
harry::ICameraDeviceharry::CameraDescriptor |
Looper |
Looper |
harry::LooperMessageharry::LooperOptionsharry::DisplayId |
PlatformVehicleData |
VehicleData |
harry::VehicleDataTypeharry::VehicleDataListener |
ResourceManager (Struct) |
ResourceManager |
harry::ResourceManagerMessageharry::ResourceTokenharry::RawImageData |
PlatformTracing |
Tracing |
Yok |
HarPerformanceMonitor |
Monitoring |
harry::Rendererharry::ResolveLatencyToken |
PlatformTestSupport |
TestSupport |
harry::TestConfigharry::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.