Android फ़्रेमवर्क रिलीज़ में, फ़्रेमवर्क के साथ काम करने वाले कई मैट्रिक्स (FCM) होते हैं. इनमें से हर मैट्रिक्स, अपग्रेड किए जा सकने वाले हर टारगेट FCM वर्शन के लिए होती है. इनसे यह तय होता है कि फ़्रेमवर्क किसका इस्तेमाल कर सकता है और टारगेट FCM वर्शन की ज़रूरी शर्तें क्या हैं. FCM के लाइफ़साइकल के तहत, Android, HIDL HALs को बंद कर देता है और हटा देता है. इसके बाद, HAL वर्शन की स्थिति दिखाने के लिए, FCM फ़ाइलों में बदलाव करता है.
अपने पारिस्थितिक तंत्र में सिर्फ़ फ़्रेमवर्क के लिए ओटीए चालू करने के लिए, वेंडर इंटरफ़ेस को एक्सटेंंड करने वाले पार्टनर को भी उसी तरीके का इस्तेमाल करके, एचआईडीएल एचएएल को बंद करना चाहिए और हटाना चाहिए.
शब्दावली
- फ़्रेमवर्क के साथ काम करने की जानकारी देने वाला मैट्रिक्स (एफ़सीएम)
- यह एक एक्सएमएल फ़ाइल है, जिसमें वेंडर के लागू करने के तरीके के लिए, फ़्रेमवर्क की ज़रूरी शर्तों के बारे में बताया गया है. कंपैटिबिलिटी मैट्रिक के वर्शन को सेव किया जाता है. साथ ही, हर फ़्रेमवर्क रिलीज़ के लिए नया वर्शन फ़्रीज़ किया जाता है. हर फ़्रेमवर्क रिलीज़ में कई एफ़सीएम शामिल होते हैं.
- प्लैटफ़ॉर्म के FCM वर्शन (SF)
- फ़्रेमवर्क रिलीज़ में FCM के सभी वर्शन का सेट. यह फ़्रेमवर्क, किसी भी ऐसे वेंडर के साथ काम कर सकता है जो इनमें से किसी एक एफ़सीएम को पूरा करता हो.
- FCM वर्शन (F)
- फ़्रेमवर्क रिलीज़ में, सभी एफ़सीएम में से सबसे ज़्यादा वर्शन.
- टारगेट किया गया FCM वर्शन (V)
- डिवाइस के मेनिफ़ेस्ट में साफ़ तौर पर बताया गया, टारगेट किया गया FCM वर्शन (SF से), जो वेंडर के लागू किए गए वर्शन से मेल खाता हो. वेंडर के लिए, पब्लिश किए गए FCM के हिसाब से लागू करने की सुविधा जनरेट की जानी चाहिए. हालांकि, वह अपने डिवाइस मेनिफ़ेस्ट में नए HAL वर्शन का एलान कर सकता है.
- HAL वर्शन
- एचएएल वर्शन का फ़ॉर्मैट
foo@x.y
होता है. इसमेंfoo
, एचएएल का नाम होता है औरx.y
, खास वर्शन होता है. उदाहरण के लिए,nfc@1.0
,keymaster@3.0
(रूट प्रीफ़िक्स, जैसे किandroid.hardware
को इस दस्तावेज़ में शामिल नहीं किया गया है.) - डिवाइस मेनिफ़ेस्ट
- एक्सएमएल फ़ाइलें, जिनमें बताया गया हो कि वेंडर इंटरफ़ेस के डिवाइस साइड में कौनसे एचएएल वर्शन उपलब्ध हैं. इनमें वेंडर और ओडीएम इमेज भी शामिल हैं. डिवाइस मेनिफ़ेस्ट के कॉन्टेंट पर, डिवाइस के टारगेट किए गए FCM वर्शन का असर पड़ता है. हालांकि, इसमें ऐसे एचएएल शामिल किए जा सकते हैं जो V के एफ़सी के मुकाबले काफ़ी नए हों.
- डिवाइस के एचएएल
- ऐसे एचएएल जो डिवाइस मेनिफ़ेस्ट में दिए गए हैं और फ़्रेमवर्क के साथ काम करने की क्षमता वाले मैट्रिक्स (एफ़सीएम) में शामिल हैं.
- डिवाइस के साथ काम करने की जानकारी देने वाला मैट्रिक्स (डीसीएम)
- यह एक एक्सएमएल फ़ाइल है, जिसमें फ़्रेमवर्क को लागू करने के लिए, वेंडर की ज़रूरी शर्तों के बारे में बताया गया है. हर डिवाइस में एक डीसीएम होता है.
- फ़्रेमवर्क मेनिफ़ेस्ट
- यह एक एक्सएमएल फ़ाइल है. इससे पता चलता है कि वेंडर इंटरफ़ेस के फ़्रेमवर्क साइड में, सिस्टम, system_ext, और प्रॉडक्ट इमेज के साथ-साथ कौनसे एचएएल वर्शन उपलब्ध कराए जाते हैं. फ़्रेमवर्क मेनिफ़ेस्ट में मौजूद एचएएल, डिवाइस के टारगेट एफ़सीएम वर्शन के हिसाब से डाइनैमिक तौर पर बंद हो जाते हैं.
- फ़्रेमवर्क एचएएल
- ऐसे एचएएल जिन्हें फ़्रेमवर्क मेनिफ़ेस्ट में दिया गया है और डिवाइस के साथ काम करने की जानकारी देने वाले मैट्रिक्स (डीसीएम) में शामिल किया गया है.
कोडबेस में FCM का लाइफ़साइकल
इस दस्तावेज़ में, FCM के लाइफ़साइकल के बारे में खास जानकारी दी गई है. इस्तेमाल किए जा सकने वाले मेनिफ़ेस्ट देखने के लिए, hardware/interfaces/compatibility_matrix.<FCM>.xml
पर जाएं. यहां system/libvintf/include/vintf/Level.h
में FCM को देखा जा सकता है.
उम्मीद है कि उसी Android रिलीज़ वर्शन वाले डिवाइस में, FCM की वैल्यू उस लेवल से ज़्यादा या उसके बराबर होगी. उदाहरण के लिए, Android 11 के साथ शिप होने वाले डिवाइस में आम तौर पर FCM लेवल 5 होता है. हालांकि, उसमें FCM लेवल 6 या उसके बाद का वर्शन लागू किया जाता है. इस वर्शन के लिए, काम करने की शर्तों के मैट्रिक्स में बताई गई कई अन्य ज़रूरी शर्तें पूरी करनी होती हैं. ये लेवल इस्तेमाल किए जा सकते हैं:
FCM | Android वर्शन |
---|---|
4 | Android 10/Q |
5 | Android 11/R |
6 | Android 12/S |
7 | Android 13/T |
8 | Android 14/U |
202404 | Android 15/V |
FCM लेवल, वेंडर एपीआई लेवल के बराबर या उससे नया हो.
जब Android किसी FCM लेवल को बंद कर देता है, तब भी वह मौजूदा डिवाइसों पर काम करता रहता है. कम FCM लेवल को टारगेट करने वाले डिवाइसों को, नए FCM लेवल में दिए गए एचएएल का इस्तेमाल करने की अनुमति होती है. हालांकि, ऐसा तब तक ही किया जा सकता है, जब तक वे ब्रैंच में उपलब्ध हों.
FCM के नए वर्शन में डेवलप करना
Android, फ़्रेमवर्क की हर रिलीज़ (जैसे, Android 8 और 8.1) के लिए, FCM वर्शन को बढ़ाता है. डेवलपमेंट के दौरान, नया compatibility_matrix.F.xml
बनाया जाता है और मौजूदा compatibility_matrix.f.xml
(जहां f
< F
) में अब कोई बदलाव नहीं किया जाता.
FCM के नए वर्शन F
में डेवलपमेंट शुरू करने के लिए:
- नया
compatibility_matrix.<F-1>.xml
,compatibility_matrix.F.xml
में कॉपी करें. - फ़ाइल में
level
एट्रिब्यूट की वैल्यू कोF
पर अपडेट करें. - डिवाइस पर इस कम्पैटिबिलिटी मैट्रिक को इंस्टॉल करने के लिए, इससे जुड़े बिल्ड नियम जोड़ें.
नया एचएएल जोड़ना
डेवलपमेंट के दौरान, अगर आपको Android के मौजूदा FCM वर्शन F
में कोई नया एचएएल (वाई-फ़ाई, एनएफ़सी वगैरह) जोड़ना है, तो एचएएल को compatibility_matrix.F.xml
में जोड़ें.
उदाहरण के लिए, Android 8.1 में cas@1.0
की सुविधा लॉन्च की गई थी. Android 8.1 के साथ लॉन्च होने वाले डिवाइसों में, इस एचएएल को लागू किया जा सकता है. इसलिए, compatibility_matrix.F.xml
में यह एंट्री जोड़ी गई है. इस रिलीज़ के डेवलपमेंट के दौरान, इसे कुछ समय के लिए compatibility_matrix.current.xml
नाम दिया गया था:
<hal format="hidl">
<name>android.hardware.cas</name>
<version>1.0</version>
<interface>
<name>IMediaCasService</name>
<instance>default</instance>
</interface>
</hal>
एचएएल को अपग्रेड करना (मामूली)
AIDL HAL वर्शन को, HAL के माइनर वर्शन माना जाता है. HIDL इंटरफ़ेस के वर्शन में, 1.2
जैसे major.minor
वर्शन होते हैं.
डेवलपमेंट के दौरान, जब किसी एआईडीएल एचएएल का वर्शन, मौजूदा एफ़सीएम वर्शन F
पर 2
से 3
पर अपग्रेड होता है, तो नया वर्शन compatibility_matrix.F.xml
में एचएएल एंट्री में जोड़ दिया जाता है. एचएएल एंट्री के वर्शन फ़ील्ड में, 2-3
जैसी रेंज डाली जा सकती हैं.
उदाहरण के लिए, Android FCM F
ने HAL के छोटे वर्शन के अपग्रेड के तौर पर foo@3
को पेश किया. पुराने वर्शन, foo@2
का इस्तेमाल, पुराने FCM को टारगेट करने वाले डिवाइसों के लिए किया जाता है. वहीं, नए वर्शन, foo@3
का इस्तेमाल, Android FCM F
को टारगेट करने वाले डिवाइसों के लिए किया जा सकता है. 2
वर्शन से पहले के पुराने FCM में एंट्री इस तरह दिखती है:
<hal format="aidl">
<name>foo</name>
<version>2</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
इस एंट्री को compatibility_matrix.F.xml
में कॉपी किया गया था और 3
वर्शन के साथ काम करने के लिए, इसमें इस तरह बदलाव किया गया था:
<hal format="aidl">
<name>foo</name>
<version>2-3</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
HAL को अपग्रेड करना (बड़ा अपडेट)
डेवलपमेंट के दौरान, जब किसी एचएएल का मुख्य वर्शन, मौजूदा FCM वर्शन F
पर अपग्रेड होता है, तो नया मुख्य वर्शन x.0
, इन सेटिंग के साथ compatibility_matrix.F.xml
में जोड़ा जाता है:
- सिर्फ़
x.0
वर्शन, अगरV = F
वर्शन के साथ शिप होने वाले डिवाइसों कोx.0
वर्शन के साथ लॉन्च करना ज़रूरी है. - अगर
V = F
के साथ शिप होने वाले डिवाइस, किसी पुराने मुख्य वर्शन के साथ लॉन्च किए जा सकते हैं, तो एक ही<hal>
टैग में पुराने मुख्य वर्शन के साथ.
उदाहरण के लिए, FCM के वर्शन F
में foo@2.0
को 1.0 एचएएल के मुख्य वर्शन के अपग्रेड के तौर पर पेश किया गया है. साथ ही, 1.0 एचएएल को बंद कर दिया गया है. foo@1.0
के पुराने वर्शन का इस्तेमाल, FCM के पिछले वर्शन को टारगेट करने वाले डिवाइसों के लिए किया जाता है. अगर डिवाइसों में एचएएल उपलब्ध है, तो FCM के F
वर्शन को टारगेट करने वाले डिवाइसों में, 2.0 का नया वर्शन उपलब्ध होना चाहिए. इस उदाहरण में, FCM के पिछले वर्शन में यह एंट्री शामिल है:
<hal format="hidl">
<name>foo</name>
<version>1.0</version>;
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
इस एंट्री को compatibility_matrix.F.xml
में कॉपी करें और इसमें ये बदलाव करें:
<hal format="hidl">
<name>foo</name>
<version>2.0</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
प्रतिबंध:
compatibility_matrix.F.xml
में 1.0 एचएएल मौजूद नहीं है. इसलिए, FCM केF
वर्शन को टारगेट करने वाले डिवाइसों में 1.0 एचएएल नहीं होना चाहिए. ऐसा इसलिए है, क्योंकि इस एचएएल को बंद कर दिया गया है.- FCM के पुराने वर्शन में 1.0 एचएएल मौजूद है. इसलिए, फ़्रेमवर्क अब भी 1.0 एचएएल के साथ काम कर सकता है. इससे, यह उन पुराने डिवाइसों के साथ काम कर सकता है जो FCM के पुराने वर्शन को टारगेट करते हैं.
FCM के नए वर्शन
सिस्टम पार्टीशन पर FCM वर्शन रिलीज़ करने की प्रोसेस, सिर्फ़ Google करता है. यह प्रोसेस, AOSP रिलीज़ के हिस्से के तौर पर की जाती है. इसमें ये चरण शामिल होते हैं:
- पक्का करें कि
compatibility_matrix.F.xml
मेंlevel="F"
एट्रिब्यूट मौजूद हो. - पक्का करें कि सभी डिवाइसों को बिल्ड और बूट किया गया हो.
- वीटीएस टेस्ट अपडेट करें, ताकि यह पक्का किया जा सके कि नए फ़्रेमवर्क (शिपिंग एपीआई लेवल के आधार पर) के साथ लॉन्च होने वाले डिवाइसों में, टारगेट FCM वर्शन
V >= F
हो. - फ़ाइल को AOSP पर पब्लिश करें.
उदाहरण के लिए, VTS टेस्ट से यह पक्का होता है कि Android 9 के साथ लॉन्च होने वाले डिवाइसों में, टारगेट FCM वर्शन 3 या इससे ज़्यादा हो.
इसके अलावा, product और system_ext FCM में, हर प्लैटफ़ॉर्म के FCM वर्शन की ज़रूरी शर्तें भी शामिल की जा सकती हैं. प्रॉडक्ट और system_ext के partition पर FCM वर्शन रिलीज़ करने का अधिकार, इन इमेज के मालिक के पास होता है. प्रॉडक्ट और system_ext सेक्शन में मौजूद FCM वर्शन के नंबर, system सेक्शन में मौजूद नंबर से मेल खाने चाहिए. सिस्टम पार्टीशन पर मौजूद FCM वर्शन की तरह ही, प्रॉडक्ट और system_ext पार्टीशन में FCM वर्शन F के साथ काम करने वाले मैट्रिक्स से, टारगेट किए गए FCM वर्शन F वाले डिवाइस की ज़रूरी शर्तों के बारे में पता चलता है.
HAL वर्शन का बंद होना
किसी एचएएल वर्शन को बंद करने का फ़ैसला, डेवलपर लेता है. जैसे, AOSP एचएएल के लिए, Google यह फ़ैसला लेता है. ऐसा तब हो सकता है, जब HAL का नया वर्शन रिलीज़ किया गया हो. भले ही, वह माइनर या मेजर वर्शन हो.
किसी डिवाइस के एचएएल को बंद करना
जब किसी डिवाइस के लिए HAL foo@x.y
को FCM के F
वर्शन में बंद कर दिया जाता है, तो इसका मतलब है कि टारगेट FCM के V = F
या उसके बाद के वर्शन के साथ लॉन्च होने वाले किसी भी डिवाइस को x.y
या x.y
से पहले के किसी भी वर्शन पर foo
लागू नहीं करना चाहिए. डिवाइसों को अपग्रेड करने के लिए, फ़्रेमवर्क अब भी इस्तेमाल किए जा सकने वाले एचएएल वर्शन के साथ काम करता है.
FCM वर्शन F
रिलीज़ होने पर, HAL वर्शन foo@x.y
को बंद माना जाता है. ऐसा तब होता है, जब टारगेट FCM वर्शन V = F
के लिए, नए FCM में HAL वर्शन के बारे में साफ़ तौर पर नहीं बताया गया हो. V = F
के साथ लॉन्च होने वाले डिवाइसों के लिए, इनमें से कोई एक शर्त पूरी होनी चाहिए:
- फ़्रेमवर्क के लिए, मेजर या माइनर वर्शन का ज़्यादा नया वर्शन ज़रूरी है;
- फ़्रेमवर्क को अब एचएएल की ज़रूरत नहीं है.
उदाहरण के लिए, Android 9 में health@2.0
को 1.0 HAL के मुख्य वर्शन के अपग्रेड के तौर पर पेश किया गया है. health@1.0
को compatibility_matrix.3.xml
से हटा दिया गया है, लेकिन यह compatibility_matrix.legacy.xml
, compatibility_matrix.1.xml
, और compatibility_matrix.2.xml में मौजूद है.
इसलिए, health@1.0
का इस्तेमाल नहीं किया जा सकता.
किसी फ़्रेमवर्क एचएएल को बंद करना
जब किसी फ़्रेमवर्क HAL foo@x.y
को FCM वर्शन F
में बंद कर दिया जाता है, तो इसका मतलब है कि टारगेट FCM वर्शन V = F
या उसके बाद के वर्शन के साथ लॉन्च होने वाले किसी भी डिवाइस को यह उम्मीद नहीं करनी चाहिए कि फ़्रेमवर्क, x.y
वर्शन या x.y
से पहले के किसी भी वर्शन में foo
उपलब्ध कराएगा. डिवाइसों को अपग्रेड करने के लिए, फ़्रेमवर्क अब भी इस्तेमाल नहीं किया जा सकने वाला एचएएल वर्शन उपलब्ध कराता है.
FCM का वर्शन F
रिलीज़ होने पर, HAL का वर्शन foo@x.y
अब काम नहीं करता. ऐसा तब होता है, जब फ़्रेमवर्क मेनिफ़ेस्ट में foo@x.y
के लिए max-level="F - 1"
बताया गया हो. V = F
के साथ लॉन्च होने वाले डिवाइसों के लिए, फ़्रेमवर्क में एचएएल foo@x.y
उपलब्ध नहीं होता. V = F
के साथ लॉन्च होने वाले डिवाइसों के डिवाइस के साथ काम करने की जानकारी देने वाले मैट्रिक में, max-level < V
के साथ फ़्रेमवर्क एचएएल की सूची नहीं होनी चाहिए.
उदाहरण के लिए, Android 12 में schedulerservice@1.0
का इस्तेमाल नहीं किया जा सकता. इसका max-level
एट्रिब्यूट, 5
पर सेट है. यह Android 11 में लॉन्च किया गया FCM वर्शन है. Android 12 के फ़्रेमवर्क मेनिफ़ेस्ट देखें.
टारगेट किए गए FCM वर्शन के लिए सहायता हटाना
जब किसी टारगेट FCM वर्शन V
के चालू डिवाइसों की संख्या तय थ्रेशोल्ड से कम हो जाती है, तो टारगेट FCM वर्शन को अगले फ़्रेमवर्क रिलीज़ के सेट SF से हटा दिया जाता है. ऐसा करने के लिए, इन दोनों चरणों को पूरा करें:
बिल्ड के नियमों से
compatibility_matrix.V.xml
को हटाना (ताकि वह सिस्टम इमेज पर इंस्टॉल न हो), और हटाई गई सुविधाओं पर आधारित या लागू किए गए किसी भी कोड को मिटाना.फ़्रेमवर्क मेनिफ़ेस्ट से,
max-level
से कम या उसके बराबर वाले फ़्रेमवर्क एचएएल हटाना. साथ ही, हटाए गए फ़्रेमवर्क एचएएल को लागू करने वाले किसी भी कोड को मिटाना.V
किसी फ़्रेमवर्क रिलीज़ के लिए, SF से बाहर के टारगेट FCM वर्शन वाले डिवाइस, उस रिलीज़ पर अपग्रेड नहीं हो सकते.
HAL वर्शन का स्टेटस
नीचे दिए गए सेक्शन में, किसी एचएएल वर्शन की संभावित स्थितियों के बारे में बताया गया है.
अप्रकाशित
डिवाइस के एचएएल के लिए, अगर कोई एचएएल वर्शन किसी भी सार्वजनिक और फ़्रीज़ किए गए डिवाइस के साथ काम करने की जानकारी देने वाले मैट्रिक्स में नहीं है, तो उसे रिलीज़ नहीं किया गया माना जाता है. साथ ही, हो सकता है कि वह डेवलपमेंट में हो.
इसमें सिर्फ़ compatibility_matrix.F.xml
में मौजूद एचएएल वर्शन शामिल हैं.
उदाहरण:
- Android 9 के डेवलपमेंट के दौरान,
health@2.0
HAL को रिलीज़ नहीं किया गया था और यह सिर्फ़compatibility_matrix.3.xml
में मौजूद था. teleportation@1.0
एचएएल, रिलीज़ किए गए किसी भी काम करने की संभावना वाले मैट्रिक्स में शामिल नहीं है. साथ ही, इसे रिलीज़ नहीं किया गया एचएएल भी माना जाता है.
फ़्रेमवर्क एचएएल के लिए, अगर एचएएल का कोई वर्शन सिर्फ़ किसी ऐसे डेवलपमेंट ब्रैंच के फ़्रेमवर्क मेनिफ़ेस्ट में है जिसका कोई लेना-देना नहीं है, तो उसे रिलीज़ नहीं किया गया माना जाता है.
रिलीज़ और मौजूदा
डिवाइस के एचएएल के लिए, अगर एचएएल वर्शन किसी सार्वजनिक और फ़्रीज़ किए गए काम करने के तरीके के मैट्रिक्स में है, तो उसे रिलीज़ कर दिया जाता है. उदाहरण के लिए, FCM वर्शन 3 को फ़्रीज़ करने और AOSP पर पब्लिश करने के बाद, health@2.0
HAL को रिलीज़ किया गया और मौजूदा HAL वर्शन माना जाता है.
अगर कोई एचएएल वर्शन, सार्वजनिक और फ़्रीज़ किए गए काम करने के तरीके के मैट्रिक में है, जिसमें एफ़सीएम का सबसे नया वर्शन है, तो एचएएल वर्शन मौजूदा है (यानी कि उसे बंद नहीं किया गया है). उदाहरण के लिए, compatibility_matrix.3.xml
में मौजूदा HAL वर्शन (जैसे कि compatibility_matrix.legacy.xml
में पेश किया गया nfc@1.0
) को भी रिलीज़ किया गया और मौजूदा HAL वर्शन माना जाता है.
फ़्रेमवर्क एचएएल के लिए, अगर हाल ही में रिलीज़ की गई शाखा के फ़्रेमवर्क मेनिफ़ेस्ट में कोई एचएएल वर्शन, max-level
एट्रिब्यूट के बिना मौजूद है या (असामान्य रूप से) max-level
इस शाखा में रिलीज़ किए गए एफ़सीएम वर्शन के बराबर या उससे ज़्यादा है, तो इसे रिलीज़ किया गया और मौजूदा एचएएल वर्शन माना जाता है. उदाहरण के लिए, displayservice
HAL, Android 12 में रिलीज़ किया गया है और यह मौजूदा है. इसकी जानकारी, Android 12 फ़्रेमवर्क मेनिफ़ेस्ट में दी गई है.
रिलीज़ किया गया है, लेकिन अब काम नहीं करता
डिवाइस के लिए एचएएल के वर्शन को तब ही बंद किया जाता है, जब ये सभी शर्तें पूरी होती हैं:
- वह रिलीज़ हो गया हो.
- यह सार्वजनिक और फ़्रीज़ किए गए काम करने वाले मैट्रिक्स में नहीं है, जिसमें सबसे नया FCM वर्शन है.
- यह सार्वजनिक और फ़्रीज़ किए गए कंपैटबिलिटी मैट्रिक में है, जिस पर फ़्रेमवर्क अब भी काम करता है.
उदाहरण:
health@1.0
HAL,compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, औरcompatibility_matrix.2.xml
में मौजूद है, लेकिनcompatibility_matrix.3.xml
में नहीं. इसलिए, इसे Android 9 में काम नहीं करने वाला माना जाता है.- Android 9 में, पावर एचएएल का वर्शन थोड़ा अपडेट किया गया है, लेकिन
power@1.0
अब भीcompatibility_matrix.3.xml
में है. power@1.0
compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, औरcompatibility_matrix.2.xml
.compatibility_matrix.3.xml
मेंpower@1.0-1
हैं.
इसलिए, power@1.0
मौजूदा है, लेकिन Android
9 में इसे खारिज नहीं किया गया है.
फ़्रेमवर्क एचएएल के लिए, अगर किसी एचएएल वर्शन को रिलीज़ किए गए सबसे नए ब्रैंच के फ़्रेमवर्क मेनिफ़ेस्ट में शामिल किया गया है और उसमें max-level
एट्रिब्यूट की वैल्यू, इस ब्रैंच में रिलीज़ किए गए एफ़सीएम वर्शन से कम है, तो उसे रिलीज़ किया गया, लेकिन अब काम न करने वाला एचएएल वर्शन माना जाता है. उदाहरण के लिए, schedulerservice
एचएएल रिलीज़ किया गया है, लेकिन Android 12 फ़्रेमवर्क मेनिफ़ेस्ट के मुताबिक, Android 12 में इसे 'अब काम नहीं करता' के तौर पर मार्क किया गया है.
हटाया गया
डिवाइस के लिए उपलब्ध एचएएल के वर्शन को सिर्फ़ तब हटाया जाता है, जब ये बातें सही हों:
- इसे पहले रिलीज़ किया जा चुका है.
- यह किसी भी सार्वजनिक और फ़्रीज़ किए गए काम करने की क्षमता वाले मैट्रिक्स में नहीं है, जिस पर फ़्रेमवर्क काम करता है.
काम करने की संभावना दिखाने वाले ऐसे मैट्रिक्स जो सार्वजनिक हैं, फ़्रीज़ किए गए हैं, लेकिन फ़्रेमवर्क के साथ काम नहीं करते उन्हें कोडबेस में रखा जाता है. इससे, हटाए गए एचएएल वर्शन सेट को तय किया जा सकता है, ताकि वीटीएस टेस्ट लिखे जा सकें और यह पक्का किया जा सके कि हटाए गए एचएएल नए डिवाइसों पर मौजूद न हों.
फ़्रेमवर्क HAL के लिए, HAL का कोई वर्शन सिर्फ़ तब हटाया जाता है, जब ये शर्तें पूरी होती हैं:
- इसे पहले रिलीज़ किया जा चुका है.
- यह हाल ही में रिलीज़ हुई शाखा के किसी भी फ़्रेमवर्क मेनिफ़ेस्ट में नहीं है.
लेगसी FCM
टारगेट FCM वर्शन लेगसी, उन सभी डिवाइसों के लिए एक खास वैल्यू है जो Treble के साथ काम नहीं करते. लेगसी FCM, compatibility_matrix.legacy.xml
, लेगसी डिवाइसों (यानी Android 8.0 से पहले लॉन्च किए गए डिवाइसों) पर फ़्रेमवर्क की ज़रूरी शर्तों की सूची दिखाता है.
अगर यह फ़ाइल, F
वर्शन वाले FCM के लिए मौजूद है, तो किसी भी ऐसे डिवाइस को F
पर अपग्रेड किया जा सकता है जो Treble के साथ काम नहीं करता. हालांकि, इसके लिए ज़रूरी है कि उसका डिवाइस मेनिफ़ेस्ट, इस फ़ाइल के साथ काम करता हो. इसे हटाने की प्रोसेस, टारगेट किए गए अन्य FCM वर्शन के लिए FCM की प्रोसेस जैसी ही है. इसे 8.0 से पहले के वर्शन वाले चालू डिवाइसों की संख्या तय थ्रेशोल्ड से नीचे आने के बाद हटा दिया जाता है.
FCM के रिलीज़ किए गए वर्शन
रिलीज़ किए गए FCM वर्शन की सूची, hardware/interfaces/compatibility_matrices
में देखी जा सकती है.
किसी खास Android रिलीज़ के साथ रिलीज़ किया गया FCM वर्शन देखने के लिए, Level.h
देखें.