שילוב אפליקציות שלא נכללות בחבילה

אפליקציות שכוללות את Dialer‏, Media‏, ספריית ממשק המשתמש שברכב ו-SMS נחשבות לאפליקציות לא מקובצות (כלומר, הן לא מקובצות עם פלטפורמת Android). האפליקציות האלה כוללות את הלוגיקה לקבלת נתונים מאפליקציית התמיכה של הטלפון ואת חוויית המשתמש בצד הרכב, כולל הגדרות לשיוך ולהרשמה לתכונות. חבילות APK שנוצרו מקוד לא מקובץ פועלות עם כמה גרסאות של הפלטפורמה.

בדיקת הקוד

כדי לבדוק את הקוד ללא החבילה, מריצים את הפקודה הבאה:

repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq -j4

מידע נוסף על עבודה עם קוד המקור של AOSP זמין במאמר איפוס הלקוח של Repo.

פיתוח הקוד

אפשר ליצור את הקוד באמצעות Android Studio או משורת הפקודה.

Android Studio

כדי ליצור את הקוד ב-Android Studio:

  1. ב-Android Studio, מייבאים את קובץ ה-build הבא:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. מוודאים ש-Gradle JDK מוגדר לגרסה 11 ואילך:

    גרסה 11

    איור 1. מגדירים את Gradle JDK לגרסה 11 ב-Android Studio.

שורת הפקודה

כדי ליצור את הקוד משורת הפקודה:

  1. מגדירים את המיקום של Android SDK באחת מהשיטות הבאות:

    • יוצרים את packages/apps/Car/libs/aaos-apps-gradle-project/local.properties ומגדירים את המאפיין sdk.dir שהוא מכיל. Android Studio יכול לעשות זאת באופן אוטומטי כשפותחים פרויקט. לדוגמה, אפשר להשתמש ב-sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      או

    • מגדירים את משתנה הסביבה ANDROID_SDK_ROOT עם הנתיב ל-Android SDK.

  2. פותחים שורת פקודה או חלון מעטפת.

  3. למעבר אל packages/apps/Car/libs/aaos-apps-gradle-project.

  4. מריצים את הפקודה הבאה:

    ./gradlew assemble

רמות ה-API המינימליות הנדרשות

כל אפליקציה לא מקובצת פועלת בפלטפורמות Android בגרסה שווה או גבוהה מ-minSdkVersion. בטבלה הבאה מפורטת גרסת ה-API המינימלית שנתמכת בכל אפליקציה:

אפליקציה רמת API מינימלית
יומן 29
ספריית ממשק המשתמש שברכב 29
CompanionDevice 29
Dialer 31
מדיה 30
Messenger (SMS) 30
AOSP Host 29

שילוב של build מראש בתמונת מערכת

אם הגרסה של פלטפורמת Android נתמכת באפליקציה (ראו בטבלה בקטע הקודם), אפשר להוסיף את קובץ ה-APK לתמונת המערכת. עם זאת, שלבי השילוב משתנים בהתאם לגרסאות של פלטפורמת Android.

Android מגרסה 13 ואילך

ב-Android 13 ואילך לא כלול קוד מקור לאפליקציות שלא נארזו בחבילה, אבל אפשר לכלול קובץ APK שנוצר מראש ב-build של הפלטפורמה לתרחישים לדוגמה כמו בדיקת תאימות ל-CDD או הקצאת אפליקציות עם הרשאות. כדי לציין את חבילת ה-APK, משתמשים בכלל Soong‏ android_app_import, כפי שמתואר בדוגמה הבאה:

android_app_import {
    name: "CarMediaApp",
    apk: "CarMediaApp.apk",
    privileged: true,
    certificate: "platform", // Media must be signed by the platform
    required: ["allowed_privapp_com.android.car.media"],
}

Android מגרסה 12 ומטה

Android 12 וגרסאות ישנות יותר כוללות קוד מקור לאפליקציות שלא נכללות בחבילה, אבל עדיין אפשר לציין קובץ APK שנוצר מראש שרוצים לכלול. מכיוון שברירת המחדל של Soong היא לתת עדיפות לקוד המקור על פני גרסת build מוכנה מראש, צריך להגדיר את הדגל prefer ל-true בתוך הכלל android_app_import, כפי שמתואר בדוגמה הבאה:

android_app_import {
    name: "CarDialerApp",
    apk: "CarDialerApp.apk",
    privileged: true,
    presigned: true, // Dialer can have its own signature
    required: ["allowed_privapp_com.android.car.dialer"],
    overrides: ["Dialer"],
    prefer: true, // The prebuilt replaces a source target with the same name
    }

פרטי אפליקציה לא בחבילה

אפליקציה/הפצה חבילה לא מקובצת עם הרשאות
חתומה על ידי המערכת
Privileged unbundled
non-system signed
חבילות לא מקובצות
לא צריכות להיות במחיצה של המערכת
אפליקציה – יומן Google X
אפליקציה – CompanionDeviceSupport X
אפליקציה – Dialer X
אפליקציה – מארח AOSP X
אפליקציה – מדיה X
אפליקציה – Messenger (SMS) X
עדכון ההפצה OTA OTA או Google Play OTA או Google Play