Bu sayfada, Yazılımla Tanımlanan Araç (SDV) platformlarında yüksek kullanılabilirlik oluşturucu (HAR), DriverUI ve güvenlik monitörü dahil olmak üzere Display Safety bileşenlerine erişme, bunları oluşturma ve çalıştırma hakkında genel bilgiler verilmektedir.
Koda erişim
Bu bölümde, HAR ve DriverUI Görüntüleme Güvenliği bileşenlerinin kod tabanına erişme konusu ele alınmaktadır.
Yüksek kullanılabilirlik oluşturucu
Yüksek kullanılabilirlik oluşturucusu (HAR) için kod tabanı, packages/services/display_safety/ adresindeki ana depo ödemesinin bir parçası olarak kullanılabilir.
HAR'ın kod tabanı aşağıdaki gibi yapılandırılmıştır:
- Framework: Platform, oluşturma, animasyon ve ses için temel çerçeve arayüzlerini içerir.
- Referans: Çerçeve arayüzleri için platforma özel uygulamaların yanı sıra HAR referans uygulamasının kodu ve güvenlik araç zinciri (Design Compiler, güvenlik monitörü) içerir.
- Hizmet: Bileşenler arasında araç verilerini göndermek ve almak için Android'e özgü hizmetler ve APEX veri paketlerinin tanımları.
- Önceden oluşturulmuş öğeler: Impeller grafik kitaplığı gibi önceden oluşturulmuş ikili dosyalar için sarmalayıcılar sağlar.
Harry referans uygulaması kodu packages/services/display_safety/reference/harry_app adresinde bulunur.
HAR'ın ayrıntılı dizin yapısı için Display Safety Code yapısı başlıklı makaleye bakın.
Güvenlik monitörü
Güvenlik monitörünün kod tabanı, packages/services/display_safety/reference/safety-monitor adresindeki ana depoyu kullanıma alma işleminin bir parçası olarak kullanılabilir.
Güvenlik monitörü kodu aşağıdaki gibi yapılandırılmıştır:
main.rs: Gösterge niteliğindeki yapıları getirir, araç verileri sunucusunu ve gösterge niteliğindeki izleme döngülerini başlatır. Belirti görünürlüğü hakkındaki bilgiler, belirti inceleme sonuçlarıyla karşılaştırılır. Sonuçlar, SDV günlükleri kullanılarak sağlanır.Vehicle_data_server.rs: Araç verilerine abone olan ve ana döngü için uyarı ışığı görünürlüğünü güncelleyen sunucu.Telltale_monitoring.rs: Döngü halinde çalışır, screencap kasasını kullanarak ekran arabelleğinin bir kopyasını getirir ve belirtilen bölgeleri telltale'ler için inceler. Ardından, gösterge niteliğindeki incelemelerin sonuçları ana döngüye gönderilir.
DriverUI
DriverUI, ub-automotive-master dalından erişebileceğiniz, paketlenmemiş bir kod tabanının parçası olarak sunulur.
mkdir ub-automotive-master && cd ub-automotive-master
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq
Paketinden çıkarılmış ve Google kaynaklı uygulamalar hakkında daha fazla bilgi için Paketinden çıkarılmış uygulamaları entegre etme başlıklı makaleyi inceleyin.
Derleme ve çalıştırma
Bu bölümde, SDV ile tam küme çözümü elde etmek için SDV Media'daki HAR ve SDV In-Vehicle Infotainment (IVI) içindeki DriverUI hedeflerini derleme ve yürütme süreci ayrıntılı olarak açıklanmaktadır.

Şekil 1. Display Safety çift sanal makine yapısını gösterin.
HAR ve SDV medya hedefi oluşturma
- Temel medya hedefi:
sdv_media_cf- Açıklama: SDV medya yığını için özel bir hedef. Çeşitli medya çerçevelerinin izole test edilmesini kolaylaştırır.
- Dizin konumu:
device/google/sdv/
- HAR entegre hedefi:
sdv_media_har_cf- Açıklama: Bu hedef, medya yığınını HAR ile entegre ederek Cuttlefish'te SDV Medya'yı yürütür.
- Dizin konumu:
device/google/sdv_dsplay_safety/ - Derleme yürütme:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j
DriverUI'yı oluşturma
ub-automotive-master dalında, CommandLine veya AndroidStudio'yu kullanarak paketlenmemiş uygulamalar oluşturabilirsiniz.
Android Studio'da Gradle dosyasını içe aktarın:
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
Bu, DriverUI dahil olmak üzere tüm paketlenmemiş uygulamaları içeren ana Gradle projesidir. Gradle kullanarak projeyi derleyin:
# To build only DriverUI module of aaos-apps-gradle-project use
./gradlew :driver-ui:assemble
Başarılı bir derlemenin ardından DriverUI APK'sı şu konumda kullanılabilir:
out/aaos-apps-gradle-build/driver-ui/outputs/apk/default/debug/
driver-ui-default-debug.apk
DriverUI kodu packages/apps/Car/DriverUI adresinde mevcuttur.
Not: DriverUI, ana Gradle projesinin bir alt modülüdür. Bu nedenle tüm Gradle görevleri aaos-apps-gradle-project kullanılarak çalıştırılır.
DriverUI ile SDV IVI hedefi oluşturma
- Temel Hedef:
sdv_ivi_cf- Açıklama: Bu, x86-64 mimarisinde IVI için temel SDV hedefi olarak kullanılır.
- Dizin konumu:
device/google/sdv/
DriverUI Integrated Target:
sdv_ivi_cf_ds- Açıklama: Bu hedef, temel IVI yapılandırmasını genişleterek Ekran Güvenliği bileşenlerini içerir. Bu hedef, gösterge paneli içindeki Display Safety hizmetlerinin ve etkileşimlerinin doğrulanması için gereklidir.
- Dizin konumu:
device/google/sdv_dsplay_safety/ DriverUI ikili programını ekleme:
DriverUI.apkdosyasını, BlueprintAndroid.bpdosyasıyla birliktepackages/apps/Car/DriverUIPrebuiltkonumuna kopyalayın.# Create a blueprint file, contents of this file are shown in the next step touch /path/to/aosp_repo_root/packages/apps/Car/DriverUIPrebuilt/Android.bp # Copy DriverUI.apk built cp /path/to/ub-automotive-master/out/aaos-apps-gradle-build/driver-ui/outputs/apk/default/debug/driver-ui-default-debug.apk /path/to/aosp_repo_root/packages/apps/Car/DriverUIPrebuilt/DriverUI.apk
Android.bp, DriverUIPrebuilt modül adını kullanacak ve DriverUIStubApp öğesini geçersiz kılacak şekilde ayarlanmalıdır:
android_app_import {
name: "DriverUIPrebuilt",
overrides: ["DriverUIStubApp"],
apk: "DriverUI.apk",
privileged: true,
product_specific: true,
certificate: "platform",
required: ["allowed_privapp_com.android.car.driverui"],
optional_uses_libs: [
"androidx.window.extensions",
"androidx.window.sidecar",
],
enforce_uses_libs: false,
dex_preopt: {
enabled: false,
},
}
Derleme yürütme:
# In the root of the Android source source build/envsetup.sh lunch sdv_ivi_cf_ds-trunk_staging-userdebug m -j
Hedef dağıtım
Her iki hedef için de derleme işlemi başarıyla tamamlandıktan sonra Cuttlefish yardımcı programları, bu bölümde açıklandığı gibi hedeflerin başlatılmasına yardımcı olur.
SDV Media ve HAR dağıtımı
HAR hedefi, sdv-media-config.json içinde belirtilen önceden tanımlanmış device/google/sdv_media_cf.mk yapılandırması kullanılarak oluşturulur.
Not: SDV Media ve SDV IVI, Display Safety kümesi için Unlocked önyükleme modunda başlatılır. Ayrıntılı bilgi için SDV Başlatma Modu başlıklı makaleyi inceleyin.
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
cvd create --extra_bootconfig_args="androidboot.sdv.boot_mode=unlocked androidboot.sdv.instance_name=instance1 androidboot.virt.address=3"
Oluşturulan terminal, tarayıcıda yerel ana makine bağlantı noktasında hedefe erişmek için günlükleri gösterir: Point your browser to https://localhost:8443 to interact with the
device.

Şekil 2. HAR ile Güvenli Görüntüleme SDV Medya VM'sini gösterin.
SDV IVI ve DriverUI dağıtımı
SDV IVI DriverUI hedefi, device/google/sdv_ivi_cf.mk içinde tanımlanan mevcut sdv-ivi-config.json kullanılarak başlatılır. Ayrıca, küme ekranı için ek başlatma yapılandırma parametreleri ve uygun ekran boyutları da belirtebilirsiniz.
# In the root of the Android source
source build/envsetup.sh
lunch sdv_ivi_cf_ds-trunk_staging-userdebug
cvd create --extra_bootconfig_args="androidboot.sdv.boot_mode=unlocked androidboot.sdv.instance_name=instance2 androidboot.virt.address=4" --display1=width=1920,height=720
Hedef başlatıldıktan sonra terminal, yerel ana makine bağlantı noktasında tarayıcıda hedefe erişmek için günlükleri gösterir: Point your browser to https://localhost:8443 to
interact with the device.
SDV-IVI ve DriverUI hedeflerinin dağıtımı iki ekranı başlatır: biri SDV-IVI sistemi, diğeri ise DriverUI için. DriverUI, ClusterHomeManager sınıfından (Cluster2 olarak da bilinir) yararlanarak ayrıcalıklı bir küme uygulaması olarak çalışır.

Şekil 3. Display Safety SDV IVI VM with DriverUI.
Çift sanal makine kümesinin dağıtımı
Cuttlefish, ekran yerleşimi elde etmek için çift VM yapılandırması kullanarak iki sanal makine (VM) başlatma olanağı sunar.

Şekil 4. Display Safety görüntüleme bileşimine genel bakış.
ds-toolkit kullanarak çift sanal makine yapılandırmasını başlatabilirsiniz. Bu yapılandırma packages/services/display_safety/service/ adresinde mevcuttur.
m ds_toolkit
ds_toolkit launch
Yapılandırma başlatıldıktan sonra terminal, yerel ana makine bağlantı noktasında tarayıcıda hedefe erişmek için günlükleri gösterir: Point your browser to https://localhost:8443 to
interact with the device.
Bu komut, her iki sanal makine ekranı da yerleştirilmiş şekilde, tam işlevsel bir kümede her iki Cuttlefish hedefini de başlatır.

Şekil 5. SDV Media ve SDV IVI VM ile birlikte Display Safety tam kümesi.
İnşaat güvenliği monitörü
Güvenlik monitörü, varsayılan olarak SDV Media hedefi için oluşturulur:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j
Çalışma zamanında güvenlik monitörü, referans küme ekranı için derleyici tarafından oluşturulan ve APEX'e paketlenen varsayılan bir derleyici yapıtları kümesini kullanır.
har-design-compiler komutu çalıştırılarak yeni yapılar oluşturulabilir. Bu araç, bir tasarımdan yapılar oluşturmak için hedefte çalışır. Aracı çalıştırmanızı, hedefteki yeni yapıları çekmenizi ve görüntüyü yeniden oluşturmanızı öneririz.
Araç, varsayılan olarak hedefte oluşturulur ve yüklenir.
# Run the compiler on the target
adb shell har_design_compiler -c </path/to/artifacts> -o /data/local/tmp/
# Pull the artifacts to the local filesystem
adb pull data/local/tmp/artifacts services/harry-prebuilt/data/assets/
# Rebuild the image
m -j
Güvenlik monitörü, hedef başlatıldığında başlatılır. Güvenlik monitörü, ekran arabelleğini ve gelen araç verisi sinyallerini analiz ederek ekrandaki güvenlikle ilgili kritik öğeleri beklenenlere karşı doğrulamak için sürekli olarak döngü halinde çalışır.
Güvenlik izleme günlüklerini istediğiniz zaman görüntüleyebilirsiniz:
adb logcat | grep har-safety-monitor