میزبان AOSP را ادغام کنید

میزبان برنامه خودرو پروژه متن‌باز اندروید (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:

  1. دستور زیر را اجرا کنید:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. برای کسب اطلاعات بیشتر در مورد کار با کد منبع AOSP، به بخش «مقداردهی اولیه کلاینت Repo» مراجعه کنید.

  3. اندروید استودیو را نصب کنید.

APK میزبان AOSP را ایجاد کنید

  1. ub-automotive را بررسی کنید و سپس پروژه Gradle را در مسیر packages/apps/Car/Templates/Host باز کنید.
  2. برای پیکربندی پروژه با Android SDK، فایل local.properties پروژه خود را پیکربندی کنید. می‌توانید مسیر آن را در قسمت تنظیمات Android SDK در اندروید استودیو پیدا کنید.
    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 به فایل‌های target خود اضافه کنید:
    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
      

تست ادغام

برای ساخت و نصب نمونه‌ها، به این پروژه گیت‌هاب، car-samples/car_app_library، مراجعه کنید.