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

میزبان برنامه Automotive Project متن باز Android (AOSP) بخشی از کتابخانه برنامه خودرو است که توسط توسعه دهندگان شخص ثالث (3P) برای فعال کردن برنامه ها برای Android Automotive استفاده می شود. App Host یک برنامه سیستمی است که به برنامه های خودروی 3P اجازه می دهد تا اجزای رابط کاربری (UI) به سبک OEM را از طرف خود ارائه دهند.

برای اجرای برنامه های 3P، هم برنامه 3P و هم AOSP Automotive App Host باید نصب شوند:

  • Automotive App Host برنامه های 3P را با مجموعه ای از الگوهای رابط کاربری و اجزای بهینه سازی شده برای وسایل نقلیه، از جمله قابلیت هایی مانند قابلیت استفاده و ایمنی، ارائه می دهد.
  • OEM ها می توانند به این قالب ها و مؤلفه های رابط کاربری استایل دهی کنند.
  • نتیجه؟ برنامه های 3P از نظر بصری به خوبی در سیستم اطلاعات سرگرمی OEM ادغام شده اند.

این صفحه نحوه تولید AOSP Automotive App Host از پروژه Gradle در شاخه ub-automotive و سپس نحوه ادغام AOSP Automotive App Host در اهداف خودرو را توضیح می دهد.

کد را بررسی کنید

برای بررسی کد جدا شده:

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

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

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

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

ادغام را تست کنید

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