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 เข้ากับเป้าหมายรถยนต์
ดูรหัส
วิธีตรวจสอบรหัสที่แยกออกมา
- เรียกใช้คําสั่งต่อไปนี้
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับซอร์สโค้ด AOSP ได้ที่เริ่มต้นใช้งานไคลเอ็นต์ Repo
- ติดตั้ง Android Studio
สร้าง APK โฮสต์ AOSP
- ตรวจสอบ
ub-automotive
แล้วเปิดโปรเจ็กต์ Gradle ในส่วนpackages/apps/Car/Templates/Host
- หากต้องการกําหนดค่าโปรเจ็กต์ด้วย Android SDK ให้กําหนดค่าไฟล์
local.properties
ของโปรเจ็กต์ คุณดูเส้นทางได้ในการตั้งค่า Android SDK ใน Android Studiosdk.dir=${path_to_android_sdk_location}
- สร้าง APK โฮสต์เป็นโปรเจ็กต์ Gradle ทั่วไป เช่น เรียกใช้คำสั่ง
gradle
ต่อไปนี้./gradlew :app:assembleDebug
ไฟล์ APK จะอยู่ในตำแหน่งต่อไปนี้
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
ฝังโฮสต์ AOSP
- สร้างไฟล์
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)
- เปลี่ยนชื่อ
app-debug.apk
เป็นAOSPHost.apk
และใส่ APK ไว้ในโฟลเดอร์เดียวกับAndroid.mk
- เพิ่มข้อบังคับ
CarAOSPHost
ลงในเป้าหมายของคุณเป็นPRODUCT_PACKAGES
PRODUCT_PACKAGES += \ CarAOSPHost \
เพิ่มการกําหนดค่าสิทธิ์
- สร้างไฟล์ชื่อ
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>
- ในเป้าหมาย ให้เพิ่มไฟล์การกําหนดค่าลงในเป้าหมาย
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