إنّ Automotive App Host من مشروع Android Open Source Project (AOSP) هو جزء من مكتبة تطبيقات السيارات التي يستخدمها المطوّرون التابعون لجهات خارجية لتفعيل التطبيقات على نظام Android Automotive. "مضيف التطبيقات" هو تطبيق نظام يسمح لتطبيقات السيارات التابعة لجهات خارجية بعرض مكونات واجهة المستخدم (UI) بتصميم المصنّع الأصلي للجهاز بالنيابة عنه.
لتشغيل تطبيقات الجهات الخارجية، يجب تثبيت كلّ من التطبيق التابع للجهة الخارجية وAOSP Automotive App Host:
- يقدّم Automotive App Host لتطبيقات الجهات الخارجية مجموعة من نماذج واجهة المستخدم ومكوّناتها المحسَّنة للمركبات، بما في ذلك إمكانات مثل سهولة الاستخدام والسلامة.
- يمكن لمصنّعي المعدّات الأصلية تصميم نماذج واجهة المستخدم هذه ومكوّناتها.
- النتيجة؟ تكون تطبيقات الجهات الخارجية مدمجة بشكل جيد في نظام الترفيه والمعلومات الخاص بالمصنّع الأصلي للجهاز.
توضّح هذه الصفحة كيفية إنشاء AOSP Automotive App Host من مشروع Gradle في الفرع
ub-automotive
، ثم كيفية دمج AOSP Automotive App Host في ملفّات برمجية مخصّصة للسيارات.
الاطّلاع على الرمز
للاطّلاع على الرمز غير المجمّع:
- شغِّل الأمر التالي:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
للاطّلاع على مزيد من المعلومات عن العمل مع رمز المصدر في AOSP، يُرجى الاطّلاع على مقالة إعداد عملاء Repo.
- ثبِّت استوديو Android.
إنشاء حزمة APK الخاصة بخادم AOSP
- اطّلِع على
ub-automotive
ثم افتح مشروع Gradle ضمنpackages/apps/Car/Templates/Host
. - لضبط المشروع باستخدام حزمة تطوير البرامج (SDK) لنظام التشغيل Android، عليك ضبط ملف
local.properties
الخاص بالمشروع. يمكنك العثور على المسار ضمن إعدادات حزمة تطوير البرامج (SDK) لنظام التشغيل Android في "استوديو Android".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
: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 …
اختبار عملية الدمج
لإنشاء النماذج وتثبيتها، يُرجى الاطّلاع على مشروع GitHub التالي: car-samples/car_app_library.