Görüntülü Reklam Ağı Güvenliği'ni kullanmaya başlama

Bu sayfada, yazılım tanımlı araç (SDV) platformlarında yüksek kullanılabilirlik oluşturucu (HAR), DriverUI ve güvenlik monitörü dahil olmak üzere ekran güvenliği bileşenlerine erişme, bunları oluşturma ve çalıştırma hakkında genel bilgiler verilmektedir.

Kod erişimi

Bu bölümde, HAR ve DriverUI Display Safety bileşenlerinin kod tabanına erişim ele alınmaktadır.

Yüksek kullanılabilirlik oluşturucu

Yüksek kullanılabilirlik oluşturucunun (HAR) kod tabanı, packages/services/display_safety/ adresindeki ana depo çıkışının bir parçası olarak kullanılabilir.

HAR'ın kod tabanı şu şekilde 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 kodunu ve güvenlik araç zincirini (Design Compiler, güvenlik monitörü) içerir.
  • Hizmet: Bileşenler arasında araç verilerini gönderip almak için Android'e özel hizmetler ve APEX veri paketlerinin tanımları.
  • Önceden derlenmişler: Impeller grafik kitaplığı gibi önceden derlenmiş ikili programlar 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ı bölümüne bakın.

Güvenlik monitörü

Güvenlik monitörünün kod tabanı, packages/services/display_safety/reference/safety-monitor adresindeki ana depo çıkışının bir parçası olarak kullanılabilir.

Güvenlik monitörü kodu şu şekilde yapılandırılmıştır:

  • main.rs: Gösterge yapılarını getirir, araç veri sunucusunu ve gösterge izleme döngülerini başlatır. Gösterge görünürlüğüyle ilgili bilgiler, gösterge inceleme sonuçlarıyla karşılaştırılır ve 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 gösterge görünürlüğünü güncelleyen sunucu.
  • Telltale_monitoring.rs: Screencap crate'i kullanarak ekran arabelleğinin bir kopyasını alıp belirtilen bölgeleri inceleyerek bir döngüde çalışır. Gösterge denetimlerinin sonuçları daha sonra 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 kullanılabilir.

mkdir ub-automotive-master && cd ub-automotive-master
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq

Ayrı paketlenmiş ve Google kaynağı hakkında daha fazla bilgi için Ayrı paketlenmiş uygulamaları entegre etme başlıklı makaleyi inceleyin.

Derleme ve çalıştırma

Bu bölümde, SDV ile tam küme çözümüne ulaşmak için SDV Media'daki HAR ve SDV araç içi bilgi-eğlence sistemindeki (IVI) DriverUI hedeflerini derleme ve yürütme süreci ayrıntılı olarak açıklanmaktadır.

Konuk sanal makineler

Şekil 1. Display Safety dual VM structure.

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 testini 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 Media'yı çalıştırır.
    • Dizin konumu: device/google/sdv_display_safety/
    • Derleme yürütme:
# In the root of the Android source
source build/envsetup.sh
lunch sdv_media_har_cf-aosp_current-userdebug
m -j

DriverUI'yi oluşturma

ub-automotive-master dalından, 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 derlemeden sonra DriverUI APK'sı out/aaos-apps-gradle-build/driver-ui/outputs/apk/default/debug/ driver-ui-default-debug.apk adresinde kullanılabilir.

DriverUI kodu packages/apps/Car/DriverUI adresinde bulunabilir.

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, ekran güvenliği bileşenlerini dahil etmek için temel IVI yapılandırmasını genişletir. Bu hedef, gösterge panelindeki ekran güvenliği hizmetlerinin ve etkileşimlerin doğrulanması için gereklidir.
    • Dizin konumu: device/google/sdv_display_safety/
    • DriverUI ikili programını ekleme: DriverUI.apk dosyasını, Blueprint Android.bp dosyasıyla birlikte packages/apps/Car/DriverUIPrebuilt dizinine 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 değerini 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-aosp_current-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ı, hedeflerin bu bölümde açıklandığı şekilde başlatılmasına yardımcı olur.

SDV Media ve HAR dağıtımı

HAR hedefi, device/google/sdv_media_cf.mk içinde belirtilen önceden tanımlanmış sdv-media-config.json yapılandırması kullanılarak oluşturulur.

Not: SDV Media ve SDV IVI, Display Safety kümesi için Unlocked başlatma 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-aosp_current-userdebug
cvd create --extra_bootconfig_args="androidboot.sdv.boot_mode=unlocked androidboot.sdv.instance_name=instance1 androidboot.virt.address=3"

Oluşturulduktan sonra terminal, tarayıcıda localhost bağlantı noktası üzerinden hedefe erişmek için günlükleri gösterir: Point your browser to https://localhost:8443 to interact with the device.

SDV Media VM'de HAR

Şekil 2. Display Safety SDV Media VM with HAR.

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 ek başlatma yapılandırma parametreleri ve küme ekranı için uygun ekran boyutları belirtebilirsiniz.

# In the root of the Android source
source build/envsetup.sh
lunch sdv_ivi_cf_ds-aosp_current-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, localhost bağlantı noktasındaki 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, ayrıcalıklı bir küme uygulaması olarak çalışır ve ClusterHomeManager sınıfından (Cluster2 olarak da bilinir) yararlanır.

SDV-IVI sanal makinesinde DriverUI

Şekil 3. DriverUI ile Display Safety SDV IVI sanal makinesi

Çift sanal makine kümesinin dağıtımı

Cuttlefish, ekran yer paylaşımı elde etmek için çift sanal makine yapılandırması kullanarak iki sanal makine (VM) başlatma olanağı sağlar.

Görüntülü Reklam Ağı Oluşturma

Şekil 4. Güvenlik ekranı bileşimine genel bakışı gösterir.

packages/services/display_safety/service/ adresinde bulunan ds_toolkit komutunu kullanarak çift sanal makine yapılandırmasını başlatabilirsiniz.

m ds_toolkit
ds_toolkit launch

Yapılandırma başlatıldıktan sonra terminal, tarayıcıda hedefe erişmek için günlükleri bir localhost bağlantı noktasında gösterir: Point your browser to https://localhost:8443 to interact with the device.

Bu komut, her iki Cuttlefish hedefini de tamamen çalışır durumdaki bir kümede başlatır ve her iki sanal makine ekranı da üst üste biner.

Güvenlik tam kümesini göster

Şekil 5. SDV Media ve SDV IVI VM ile Display Safety tam kümesi.

Bina 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-aosp_current-userdebug
m -j

Çalışma zamanında güvenlik monitörü, referans küme ekranı için APEX'te oluşturulan ve paketlenen varsayılan bir derleyici yapıları kümesi 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ırıp yeni yapıları hedeften ç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ç veri sinyallerini analiz ederek ekrandaki güvenlikle ilgili kritik öğeleri beklenen değerlere göre doğrulamak için sürekli olarak bir döngüde çalışır.

Güvenlik izleme günlüklerini istediğiniz zaman görüntüleyebilirsiniz:

adb logcat | grep har-safety-monitor