एंड्रॉइड 10 में एंड्रॉइड बिल्ड सिस्टम का उपयोग करके odm
विभाजन बनाने के लिए समर्थन शामिल है।
ODM विभाजन के बारे में
मूल डिज़ाइन निर्माता (ओडीएम) अपने विशिष्ट उपकरणों (उनके बोर्ड) के लिए सिस्टम-ऑन-चिप (एसओसी) विक्रेता बोर्ड-सपोर्ट पैकेज (बीएसपी) को अनुकूलित करते हैं। यह उन्हें बोर्ड-विशिष्ट घटकों, बोर्ड-विशिष्ट डेमॉन, या हार्डवेयर एब्स्ट्रैक्शन लेयर्स (एचएएल) पर अपनी सुविधाओं के लिए कर्नेल मॉड्यूल लागू करने में सक्षम बनाता है। वे SoC घटकों को बदलना या अनुकूलित करना भी चाह सकते हैं।
निचले एंड्रॉइड रिलीज़ में, इस तरह के अनुकूलन ने एक ही SoC (या विभिन्न SoCs के साथ, लेकिन एक ही परिवार में) वाले उपकरणों के लिए एकल विक्रेता छवि के उपयोग को रोक दिया। एंड्रॉइड 10 और उच्चतर में, आप अनुकूलन के लिए एक अलग odm
विभाजन का उपयोग कर सकते हैं, जो आपको कई हार्डवेयर SKU के लिए एकल विक्रेता छवि का उपयोग करने में सक्षम बनाता है।
उत्पाद और ODM विभाजन का उपयोग करना
एंड्रॉइड 9 ने product
विभाजन के निर्माण के लिए समर्थन जोड़ा, जिससे विभिन्न product.img
छवियों द्वारा आपूर्ति किए गए एकाधिक सॉफ़्टवेयर SKU के लिए एकल सिस्टम छवि का उपयोग सक्षम हो गया। जबकि product
विभाजन सॉफ़्टवेयर SKU के लिए है, odm
विभाजन हार्डवेयर SKU के लिए है।
समर्पित उत्पाद और ODM विभाजन के साथ, आप कई सॉफ्टवेयर SKU के बीच साझा करने के लिए जेनेरिक कोड को होस्ट करने के लिए system
विभाजन का उपयोग कर सकते हैं, और दिए गए SoC के आधार पर कई उपकरणों के बीच साझा करने के लिए SoC-विशिष्ट बीएसपी कोड को होस्ट करने के लिए vendor
विभाजन का उपयोग कर सकते हैं।
अलग-अलग विभाजनों का उपयोग करने के नुकसान हैं, जैसे डिस्क स्थान को प्रबंधित करने में कठिनाई (उदाहरण के लिए, आपको भविष्य के विकास के लिए सीमित मात्रा में स्थान आरक्षित करना होगा)। हालाँकि, डायनामिक विभाजन के लिए एंड्रॉइड 10 समर्थन डिस्क समस्या को हटा देता है, और ओवर-द-एयर (ओटीए) अपडेट के दौरान डिवाइस को पुनः विभाजित करना संभव बनाता है।
ओडीएम घटक
odm
विभाजन में निम्नलिखित ODM-विशिष्ट घटक ( vendor
विभाजन के समान) शामिल हैं, जो निम्न तालिका में सूचीबद्ध हैं।
ODM-विशिष्ट घटक | जगह |
---|---|
लोड करने योग्य कर्नेल मॉड्यूल (एलकेएम) | /odm/lib/modules/*.ko |
देशी पुस्तकालय | /odm/lib[64] |
एचएएल | /odm/lib[64]/hw |
एसईपॉलिसी | /odm/etc/selinux |
VINTF ऑब्जेक्ट डेटा | /odm/etc/vintf |
init.rc फ़ाइलें | /odm/etc/init |
प्रणाली के गुण | /odm/build.prop |
रनटाइम संसाधन ओवरले (आरआरओ) | /odm/overlay/*.apk |
ऐप्स | /odm/app/*.apk |
निजी ऐप्स | /odm/priv-app/*.apk |
जावा पुस्तकालय | /odm/framework/*.jar |
एंड्रॉइड फ्रेमवर्क सिस्टम कॉन्फ़िगरेशन | /odm/etc/sysconfig/* और /odm/etc/permissions/* |
कोई कस्टम छवियाँ नहीं
कस्टम छवियों का उपयोग न करें क्योंकि उनमें निम्नलिखित के लिए समर्थन का अभाव है:
- किसी विशिष्ट लक्ष्य पर मॉड्यूल की स्थापना। कस्टम छवियां कलाकृतियों को एक छवि में कॉपी करने का समर्थन करती हैं, लेकिन बिल्ड नियम के एक भाग के रूप में लक्ष्य विभाजन को निर्दिष्ट करके एक मॉड्यूल को एक विशिष्ट विभाजन में स्थापित नहीं कर सकती हैं।
- जल्द ही.
custom_images
सूंग बिल्ड सिस्टम का उपयोग करके नहीं बनाया जा सकता है। - ओटीए अपडेट. कस्टम छवियों का उपयोग फ़ैक्टरी ROM छवियों के रूप में किया जाता है जिन्हें OTA-एड नहीं किया जा सकता है।
विभाजनों के बीच एबीआई को बनाए रखना
odm
विभाजन vendor
विभाजन का विस्तार है। एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) स्थिरता पर विचार करते समय, निम्नलिखित आर्किटेक्चर को ध्यान में रखें।
-
odm
औरvendor
विभाजन के बीच कोई ABI स्थिरता नहीं है। दोनों विभाजनों को एक ही समय में उन्नत किया जाना चाहिए। -
odm
औरvendor
विभाजन एक दूसरे पर निर्भर हो सकते हैं, लेकिनvendor
विभाजन कोodm
विभाजन के बिना ही काम करना चाहिए । -
odm
औरsystem
के बीच एबीआईvendor
औरsystem
के बीच एबीआई के समान है।
product
विभाजन और vendor
या odm
विभाजन के बीच सीधे संपर्क की अनुमति नहीं है । (यह SEpolicy द्वारा लागू किया गया है।)
ODM विभाजन लागू करना
नया विभाजन लागू करने से पहले, संबंधित AOSP परिवर्तनों की समीक्षा करें।
ODM विभाजन स्थापित करना
odm
विभाजन स्थापित करने के लिए, इन बिल्ड फ़्लैग को शामिल करें:
- निश्चित विभाजन आकार के लिए
BOARD_ODMIMAGE_PARTITION_SIZE
- गतिशील विभाजन आकार के लिए
PRODUCT_USE_DYNAMIC_PARTITIONS
औरBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
- ODM छवि के लिए उपयोग किया जाने वाला
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
फ़ाइल सिस्टम प्रकार -
$(call inherit-product path/to/device.mk)
के भीतर उपयोग के लिए/odm/build.prop
के लिएPRODUCT_ODM_PROPERTIES
, जैसा किPRODUCT_ODM_PROPERTIES += product.abc=ok
में है
ODM विभाजन में एक मॉड्यूल स्थापित करना
किसी मॉड्यूल को odm
विभाजन में स्थापित करने के लिए इन बिल्ड फ़्लैग का उपयोग करें:
-
device_specific: true
Android.bp
में सत्य -
LOCAL_ODM_MODULE := true
Android.mk
में सत्य
सत्यापित बूट सक्षम करना
दुर्भावनापूर्ण सॉफ़्टवेयर को odm
विभाजनों के साथ छेड़छाड़ करने से रोकने के लिए, उन विभाजनों के लिए Android सत्यापित बूट (AVB) सक्षम करें (ठीक वैसे ही जैसे आप vendor
और system
विभाजनों के लिए करते हैं)।
AVB को सक्षम करने के लिए, बिल्ड फ़्लैग BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
शामिल करें। गतिशील विभाजन पर AVB को कॉन्फ़िगर करने के विवरण के लिए, AVB कॉन्फ़िगरेशन परिवर्तन देखें।
/odm को दूसरे /विक्रेता विभाजन के रूप में मानना
यह सुनिश्चित करने के लिए कि सिस्टम odm
विभाजन को vendor
विभाजन के रूप में संभालता है, किसी भी हार्ड-कोडित vendor
संदर्भ को हार्डवेयर-उन्मुख विभाजन (वर्तमान में odm
और vendor
) के सेट से बदलें। प्लेटफ़ॉर्म में उल्लेखनीय vendor
संदर्भ स्थानों में डायनेमिक लिंकर , पैकेज मैनेजर और shell/libc
शामिल हैं।