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

אפליקציות שכוללות את Dialer,‏ Media,‏ Car UI Library ו-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 29

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

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

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

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

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 היא לתת עדיפות לקוד המקור על פני קובץ מוכן מראש, צריך להגדיר את הדגל 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
system signed
ההרשאות המיוחדות לא כלולות בחבילה
לא מערכתיות חתימה
אפליקציות לא מקובצות
לא צריכות להיות במחיצת המערכת
אפליקציה - יומן X
אפליקציה – CompanionDeviceSupport X
אפליקציה – חייגן X
אפליקציה – מארח AOSP X
אפליקציה – מדיה X
אפליקציה – Messenger (SMS) X
עדכון ההפצה OTA OTA או Google Play OTA או Google Play