डिवाइस मेनिफ़ेस्ट डेवलपमेंट

नए डिवाइस बनाते और रिलीज़ करते समय, वेंडर नई चीज़ों को परिभाषित कर सकते हैं और डिवाइस मेनिफ़ेस्ट (DM) में FCM वर्शन को टारगेट करना होगा. वेंडर इमेज को अपग्रेड करते समय अगर वेंडर, पुराने डिवाइसों के लिए एचएएल के नए वर्शन लागू करते हैं, तो टारगेट FCM वर्शन है.

नए डिवाइस डेवलप करना

नए डिवाइसों के लिए डिवाइस टारगेट का FCM वर्शन तय करते समय:

  1. DEVICE_MANIFEST_FILE छोड़ें और PRODUCT_ENFORCE_VINTF_MANIFEST के बारे में जानकारी नहीं है.
  2. टारगेट किए गए FCM वर्शन के लिए एचएएल लागू करें.
  3. सही डिवाइस मेनिफ़ेस्ट फ़ाइल लिखें.
  4. डिवाइस मेनिफ़ेस्ट फ़ाइल पर टारगेट FCM वर्शन लिखें.
  5. DEVICE_MANIFEST_FILE सेट करें.
  6. PRODUCT_ENFORCE_VINTF_MANIFEST को true पर सेट करें.

नए डिवाइस रिलीज़ करें

जब नया डिवाइस रिलीज़ किया जाता है, तो उसका शुरुआती टारगेट FCM वर्शन यह होना चाहिए तय किया गया और डिवाइस मेनिफ़ेस्ट में बताया गया है कि "target-level" टॉप-लेवल में एट्रिब्यूट <manifest> एलिमेंट.

उदाहरण के लिए, Android 9 के साथ लॉन्च होने वाले डिवाइसों में यह ज़रूरी है कि जिनके पास टारगेट FCM वर्शन 3 (इस समय उपलब्ध सबसे नया वर्शन) के बराबर है. डिवाइस मेनिफ़ेस्ट में इसका एलान करने के लिए:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

वेंडर की इमेज अपग्रेड करें

किसी पुराने डिवाइस के लिए वेंडर इमेज को अपग्रेड करते समय, वेंडर ये काम कर सकते हैं: एचएएल के नए वर्शन लागू करें और टारगेट FCM वर्शन को बढ़ाएं.

एचएएल अपग्रेड करें

वेंडर इमेज अपग्रेड करने के दौरान, वेंडर नए एचएएल वर्शन लागू कर सकते हैं बशर्ते एचएएल का नाम, इंटरफ़ेस का नाम, और इंस्टेंस का नाम एक जैसा हो. इसके लिए उदाहरण:

  • Google Pixel 2 और Pixel 2 XL डिवाइस, टारगेट FCM वर्शन के साथ रिलीज़ किए गए हैं 2, जिसमें ज़रूरी ऑडियो 2.0 एचएएल लागू किया गया android.hardware.audio@2.0::IDeviceFactory/default.
  • Android के साथ रिलीज़ किए गए ऑडियो 4.0 एचएएल के लिए 9, Google Pixel 2 और Pixel 2 XL डिवाइस पूरे OTA को 4.0 एचएएल पर अपग्रेड करेगा. android.hardware.audio@4.0::IDeviceFactory/default.
  • भले ही compatibility_matrix.2.xml, ऑडियो 2.0 के बारे में बताता हो सिर्फ़, टारगेट FCM वर्शन 2 वाली वेंडर इमेज की ज़रूरी शर्त इसलिए बढ़ाया गया, क्योंकि Android 9 फ़्रेमवर्क (FCM वर्शन) 3) काम के मामले में, ऑडियो 4.0 को ऑडियो 2.0 एचएएल की जगह इस्तेमाल करता है.

अगर compatibility_matrix.2.xml की ज़रूरत है, तो आपको खास जानकारी देनी होगी ऑडियो 2.0 और compatibility_matrix.3.xml के लिए ऑडियो 4.0 की ज़रूरत है, ज़रूरतों के बारे में नीचे बताया गया है:

FCM वर्शन (सिस्टम) टारगेट FCM वर्शन (वेंडर) ज़रूरी शर्तें
2 (8.1) 2 (8.1) ऑडियो 2.0
3 (9) 2 (8.1) ऑडियो 2.0 या 4.0
3 (9) 3 (9) ऑडियो 4.0

टारगेट FCM वर्शन अपग्रेड करें

वेंडर इमेज अपग्रेड के दौरान, वेंडर टारगेट FCM को भी बढ़ा सकते हैं वर्शन के अनुसार टारगेट किया गया FCM वर्शन तय करने के लिए, अपग्रेड किया गया वेंडर इमेज काम कर सकता है के साथ. किसी डिवाइस के टारगेट FCM वर्शन को बंप करने के लिए, वेंडर को:

  1. टारगेट किए गए FCM वर्शन के लिए, सभी नए ज़रूरी HAL वर्शन लागू करें.
  2. डिवाइस मेनिफ़ेस्ट फ़ाइल में, HAL वर्शन में बदलाव करें.
  3. डिवाइस मेनिफ़ेस्ट फ़ाइल में टारगेट FCM वर्शन बदलें.
  4. ऐसे HAL वर्शन हटाएं जो अब काम नहीं करते.

उदाहरण के लिए, Android 7.0 के साथ लॉन्च किए गए Google Pixel और Pixel XL डिवाइस इसलिए, उनका टारगेट FCM वर्शन कम से कम लेगसी होना चाहिए. हालांकि, डिवाइस मेनिफ़ेस्ट, टारगेट FCM वर्शन 2 का एलान करता है, क्योंकि वेंडर इमेज में को compatibility_matrix.2.xml के मुताबिक अपडेट किया गया है:

<manifest version="1.0" type="device" target-level="2">

अगर वेंडर सभी ज़रूरी नए एचएएल वर्शन लागू नहीं करते या उन्हें नहीं हटाते ऐसे HAL वर्शन जो अब काम नहीं करते, तो टारगेट FCM वर्शन को अपग्रेड नहीं किया जा सकता.

उदाहरण के लिए, Google Pixel 2 और Pixel 2 XL डिवाइसों पर, FCM वर्शन 2 टारगेट किया गया है. वे कुछ एचएएल लागू करते हैं, जो compatibility_matrix.3.xml (जैसे, ऑडियो 4.0, हेल्थ 2.0 वगैरह), वे android.hardware.radio.deprecated@1.0 को नहीं हटाते हैं, जो कि FCM वर्शन 3 (Android 9) पर काम नहीं करेगा. इसलिए, ये डिवाइस, टारगेट FCM वर्शन को 3 पर अपग्रेड नहीं कर सकते.

ओटीए के दौरान, कर्नेल के लिए ज़रूरी शर्तों का पालन करना

Android 9 या उससे पहले के वर्शन वाले डिवाइसों को अपडेट करना

Android 9 या उससे पहले के वर्शन वाले डिवाइसों पर, पक्का करें कि नीचे दिए गए सीएल चेरी के ज़रिए चुना गया:

इन बदलावों से बिल्ड फ़्लैग मिलता है PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS और Android 9 के साथ लॉन्च हुए डिवाइसों के लिए फ़्लैग सेट नहीं किया गया है या कम.

  • Android 10 में अपडेट करते समय, Android 9 वर्शन वाले डिवाइसों पर ओटीए क्लाइंट या उससे कम का इस्तेमाल करके, ओटीए पैकेज में कर्नेल के लिए ज़रूरी शर्तों की सही तरीके से जांच नहीं की जाती है. ये बदलाव इसलिए ज़रूरी हैं, ताकि जनरेट किए गए ओटीए से कर्नेल की ज़रूरी शर्तों को हटाया जा सके पैकेज.
  • Android 11 में अपडेट करते समय, यह सेट करना ज़रूरी नहीं है VINTF की जांच करने के लिए, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS ने फ़्लैग बनाया है अपडेट पैकेज जनरेट होने पर साथ काम करता है.

इस बिल्ड फ़्लैग के बारे में ज़्यादा जानकारी के लिए, देखें Android से डिवाइसों को अपडेट करना 10 हैं.

Android 10 वाले डिवाइसों को अपडेट किया जा रहा है

Android 10 के लिए पेश है नया बिल्ड फ़्लैग, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS. डिवाइसों के लिए Android 10 के साथ लॉन्च किया गया है, तो यह फ़्लैग true पर अपने-आप सेट हो. जब फ़्लैग इस पर सेट होता है true, स्क्रिप्ट कर्नेल वर्शन और कर्नेल को एक्सट्रैक्ट करती है इंस्टॉल की गई कर्नेल इमेज से कॉन्फ़िगरेशन.

  • Android 10 में अपडेट करते समय, OTA अपडेट पैकेज में यह शामिल होता है kernel वर्शन और कॉन्फ़िगरेशन. Android पर चलने वाले डिवाइसों पर ओटीए क्लाइंट जांच करने के लिए, 10 इस जानकारी को पढ़ें साथ काम करता है.
  • Android 11 में अपडेट करते समय, OTA पैकेज की शैली कर्नेल वर्शन और कॉन्फ़िगरेशन को पढ़ता है, ताकि यह देखा जा सके कि यह काम कर रहा है या नहीं.

अगर स्क्रिप्ट एक्सट्रैक्ट नहीं कर पाती है आपकी कर्नेल इमेज के लिए, इनमें से एक काम करें निम्न:

  • अपने केरनेल फ़ॉर्मैट की मदद करने और एओएसपी में योगदान देने के लिए, स्क्रिप्ट में बदलाव करें.
  • BOARD_KERNEL_VERSION को kernel वर्शन पर सेट करें और बनाए गए कर्नेल के पाथ के लिए BOARD_KERNEL_CONFIG_FILE कॉन्फ़िगरेशन फ़ाइल .config. दोनों वैरिएबल को अपडेट करना ज़रूरी है जब कर्नेल इमेज अपडेट होती है.
  • वैकल्पिक रूप से, सेट करें PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS से कर्नेल की ज़रूरी शर्तों की जांच न करने के लिए, false. इसका सुझाव नहीं दिया जाता है, क्योंकि पेज के साथ काम न करने वाली कोई भी गड़बड़ी छिपी रहती है. इसका पता सिर्फ़ तब चलता है, जब अपडेट के बाद वीटीएस टेस्ट किए जा रहे हों.

आपके पास कर्नेल की जानकारी निकालने की स्क्रिप्ट का सोर्स कोड देखने का विकल्प है extract_kernel.py.