अलग-अलग बंडल में मौजूद ऐप्लिकेशन इंटिग्रेट करना

डायल करने की सुविधा, मीडिया, कार की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी, और एसएमएस की सुविधा देने वाले ऐप्लिकेशन को अनबंडल्ड ऐप्लिकेशन माना जाता है. इसका मतलब है कि ये ऐप्लिकेशन, Android प्लैटफ़ॉर्म से अनबंडल्ड होते हैं. ऐसे ऐप्लिकेशन में, फ़ोन कंपैनियन ऐप्लिकेशन से डेटा पाने और कार के सिस्टम पर यूज़र एक्सपीरियंस (यूएक्स) से जुड़ा लॉजिक शामिल होता है. इसमें, कार के सिस्टम से फ़ोन को जोड़ने और सुविधा के लिए रजिस्टर करने की सेटिंग भी शामिल होती है. अनबंडल किए गए कोड से बनाए गए APK, प्लैटफ़ॉर्म के कई वर्शन के साथ काम करते हैं.

कोड देखें

अनबंडल किए गए कोड को देखने के लिए, यह कमांड चलाएं:

repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq -j4

AOSP के सोर्स कोड के साथ काम करने के बारे में ज़्यादा जानने के लिए, Repo Client को शुरू करना लेख पढ़ें.

कोड बनाना

Android Studio या कमांड लाइन का इस्तेमाल करके, कोड बनाया जा सकता है.

Android Studio

Android Studio में कोड बनाने के लिए:

  1. Android Studio में, यहां दी गई बिल्ड फ़ाइल इंपोर्ट करें:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. पक्का करें कि Gradle JDK को वर्शन 11 या इसके बाद के वर्शन पर सेट किया गया हो:

    वर्शन 11

    पहली इमेज. Android Studio में Gradle JDK को वर्शन 11 पर सेट करें.

कमांड लाइन

कमांड लाइन से कोड बनाने के लिए:

  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 के पाथ के साथ ANDROID_SDK_ROOT एनवायरमेंट वैरिएबल सेट करें.

  2. कोई कमांड प्रॉम्प्ट या शेल विंडो खोलें.

  3. packages/apps/Car/libs/aaos-apps-gradle-project पर जाएं

  4. यह कमांड चलाएं:

    ./gradlew assemble

कम से कम ज़रूरी एपीआई लेवल

अनबंडल किया गया हर ऐप्लिकेशन, Android के ऐसे प्लैटफ़ॉर्म पर काम करता है जिसका वर्शन, ऐप्लिकेशन के minSdkVersion के बराबर या उससे ज़्यादा हो. यहां दी गई टेबल में, हर ऐप्लिकेशन के लिए कम से कम एपीआई वर्शन की जानकारी दी गई है:

ऐप्लिकेशन कम से कम एपीआई लेवल
Calendar 29
कार की यूज़र इंटरफ़ेस (यूआई) लाइब्रेरी 29
CompanionDevice 29
डायलर 31
मीडिया 30
Messenger (एसएमएस) 30
AOSP होस्ट 29

किसी प्रीबिल्ड को सिस्टम इमेज में इंटिग्रेट करना

अगर Android प्लैटफ़ॉर्म का वर्शन, ऐप्लिकेशन के साथ काम करता है (पिछले सेक्शन में दी गई टेबल देखें), तो APK को सिस्टम इमेज में जोड़ा जा सकता है. हालांकि, Android प्लैटफ़ॉर्म के वर्शन के हिसाब से, इंटिग्रेशन के तरीके अलग-अलग होते हैं.

Android 13 और उसके बाद के वर्शन

Android 13 और इसके बाद के वर्शन में, अनबंडल किए गए ऐप्लिकेशन के लिए सोर्स कोड शामिल नहीं होता. हालांकि, सीडीडी के मुताबिक काम करने की जांच या खास सुविधाओं वाले ऐप्लिकेशन को उपलब्ध कराने जैसे इस्तेमाल के उदाहरणों के लिए, प्लैटफ़ॉर्म बिल्ड में पहले से बनाया गया 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 में, डिफ़ॉल्ट रूप से पहले से बने मॉड्यूल के बजाय सोर्स कोड को प्राथमिकता दी जाती है. इसलिए, android_app_import नियम में prefer फ़्लैग को true पर सेट करना ज़रूरी है. ऐसा करने का तरीका यहां बताया गया है:

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
Privileged unbundled
non-system signed
अनबंडल किए गए
सिस्टम पार्टीशन में शामिल नहीं होने चाहिए
डिस्ट्रिब्यूशन अपडेट करें OTA OTA या Google Play OTA या Google Play
AOSP होस्ट X
Calendar X
CompanionDeviceSupport X
कंट्रोल सेंटर (मल्टी-डिसप्ले) X
डायलर X
मीडिया X
Messenger (एसएमएस) X
संवेदनशील ऐप्लिकेशन लॉक X