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
traitaçıklamaları) HAR framework sandığındadır.Bir platform için uygulamalar ayrı bir
har-platform-xsandığıyla yapılır. Örneğin,har-platform-linuxveyahar-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:
Ş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:
Ş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. Hertrait, 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
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, 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>