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

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.

Konuk sanal makineler

Ş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.apk dosyasını, Blueprint Android.bp dosyasıyla birlikte packages/apps/Car/DriverUIPrebuilt konumuna 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.

SDV Media VM'de HAR

Ş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.

SDV-IVI VM'de DriverUI

Ş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.

Ekran Bileşimi

Ş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.

Display Safety tam kümesi

Ş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