מדריך לשילוב עם מארח AOSP

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 ביעדים לכלי רכב.

בדיקת הקוד

כדי לבדוק את הקוד ללא החבילה:

  1. מריצים את הפקודה הבאה:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. למידע נוסף על עבודה עם קוד המקור של AOSP, ראו איך מפעילים לקוח Repo.

  3. מתקינים את Android Studio.

יצירת חבילת ה-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.