אפליקציות שכוללות את Dialer, Media, Car UI Library ו-SMS נחשבות לאפליקציות לא מאוגדות (כלומר, הן לא מאוגדות לפלטפורמת Android). אפליקציות כאלה כוללות את הלוגיקה לקבלת נתונים מאפליקציית הטלפון הנלווית וממשק משתמש בצד המכונית, כולל הגדרות לשיוך ולהרשמה לתכונות. חבילות APK שנוצרו מקוד לא מאוגד פועלות עם כמה גרסאות של הפלטפורמה.
בדיקת הקוד
כדי לבדוק את הקוד שלא נכלל בחבילה, מריצים את הפקודה הבאה:
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-masterrepo sync -cq -j4
מידע נוסף על עבודה עם קוד מקור של AOSP זמין במאמר Initialize the Repo Client.
יצירת הקוד
אפשר ליצור את הקוד באמצעות Android Studio או משורת הפקודה.
Android Studio
כדי לבנות את הקוד ב-Android Studio:
ב-Android Studio, מייבאים את קובץ ה-build הבא:
packages/apps/Car/libs/aaos-apps-gradle-project/build.gradleמוודאים ש-Gradle JDK מוגדר לגרסה 11 ואילך:
איור 1. מגדירים את Gradle JDK לגרסה 11 ב-Android Studio.
שורת הפקודה
כדי ליצור את הקוד משורת הפקודה:
מגדירים את המיקום של 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.
פותחים שורת פקודה או חלון של מעטפת.
למעבר אל
packages/apps/Car/libs/aaos-apps-gradle-project.מריצים את הפקודה הבאה:
./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, משתמשים בכלל 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 היא לתת עדיפות לקוד המקור על פני קוד מוכן מראש, צריך להגדיר את הדגל 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 |
ההרשאות המיוחדות לא כלולות בחבילה לא מערכתית חתומה |
לא צריך להתקין אותן במחיצת המערכת |
|---|---|---|---|
| עדכון ההפצה | OTA | OTA או Google Play | OTA או Google Play |
| מארח AOSP | X | ||
| יומן Google | X | ||
| CompanionDeviceSupport | X | ||
| מרכז הבקרה (מספר מסכים) | X | ||
| Dialer | X | ||
| מדיה | X | ||
| Messenger (SMS) | X | ||
| נעילת אפליקציות רגישות | X |