Google Automotive App Host הוא חלק מספריית האפליקציות למכוניות של פרויקט הקוד הפתוח של Android (AOSP). מפתחים של צד שלישי (3P) משתמשים בו כדי להפעיל אפליקציות ל-Android Automotive. App Host היא אפליקציית מערכת שמאפשרת לאפליקציות רכב של צד שלישי להציג רכיבי ממשק משתמש (UI) בסגנון יצרן ציוד מקורי (OEM) בשמן.
כדי להפעיל אפליקציות של צד שלישי, צריך להתקין גם את האפליקציה של צד שלישי וגם את AOSP Automotive App Host:
- Automotive App Host מספק לאפליקציות של צד שלישי קבוצה של תבניות ורכיבי ממשק משתמש שמותאמים לרכבים, כולל יכולות כמו שימושיות ובטיחות.
- יצרני ציוד מקורי (OEM) יכולים לעצב את תבניות ורכיבי ממשק המשתמש האלה.
- מה התוצאה? אפליקציות של צד שלישי משולבות בצורה טובה מבחינה ויזואלית במערכת המידע והבידור של יצרן הציוד המקורי.
בדף הזה מוסבר איך ליצור את מארח האפליקציות לרכב ב-AOSP מתוך פרויקט Gradle בענף ub-automotive, ואיך לשלב את מארח האפליקציות לרכב ב-AOSP ביעדים של רכבים.
בדיקת הקוד
כדי לראות את הקוד הלא מאוגד:
- מריצים את הפקודה הבאה:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
למידע נוסף על עבודה עם קוד מקור של AOSP, אפשר לעיין במאמר בנושא הפעלת לקוח Repo.
- מתקינים את Android Studio.
יצירת קובץ ה-APK של המארח ב-AOSP
- בודקים את
ub-automotiveואז פותחים את פרויקט Gradle בתיקייהpackages/apps/Car/Templates/Host. - כדי להגדיר את הפרויקט באמצעות Android SDK, צריך להגדיר את הקובץ
local.propertiesשל הפרויקט. אפשר למצוא את הנתיב בקטע Android SDK Settings (הגדרות Android SDK) ב-Android Studio.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.