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

מארח האפליקציות של Android לשימוש בפרויקט קוד פתוח (AOSP) הוא חלק מספריית האפליקציות של רכב משמש מפתחי צד שלישי (צד שלישי) כדי להפעיל אפליקציות ל-Android Automotive. מארח האפליקציות הוא מערכת שמאפשר לאפליקציות של צד שלישי לרכב לעבד רכיבים של ממשק משתמש (UI) בסגנון OEM (ממשק משתמש) מטעמה.

כדי להפעיל אפליקציות של צד שלישי, גם אפליקציית הצד השלישי וגם מארח האפליקציות AOSP Automotive מותקן:

  • Automotive App Host מספק אפליקציות צד שלישי עם קבוצה של תבניות ורכיבים של ממשק משתמש בוצעה אופטימיזציה לכלי רכב, כולל יכולות כמו נוחות השימוש ובטיחות.
  • יצרני ציוד מקורי יכולים לעצב את התבניות והרכיבים האלה של ממשק המשתמש.
  • התוצאה? אפליקציות צד שלישי משולבות היטב מערכת המידע והבידור של ה-OEM.

בדף הזה מוסבר איך ליצור מארח אפליקציות של AOSP Automotive מפרויקט Gradle הסתעפות של ub-automotive ואז איך לשלב את מארח האפליקציות של AOSP במכונית יעדים.

בדיקת הקוד

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

  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. אפשר למצוא את הנתיב בהגדרות ה-SDK של Android ב-Android אולפן.
    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