دليل تكامل مضيف AOSP

يعد مضيف تطبيقات Android Open Source Project (AOSP) Automotive جزءًا من مكتبة تطبيقات السيارات التي يستخدمها مطورو الطرف الثالث (3P) لتمكين تطبيقات Android Automotive. App Host هو تطبيق نظام يسمح لتطبيقات السيارات التابعة لجهات خارجية بعرض مكونات واجهة المستخدم (UI) على طراز OEM نيابةً عنها.

لتشغيل تطبيقات 3P، يجب تثبيت كل من تطبيق 3P ومضيف تطبيق AOSP Automotive:

  • يوفر مضيف تطبيقات السيارات تطبيقات الجهات الخارجية مع مجموعة من قوالب واجهة المستخدم والمكونات المحسنة للمركبات، بما في ذلك إمكانيات مثل سهولة الاستخدام والسلامة.
  • يمكن لمصنعي المعدات الأصلية تصميم قوالب ومكونات واجهة المستخدم هذه.
  • النتائج؟ تم دمج تطبيقات 3P بشكل جيد بصريًا في نظام المعلومات والترفيه الخاص بالشركة المصنعة للمعدات الأصلية.

تشرح هذه الصفحة كيفية إنشاء مضيف تطبيق AOSP Automotive من مشروع Gradle في فرع ub-automotive ثم كيفية دمج مضيف تطبيق AOSP Automotive في أهداف السيارة.

تحقق من الكود

للتحقق من الكود غير المجمع:

  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 في 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 .