Halaman ini memberikan ringkasan untuk mengakses, mem-build, dan menjalankan komponen Display Safety, termasuk perender ketersediaan tinggi (HAR), DriverUI, dan monitor keselamatan, di seluruh platform Software Defined Vehicle (SDV).
Akses kode
Bagian ini membahas cara mendapatkan akses ke codebase untuk komponen Display Safety HAR dan DriverUI.
Perender ketersediaan tinggi
Codebase untuk perender ketersediaan tinggi (HAR) tersedia sebagai bagian dari
checkout repositori utama di packages/services/display_safety/.
Codebase untuk HAR disusun sebagai berikut:
- Framework: Berisi antarmuka framework inti untuk platform, rendering, animasi, dan audio.
- Referensi: Berisi implementasi khusus platform untuk antarmuka framework, serta kode untuk aplikasi referensi HAR, dan toolchain keselamatan (Compiler Desain, monitor keselamatan).
- Layanan: Layanan khusus Android untuk mengirim dan menerima data kendaraan antar-komponen, dan definisi untuk paket data APEX.
- Prebuilts: Menyediakan wrapper untuk biner bawaan seperti library grafis Impeller.
Kode aplikasi referensi Harry terletak di packages/services/display_safety/reference/harry_app.
Untuk mengetahui struktur direktori HAR yang mendetail, lihat Struktur Kode Display Safety
Monitor keselamatan
Codebase untuk monitor keselamatan tersedia sebagai bagian dari checkout repositori utama di packages/services/display_safety/reference/safety-monitor.
Kode monitor keselamatan disusun sebagai berikut:
main.rs: Mengambil artefak telltale, menginisialisasi server data kendaraan, dan loop pemantauan telltale. Informasi tentang visibilitas telltale dibandingkan dengan hasil pemeriksaan telltale, dengan hasil yang diberikan menggunakan log SDV.Vehicle_data_server.rs: Server yang berlangganan data kendaraan, memperbarui visibilitas telltale untuk loop utama.Telltale_monitoring.rs: Berjalan dalam loop, mengambil salinan screenbuffer menggunakan screencap crate, dan memeriksa wilayah yang ditentukan untuk telltale. Hasil pemeriksaan telltale kemudian dikirim ke loop utama.
DriverUI
DriverUI tersedia sebagai bagian dari codebase yang tidak dibundel, yang dapat Anda akses dari cabang ub-automotive-master.
mkdir ub-automotive-master && cd ub-automotive-master
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq
Untuk mengetahui informasi selengkapnya tentang sumber yang tidak dibundel dan Google, lihat Mengintegrasikan aplikasi yang tidak dibundel.
Membuat dan menjalankan
Bagian ini menjelaskan proses kompilasi dan eksekusi target untuk HAR dalam SDV Media dan DriverUI dalam SDV In-Vehicle Infotainment (IVI) untuk mencapai solusi cluster lengkap dengan SDV.

Gambar 1. Struktur VM ganda Display Safety.
Mem-build target HAR dan SDV Media
- Target media dasar:
sdv_media_cf- Deskripsi: Target khusus untuk stack media SDV, yang memfasilitasi pengujian terisolasi dari berbagai framework media.
- Lokasi direktori:
device/google/sdv/
- Target terintegrasi HAR:
sdv_media_har_cf- Deskripsi: Target ini mengintegrasikan stack media dengan HAR, menjalankan SDV Media di Cuttlefish.
- Lokasi direktori:
device/google/sdv_dsplay_safety/ - Eksekusi build:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j
Mem-build DriverUI
Dari cabang ub-automotive-master, Anda dapat mem-build aplikasi yang tidak dibundel menggunakan
CommandLine atau AndroidStudio.
Di Android Studio, impor file Gradle:
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
Ini adalah project Gradle utama dengan semua aplikasi yang tidak dibundel, termasuk DriverUI. Build project menggunakan Gradle:
# To build only DriverUI module of aaos-apps-gradle-project use
./gradlew :driver-ui:assemble
Setelah build berhasil, DriverUI APK tersedia di
out/aaos-apps-gradle-build/driver-ui/outputs/apk/default/debug/
driver-ui-default-debug.apk
Kode DriverUI tersedia di packages/apps/Car/DriverUI
Catatan: DriverUI adalah submodul dari project Gradle utama, sehingga semua tugas Gradle
dijalankan menggunakan aaos-apps-gradle-project.
Mem-build target SDV IVI dengan DriverUI
- Target Dasar:
sdv_ivi_cf- Deskripsi: Target ini berfungsi sebagai target SDV dasar untuk IVI pada arsitektur x86-64.
- Lokasi direktori:
device/google/sdv/
Target Terintegrasi DriverUI:
sdv_ivi_cf_ds- Deskripsi: Target ini memperluas konfigurasi IVI dasar untuk menggabungkan komponen Display Safety. Target ini penting untuk validasi layanan dan interaksi Display Safety dalam cluster instrumen.
- Lokasi direktori:
device/google/sdv_dsplay_safety/ Menambahkan biner DriverUI: Salin
DriverUI.apkkepackages/apps/Car/DriverUIPrebuiltbersama dengan file BlueprintAndroid.bp.# 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 harus disiapkan untuk menggunakan nama modul DriverUIPrebuilt dan mengganti DriverUIStubApp:
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,
},
}
Eksekusi build:
# In the root of the Android source source build/envsetup.sh lunch sdv_ivi_cf_ds-trunk_staging-userdebug m -j
Deployment target
Setelah proses build untuk kedua target berhasil diselesaikan, utilitas Cuttlefish akan membantu memulai target seperti yang dijelaskan di bagian ini.
Deployment SDV Media dan HAR
Target HAR dibuat menggunakan konfigurasi sdv-media-config.json yang telah ditentukan, yang ditentukan dalam device/google/sdv_media_cf.mk.
Catatan: SDV Media dan SDV IVI diluncurkan dalam mode booting Unlocked untuk
cluster Display Safety. Untuk mengetahui informasi mendetail, lihat Mode Booting SDV.
# 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"
Setelah dibuat, terminal akan menampilkan log untuk mengakses target di browser pada port localhost: Point your browser to https://localhost:8443 to interact with the
device.

Gambar 2. VM SDV Media Display Safety dengan HAR.
Deployment SDV IVI dan DriverUI
Target SDV IVI DriverUI dimulai menggunakan sdv-ivi-config.json yang ada dan ditentukan di device/google/sdv_ivi_cf.mk. Anda juga dapat menentukan parameter konfigurasi booting tambahan dan dimensi tampilan yang sesuai untuk layar cluster.
# 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
Setelah target dimulai, terminal akan menampilkan log untuk mengakses target di
browser pada port localhost: Point your browser to https://localhost:8443 to
interact with the device.
Deployment target SDV-IVI dan DriverUI menginisialisasi dua tampilan: satu untuk sistem SDV-IVI dan satu lagi untuk DriverUI. The
DriverUI beroperasi sebagai aplikasi cluster yang memiliki hak istimewa, yang memanfaatkan
ClusterHomeManager class (juga dikenal sebagai Cluster2).

Gambar 3. VM SDV IVI Display Safety dengan DriverUI.
Deployment cluster VM ganda
Cuttlefish menyediakan kemampuan untuk meluncurkan dua Mesin Virtual (VM) menggunakan konfigurasi VM ganda untuk mencapai overlay tampilan.

Gambar 4. Ringkasan komposisi tampilan Display Safety.
Anda dapat meluncurkan konfigurasi VM ganda menggunakan ds-toolkit yang tersedia di packages/services/display_safety/service/.
m ds_toolkit
ds_toolkit launch
Setelah konfigurasi diluncurkan, terminal akan menampilkan log untuk mengakses target di
browser pada port localhost: Point your browser to https://localhost:8443 to
interact with the device.
Tindakan ini meluncurkan kedua target Cuttlefish dalam cluster yang beroperasi penuh dengan kedua tampilan mesin virtual yang di-overlay.

Gambar 5. Cluster lengkap Display Safety dengan VM SDV Media dan SDV IVI.
Mem-build monitor keselamatan
Monitor keselamatan di-build secara default untuk target SDV Media:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j
Pada waktu proses, monitor keselamatan menggunakan kumpulan artefak compiler default yang dibuat dan dikemas ke dalam APEX untuk tampilan cluster referensi.
Artefak baru dapat dibuat dengan menjalankan har-design-compiler. Alat ini berjalan pada target untuk membuat artefak dari desain. Sebaiknya jalankan alat ini, tarik artefak baru dari target, dan build ulang image.
Alat ini di-build dan diinstal pada target secara default.
# 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
Monitor keselamatan diinisialisasi saat target di-booting. Monitor keselamatan akan berjalan terus-menerus dalam loop untuk memverifikasi elemen penting keselamatan di layar terhadap apa yang diharapkan dengan menganalisis buffer layar dan sinyal data kendaraan yang masuk.
Anda dapat melihat log monitor keselamatan kapan saja:
adb logcat | grep har-safety-monitor