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

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

หากต้องการเรียกใช้แอปของบุคคลที่สาม คุณต้องติดตั้งทั้งแอปของบุคคลที่สามและ 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 ได้ที่เริ่มต้นใช้งานไคลเอ็นต์ Repo

  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-samples/car_app_library