ओडीएम विभाजन

एंड्रॉइड 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 विभाजन का विस्तार है। एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) स्थिरता पर विचार करते समय, निम्नलिखित आर्किटेक्चर को ध्यान में रखें।

विभाजनों के बीच एबीआई को बनाए रखना
चित्र 1. विभाजनों के बीच एबीआई को बनाए रखना
  • 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 शामिल हैं।