Android Open Source Project (AOSP) Automotive App Host הוא חלק מספריית האפליקציות של Android למכוניות, שמפתחים של צד שלישי (3P) משתמשים בה כדי להפעיל אפליקציות ל-Android Automotive. App Host היא אפליקציית מערכת שמאפשרת לאפליקציות לרכב של צד שלישי להציג רכיבי ממשק משתמש (UI) בסגנון של יצרן ציוד מקורי (OEM) בשמה.
כדי להריץ אפליקציות של צד שלישי, צריך להתקין גם את האפליקציה של הצד השלישי וגם את 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 Studio.
יצירת חבילת ה-APK המארחת של AOSP
- בודקים את
ub-automotive
ואז פותחים את פרויקט Gradle בקטעpackages/apps/Car/Templates/Host
. - כדי להגדיר את הפרויקט באמצעות Android SDK, מגדירים את הקובץ
local.properties
של הפרויקט. אפשר למצוא את הנתיב בקטע 'הגדרות 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.