يُعد "مضيف تطبيق السيارات المفتوح المصدر لنظام Android" (AOSP) جزءًا من مكتبة تطبيقات السيارات يستخدمه مطوّرو برامج تابعون لجهات خارجية لتفعيل تطبيقات Android Automotive. مضيف التطبيق هو نظام تطبيق يتيح لتطبيقات السيارات التابعة لجهات خارجية عرض مكوّنات واجهة المستخدم بنمط المصنّع الأصلي للجهاز (UI) نيابةً عنها.
لتشغيل التطبيقات التابعة لجهات خارجية، يجب أن يكون كلّ من التطبيق التابع للجهة الخارجية و"مضيف تطبيق AOSP للسيارات": مثبت:
- يوفّر Automotive App Host للتطبيقات التابعة لجهات خارجية مجموعة من نماذج ومكوّنات واجهة المستخدم. محسّنة للمركبات، بما في ذلك إمكانات مثل سهولة الاستخدام والسلامة.
- يمكن للمصنّعين الأصليين للأجهزة تصميم نماذج ومكونات واجهة المستخدم هذه.
- والنتيجة هي؟ التطبيقات التابعة لجهات خارجية مدمجة بشكل جيد في نظام الترفيه والمعلومات التابع للمصنّع الأصلي للجهاز.
توضّح هذه الصفحة كيفية إنشاء AOSP Automotive App Host من مشروع Gradle في
فرع ub-automotive
ثم كيفية دمج "مضيف تطبيق AOSP Automotive" في السيارة
الأهداف.
تحقق من الرمز
للاطلاع على الرمز غير المجمّع:
- شغِّل الأمر التالي:
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 في التطبيق. استوديو YouTube.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 …
اختبار عملية الدمج
لإنشاء النماذج وتثبيتها، اطّلع على مشروع جيت هب هذا، car-عيّنات/car_app_library.