אפליקציות שכוללות את 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:
ב-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 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 |