میزبان برنامه خودرو پروژه متنباز اندروید (AOSP) بخشی از کتابخانه برنامه خودرو است که توسط توسعهدهندگان شخص ثالث (3P) برای فعال کردن برنامهها برای اندروید خودرو استفاده میشود. میزبان برنامه یک برنامه سیستمی است که به برنامههای خودرو 3P اجازه میدهد تا اجزای رابط کاربری (UI) به سبک OEM را از طرف خود رندر کنند.
برای اجرای برنامههای 3P، هم برنامه 3P و هم AOSP Automotive App Host باید نصب شوند:
- میزبان برنامه خودرو، برنامههای شخص ثالث را با مجموعهای از قالبها و اجزای رابط کاربری بهینه شده برای وسایل نقلیه، از جمله قابلیتهایی مانند قابلیت استفاده و ایمنی، ارائه میدهد.
- تولیدکنندگان اصلی تجهیزات (OEM) میتوانند این قالبها و اجزای رابط کاربری را استایلدهی کنند.
- نتیجه این میشود که برنامههای 3P از نظر بصری به خوبی در سیستم اطلاعات سرگرمی تولیدکننده اصلی خودرو (OEM) ادغام شدهاند.
این صفحه نحوه تولید AOSP Automotive App Host از پروژه Gradle در شاخه ub-automotive و سپس نحوه ادغام AOSP Automotive App Host در اهداف خودرو را توضیح میدهد.
کد را بررسی کنید
برای بررسی کد unbundled:
- دستور زیر را اجرا کنید:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
برای کسب اطلاعات بیشتر در مورد کار با کد منبع AOSP، به بخش «مقداردهی اولیه کلاینت Repo» مراجعه کنید.
- اندروید استودیو را نصب کنید.
APK میزبان AOSP را ایجاد کنید
-
ub-automotiveرا بررسی کنید و سپس پروژه Gradle را در مسیرpackages/apps/Car/Templates/Hostباز کنید. - برای پیکربندی پروژه با Android SDK، فایل
local.propertiesپروژه خود را پیکربندی کنید. میتوانید مسیر آن را در قسمت تنظیمات Android SDK در اندروید استودیو پیدا کنید.sdk.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به فایلهای target خود اضافه کنید: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 …
تست ادغام
برای ساخت و نصب نمونهها، به این پروژه گیتهاب، car-samples/car_app_library، مراجعه کنید.