คู่มือการผสานรวมโฮสต์ AOSP

โปรเจ็กต์โอเพนซอร์ส Android (AOSP) Automotive App Host เป็นส่วนหนึ่งของไลบรารีแอปรถยนต์ ที่นักพัฒนาแอปบุคคลที่สาม (3P) ใช้เพื่อเปิดใช้แอปสำหรับ Android Automotive โฮสต์แอปเป็นระบบ แอปที่อนุญาตให้แอปรถยนต์ของบุคคลที่สามแสดงผลคอมโพเนนต์อินเทอร์เฟซผู้ใช้ (UI) สไตล์ OEM ในนามของแอป

หากต้องการเรียกใช้แอปของบุคคลที่สาม ทั้งแอป 3P และ AOSP Automotive App Host ต้องเป็น ติดตั้งแล้ว:

  • Automotive App Host ให้บริการแอปของบุคคลที่สามพร้อมชุดเทมเพลตและคอมโพเนนต์ UI เหมาะสำหรับยานพาหนะ รวมถึงความสามารถต่างๆ เช่น ความสามารถในการใช้งานและความปลอดภัย
  • OEM สามารถจัดรูปแบบเทมเพลตและคอมโพเนนต์ UI เหล่านี้ได้
  • ผลลัพธ์ที่ได้ก็คือ แอปของบุคคลที่สามมีการผสานรวมอย่างสมบูรณ์กับ ระบบสาระบันเทิงของ OEM

หน้านี้อธิบายวิธีสร้าง AOSP Automotive App Host จากโปรเจ็กต์ Gradle ใน ub-automotive สาขาและวิธีผสานรวม AOSP Automotive App Host กับรถยนต์ เป้าหมาย

ดูโค้ด

วิธีดูรหัสที่ไม่ได้รวมกลุ่ม

  1. เรียกใช้คำสั่งต่อไปนี้
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync
    -j4
  2. หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานซอร์สโค้ด AOSP โปรดดูที่ เริ่มต้นไคลเอ็นต์ที่เก็บ

  3. ติดตั้ง Android Studio

สร้าง APK ของโฮสต์ AOSP

  1. โปรดดู ub-automotive แล้วเปิดโปรเจ็กต์ Gradle ใต้ packages/apps/Car/Templates/Host
  2. หากต้องการกำหนดค่าโปรเจ็กต์ด้วย Android SDK ให้กำหนดค่า local.properties ไฟล์ คุณสามารถค้นหาเส้นทางได้ในส่วนการตั้งค่า Android SDK ใน Android Studio
    sdk.dir=${path_to_android_sdk_location}
  3. สร้าง APK โฮสต์เป็นโปรเจ็กต์ Gradle ทั่วไป ตัวอย่างเช่น ให้เรียกใช้ gradle คำสั่ง: วันที่
    ./gradlew :app:assembleDebug

    ไฟล์ APK อยู่ใน:

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

ฝังโฮสต์ AOSP

  1. สร้างไฟล์ Android.mk ใหม่เพื่อรวมเนื้อหาต่อไปนี้ วันที่
    LOCAL_PATH := $(my-dir)
    ################## Start of AOSPHost target ##################
    include $
    (CLEAR_VARS)
    LOCAL_MODULE
    := CarAOSPHost
    LOCAL_LICENSE_KINDS
    := legacy_notice
    LOCAL_LICENSE_CONDITIONS
    := notice
    LOCAL_MODULE_OWNER
    := google
    LOCAL_SRC_FILES
    := AOSPHost.apk
    LOCAL_MODULE_CLASS
    := APPS
    LOCAL_MODULE_TAGS
    := optional
    LOCAL_MODULE_SUFFIX
    := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_BUILT_MODULE_STEM
    := package.apk
    LOCAL_CERTIFICATE
    := PRESIGNED
    LOCAL_PRIVILEGED_MODULE
    := true
    LOCAL_PRODUCT_MODULE
    := true
    LOCAL_DEX_PREOPT
    := false
    include $
    (BUILD_PREBUILT)
  2. เปลี่ยนชื่อ app-debug.apk เป็น AOSPHost.apk และใส่ APK ใน โฟลเดอร์เดียวกับ Android.mk
  3. เพิ่มโมดูล CarAOSPHost ลงในเป้าหมายเป็น PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       
    CarAOSPHost \

เพิ่มการกำหนดค่าสิทธิ์

  1. สร้างไฟล์ชื่อ com.android.car.templates.host.xml เพื่อให้มีข้อมูลต่อไปนี้ วันที่
    <permissions>
       
    <!-- Rename the package to com.android.car.templates.host -->
       
    <privapp-permissions package="com.android.car.templates.host">
           
    <!-- To be able to display activities in the cluster -->
           
    <permission name="android.car.permission.CAR_DISPLAY_IN_CLUSTER" />

           
    <!-- To be able to show navigation state (turn by turn directions) in the cluster.-->
           
    <permission name="android.car.permission.CAR_NAVIGATION_MANAGER" />

           
    <!-- To be considered a system-approved host -->
           
    <permission name="android.car.permission.TEMPLATE_RENDERER" />
       
    </privapp-permissions>

       
    <!-- Declare support for templated applications. -->
       
    <feature name="android.software.car.templates_host" />
    </permissions>
  2. เพิ่มไฟล์การกำหนดค่าไปยังเป้าหมายในเป้าหมาย ดังนี้
    PRODUCT_COPY_FILES += \
       
    <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

สร้างเป้าหมาย

เมื่อคุณสร้างเป้าหมาย ระบบจะติดตั้งโฮสต์และให้สิทธิ์ดังนี้

      
      android
.car.permission.CAR_NAVIGATION_MANAGER: granted=true
      android
.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true
      android
.car.permission.TEMPLATE_RENDERER: granted=true
     

ทดสอบการผสานรวม

หากต้องการสร้างและติดตั้งตัวอย่าง โปรดดูโปรเจ็กต์ GitHub นี้ car-ตัวอย่าง/car_app_library