Dự án Android nguồn mở (AOSP) Automotive App Host là một phần của Thư viện ứng dụng dành cho ô tô mà nhà phát triển bên thứ ba (3P) sử dụng để bật ứng dụng cho Android Automotive. App Host là một ứng dụng hệ thống cho phép các ứng dụng dành cho ô tô của bên thứ ba hiển thị các thành phần giao diện người dùng (UI) theo kiểu OEM thay mặt cho ứng dụng đó.
Để chạy ứng dụng của bên thứ ba, cả ứng dụng của bên thứ ba và AOSP Automotive App Host đều phải được cài đặt:
- Automotive App Host cung cấp cho các ứng dụng của bên thứ ba một tập hợp các mẫu và thành phần giao diện người dùng được tối ưu hoá cho xe, bao gồm các tính năng như khả năng sử dụng và an toàn.
- Nhà sản xuất thiết bị gốc (OEM) có thể tạo kiểu cho các mẫu và thành phần giao diện người dùng này.
- Kết quả? Các ứng dụng của bên thứ ba được tích hợp tốt về mặt hình ảnh vào hệ thống thông tin giải trí của OEM.
Trang này giải thích cách tạo AOSP Automotive App Host từ dự án Gradle trong nhánh ub-automotive, sau đó là cách tích hợp AOSP Automotive App Host vào các mục tiêu dành cho ô tô.
Hãy xem đoạn mã vừa tải
Cách xem đoạn mã chưa được gói:
- Chạy lệnh sau:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Để tìm hiểu thêm về cách làm việc với mã nguồn AOSP, hãy xem Khởi chạy ứng dụng Repo.
- Cài đặt Android Studio.
Tạo tệp APK máy chủ AOSP
- Xem
ub-automotive, sau đó mở dự án Gradle trongpackages/apps/Car/Templates/Host. - Để định cấu hình dự án bằng SDK Android, hãy định cấu hình tệp
local.propertiescủa dự án. Bạn có thể tìm thấy đường dẫn trong phần Cài đặt SDK Android trong Android Studio.sdk.dir=${path_to_android_sdk_location}
- Tạo tệp APK máy chủ dưới dạng một dự án Gradle thông thường. Ví dụ: chạy lệnh
gradlecommand:./gradlew :app:assembleDebug
Tệp APK nằm trong:
packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk
Nhúng máy chủ AOSP
- Tạo một tệp
Android.mkmới để đưa nội dung sau vào: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)
- Đổi tên
app-debug.apkthànhAOSPHost.apkvà đặt tệp APK vào cùng thư mục vớiAndroid.mk. - Thêm mô-đun
CarAOSPHostvào các mục tiêu của bạn dưới dạngPRODUCT_PACKAGES:PRODUCT_PACKAGES += \ CarAOSPHost \
Thêm cấu hình quyền
- Tạo một tệp có tên
com.android.car.templates.host.xmlđể chứa nội dung sau:<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>
- Trong mục tiêu của bạn, hãy thêm tệp cấu hình vào các mục tiêu:
PRODUCT_COPY_FILES += \ <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
Tạo mục tiêu
Khi bạn tạo mục tiêu, máy chủ sẽ được cài đặt và quyền sẽ được cấp:
… android.car.permission.CAR_NAVIGATION_MANAGER: granted=true android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true android.car.permission.TEMPLATE_RENDERER: granted=true …
Kiểm thử quá trình tích hợp
Để tạo và cài đặt các mẫu, hãy xem dự án GitHub này, car-samples/car_app_library.