Inizia a utilizzare la sicurezza display

Questa pagina fornisce una panoramica dell'accesso, della creazione e dell'esecuzione dei componenti di sicurezza del display, tra cui il renderer ad alta affidabilità (HAR), DriverUI e il monitor di sicurezza, nelle piattaforme Software Defined Vehicle (SDV).

Accesso con codice

Questa sezione illustra come accedere al codice base per i componenti HAR e DriverUI Display Safety.

Renderer ad alta affidabilità

Il codebase per il renderer ad alta disponibilità (HAR) è disponibile nell'ambito del controllo del repository principale all'indirizzo packages/services/display_safety/.

Il codebase per HAR è strutturato come segue:

  • Framework: contiene le interfacce principali del framework per piattaforma, rendering, animazione e audio.
  • Riferimento:contiene implementazioni specifiche della piattaforma per le interfacce del framework, nonché il codice per l'app di riferimento HAR e la toolchain di sicurezza (Design Compiler, monitor di sicurezza).
  • Servizio:servizi specifici per Android per l'invio e la ricezione di dati del veicolo tra i componenti e definizioni per i pacchetti di dati APEX.
  • Precompilati:fornisce wrapper per i binari precompilati, ad esempio la libreria grafica Impeller.

Il codice dell'app di riferimento Harry si trova in packages/services/display_safety/reference/harry_app.

Per la struttura dettagliata della directory di HAR, vedi Struttura del codice di sicurezza visualizzato.

Monitor di sicurezza

Il codebase per il monitoraggio della sicurezza è disponibile nell'ambito del checkout del repository principale all'indirizzo packages/services/display_safety/reference/safety-monitor.

Il codice del monitor di sicurezza è strutturato nel seguente modo:

  • main.rs: recupera gli artefatti rivelatori, inizializza il server di dati del veicolo e i loop di monitoraggio rivelatori. Le informazioni sulla visibilità della spia vengono confrontate con i risultati dell'ispezione della spia e i risultati vengono forniti utilizzando i log SDV.
  • Vehicle_data_server.rs: il server che si abbona ai dati del veicolo, aggiornando la visibilità delle spie per il ciclo principale.
  • Telltale_monitoring.rs: viene eseguito in un ciclo, recuperando una copia del buffer dello schermo utilizzando il crate screencap e ispezionando le regioni specificate per individuare i segnali. I risultati delle ispezioni delle spie vengono quindi inviati al ciclo principale.

DriverUI

DriverUI è disponibile come parte di un codebase separato, a cui puoi accedere dal ramo 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

Per saperne di più sulle origini non raggruppate e Google, consulta Integrare app non raggruppate.

Crea ed esegui

Questa sezione descrive in dettaglio la procedura per compilare ed eseguire i target per l'HAR all'interno di SDV Media e della DriverUI all'interno di SDV In-Vehicle Infotainment (IVI) per ottenere la soluzione cluster completa con SDV.

VM guest

Figura 1. Visualizza la struttura della doppia VM di Safety.

Crea il target HAR e SDV Media

  • Target multimediale di base: sdv_media_cf
    • Descrizione: un target dedicato per lo stack multimediale SDV, che facilita il test isolato di vari framework multimediali.
    • Posizione della directory: device/google/sdv/
  • Target HAR integrato: sdv_media_har_cf
    • Descrizione: questo target integra lo stack multimediale con HAR, eseguendo SDV Media su Cuttlefish.
    • Posizione della directory: device/google/sdv_dsplay_safety/
    • Esecuzione della build:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j

Crea DriverUI

Dal ramo ub-automotive-master, puoi creare app non raggruppate utilizzando CommandLine o AndroidStudio.

In Android Studio, importa il file Gradle: packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle

Questo è il progetto Gradle principale con tutte le app non raggruppate, inclusa DriverUI. Crea il progetto utilizzando Gradle:

# To build only DriverUI module of aaos-apps-gradle-project use
./gradlew :driver-ui:assemble

Dopo una build riuscita, l'APK DriverUI è disponibile all'indirizzo out/aaos-apps-gradle-build/driver-ui/outputs/apk/default/debug/ driver-ui-default-debug.apk

Il codice DriverUI è disponibile all'indirizzo packages/apps/Car/DriverUI

Nota: DriverUI è un sottomodulo del progetto Gradle principale, quindi tutte le attività Gradle vengono eseguite utilizzando aaos-apps-gradle-project.

Crea la destinazione SDV IVI con DriverUI

  • Target base: sdv_ivi_cf
    • Descrizione: questo serve come target SDV di base per IVI sull'architettura x86-64.
    • Posizione della directory: device/google/sdv/
  • DriverUI Integrated Target: sdv_ivi_cf_ds

    • Descrizione: questo target estende la configurazione IVI di base per incorporare i componenti di sicurezza del display. Questo target è essenziale per la convalida dei servizi e delle interazioni di Display Safety all'interno del quadro strumenti.
    • Posizione della directory: device/google/sdv_dsplay_safety/
    • Aggiungi il binario DriverUI: copia DriverUI.apk in packages/apps/Car/DriverUIPrebuilt insieme a un file Blueprint Android.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 deve essere configurato per utilizzare il nome del modulo DriverUIPrebuilt e l'override 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,
    },
}
  • Esecuzione della build:

    # In the root of the Android source
    source build/envsetup.sh
    lunch sdv_ivi_cf_ds-trunk_staging-userdebug
    m -j
    

Deployment target

Al termine del processo di compilazione per entrambi i target, le utilità Cuttlefish aiutano a inizializzare i target come descritto in questa sezione.

Deployment di SDV Media e HAR

Il target HAR viene creato utilizzando la configurazione sdv-media-config.json predefinita, specificata all'interno di device/google/sdv_media_cf.mk.

Nota: SDV Media e SDV IVI vengono avviati in modalità di avvio Unlocked per il cluster di sicurezza del display. Per informazioni dettagliate, vedi Modalità di avvio 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"

Una volta creato, il terminale mostrerà i log per accedere alla destinazione nel browser su una porta localhost: Point your browser to https://localhost:8443 to interact with the device.

HAR nella VM SDV Media

Figura 2. Visualizza la VM multimediale SDV di sicurezza del display con HAR.

Deployment di SDV IVI e DriverUI

Il target SDV IVI DriverUI viene avviato utilizzando l'esistente sdv-ivi-config.json definito in device/google/sdv_ivi_cf.mk. Puoi anche specificare parametri di configurazione di avvio aggiuntivi e dimensioni di visualizzazione appropriate per lo schermo del 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

Una volta avviata la destinazione, il terminale mostra i log per accedervi nel browser su una porta localhost: Point your browser to https://localhost:8443 to interact with the device.

Il deployment delle destinazioni SDV-IVI e DriverUI inizializza due display: uno per il sistema SDV-IVI e l'altro per DriverUI. DriverUI funziona come un'app cluster privilegiata, sfruttando la classe ClusterHomeManager (nota anche come Cluster2).

DriverUI nella VM SDV-IVI

Figura 3. Visualizza la VM IVI SDV di sicurezza con DriverUI.

Deployment del cluster di VM duale

Cuttlefish offre la possibilità di avviare due macchine virtuali (VM) utilizzando una configurazione a doppia VM per ottenere la sovrapposizione del display.

Composizione del display

Figura 4. Visualizza la panoramica della composizione della visualizzazione Sicurezza display.

Puoi avviare la configurazione della doppia VM utilizzando ds-toolkit disponibile all'indirizzo packages/services/display_safety/service/.

m ds_toolkit
ds_toolkit launch

Dopo l'avvio della configurazione, il terminale mostra i log per accedere alla destinazione nel browser su una porta localhost: Point your browser to https://localhost:8443 to interact with the device.

Vengono avviati entrambi i target Cuttlefish in un cluster completamente operativo con entrambi i display delle macchine virtuali sovrapposti.

Visualizzare il cluster completo di Sicurezza

Figura 5. Display Safety full cluster con VM SDV Media e SDV IVI.

Monitor di sicurezza dell'edificio

Il monitor di sicurezza è creato per impostazione predefinita per il target SDV Media:

# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-trunk_staging-userdebug
m -j

In fase di runtime, il monitor di sicurezza utilizza un insieme predefinito di artefatti del compilatore generati e pacchettizzati nell'APEX per la visualizzazione del cluster di riferimento.

Potrebbero essere generati nuovi artefatti eseguendo har-design-compiler. Questo strumento viene eseguito sulla destinazione per generare artefatti da un progetto. Ti consigliamo di eseguire lo strumento, estrarre i nuovi artefatti dalla destinazione e ricompilare l'immagine. Lo strumento viene creato e installato sulla destinazione per impostazione predefinita.

# 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

Il monitor di sicurezza viene inizializzato all'avvio della destinazione. Il monitor di sicurezza funzionerà continuamente in un ciclo per verificare gli elementi critici per la sicurezza sullo schermo rispetto a quanto previsto analizzando il buffer dello schermo e i segnali di dati del veicolo in arrivo.

Puoi visualizzare i log del monitoraggio della sicurezza in qualsiasi momento:

adb logcat | grep har-safety-monitor