แอปที่มีโปรแกรมโทรออก สื่อ ไลบรารี UI ของรถ และ SMS จะถือเป็น แอปที่แยกออกจากกัน (นั่นคือแยกออกจากแพลตฟอร์ม Android) แอปดังกล่าวมีตรรกะสำหรับการรับข้อมูลจากแอปคู่ของโทรศัพท์และ UX ในฝั่งรถยนต์ รวมถึงการตั้งค่าสำหรับการเชื่อมโยงและการลงทะเบียนฟีเจอร์ 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 ให้นำเข้าไฟล์บิลด์ต่อไปนี้
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 |
ไลบรารี UI ของรถ | 29 |
CompanionDevice | 29 |
Dialer | 31 |
สื่อ | 30 |
Messenger (SMS) | 30 |
โฮสต์ AOSP | 29 |
ผสานรวมการสร้างล่วงหน้าเข้ากับอิมเมจระบบ
หากแอปพลิเคชันรองรับแพลตฟอร์ม Android เวอร์ชันนั้น (ดูตารางในส่วนก่อนหน้า) คุณจะเพิ่ม APK ลงในอิมเมจระบบได้ อย่างไรก็ตาม ขั้นตอนการผสานรวมจะแตกต่างกันไปตามเวอร์ชันแพลตฟอร์ม Android
Android 13 ขึ้นไป
Android 13 ขึ้นไปไม่มีซอร์สโค้ดสำหรับแอปที่ไม่ได้รวมไว้ แต่คุณ
สามารถรวม APK ที่สร้างไว้ล่วงหน้าในการสร้างแพลตฟอร์มสำหรับกรณีการใช้งานต่างๆ เช่น การทดสอบการปฏิบัติตามข้อกำหนดของ 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 |