โปรเจ็กต์โอเพนซอร์ส 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 กับรถยนต์
เป้าหมาย
ดูโค้ด
วิธีดูรหัสที่ไม่ได้รวมกลุ่ม
- เรียกใช้คำสั่งต่อไปนี้
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -j4 หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้งานซอร์สโค้ด AOSP โปรดดูที่ เริ่มต้นไคลเอ็นต์ที่เก็บ
- ติดตั้ง 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-ตัวอย่าง/car_app_library