ผสานรวมแอปที่ไม่ได้รวมกลุ่ม

แอปที่มีโปรแกรมโทรศัพท์ สื่อ ไลบรารี 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

  1. ใน Android Studio ให้นำเข้าไฟล์บิลด์ต่อไปนี้

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. ตรวจสอบว่าได้ตั้งค่า JDK ของ Gradle เป็นเวอร์ชัน 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. เปิด Command Prompt หรือหน้าต่างเชลล์

  3. ไปที่ packages/apps/Car/libs/aaos-apps-gradle-project

  4. เรียกใช้คำสั่งต่อไปนี้

    ./gradlew assemble

ระดับ API ขั้นต่ำที่จำเป็น

แอปแต่ละแอปที่แยกออกมาจะทำงานบนแพลตฟอร์ม Android ที่มีเวอร์ชันเท่ากับหรือสูงกว่าminSdkVersion ตารางต่อไปนี้แสดงเวอร์ชัน API ขั้นต่ำที่แอปแต่ละแอปรองรับ

แอป ระดับ API ขั้นต่ำ
ปฏิทิน 29
ไลบรารี UI ของรถ 29
CompanionDevice 29
Dialer 31
สื่อ 30
Messenger (SMS) 30
โฮสต์ AOSP 29
การล็อกแอป 34

ผสานรวมแอปที่สร้างไว้ล่วงหน้าเข้ากับอิมเมจระบบ

หากแอปนั้นรองรับแพลตฟอร์ม Android เวอร์ชันดังกล่าว (ดูตารางในส่วนก่อนหน้า) คุณจะเพิ่ม APK ลงในอิมเมจระบบได้ อย่างไรก็ตาม ขั้นตอนการผสานรวมจะแตกต่างกันไปตามเวอร์ชันแพลตฟอร์ม Android

Android 13 ขึ้นไป

Android 13 ขึ้นไปไม่มีซอร์สโค้ดสำหรับแอปที่ไม่ได้รวมไว้ แต่คุณสามารถรวม APK ที่สร้างไว้ล่วงหน้าในการบิลด์แพลตฟอร์มสำหรับ Use Case ต่างๆ เช่น การทดสอบการปฏิบัติตามข้อกำหนด 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
สิทธิพิเศษที่ไม่ได้รวมกลุ่ม
ที่ไม่ใช่ระบบ ที่ลงนาม

ไม่จำเป็นต้องอยู่ใน
พาร์ติชันระบบ
อัปเดตการจัดจำหน่าย OTA OTA หรือ Google Play OTA หรือ Google Play
โฮสต์ AOSP X
ปฏิทิน X
CompanionDeviceSupport X
ศูนย์ควบคุม (หลายจอแสดงผล) X
แป้นโทรศัพท์ X
สื่อ X
Messenger (SMS) X
การล็อกแอปที่มีความละเอียดอ่อน X