ओडीएम के बंटवारे की सुविधा

Android 10 में यह सुविधा शामिल है Android बिल्ड सिस्टम का इस्तेमाल करने वाले odm पार्टिशन.

ओडीएम के बंटवारे के बारे में जानकारी

ओरिजनल डिज़ाइन मैन्युफ़ैक्चरर (ओडीएम), सिस्टम-ऑन-चिप (SoC) वेंडर को पसंद के मुताबिक बनाते हैं अपने खास डिवाइस (अपने बोर्ड) के लिए बोर्ड-सहायता पैकेज (बीएसपी). यह उन्हें बोर्ड के खास कॉम्पोनेंट के लिए कर्नेल मॉड्यूल लागू करने में मदद करता है, बोर्ड के हिसाब से डीमन या हार्डवेयर ऐब्स्ट्रैक्ट लेयर पर उनकी खुद की सुविधाएं (एचएएल). यह भी हो सकता है कि वे SoC कॉम्पोनेंट को बदलना चाहें या उन्हें पसंद के मुताबिक बनाना चाहें.

Android के पहले वाले वर्शन में, इस तरह की सेटिंग की वजह से एक ही SoC (या अलग-अलग SoC वाले) डिवाइसों के लिए वेंडर इमेज एक ही परिवार के सदस्य हैं). Android 10 और उसके बाद वाले वर्शन में, इसे पसंद के मुताबिक बनाने के लिए, odm को अलग से बांटें. इससे आपको ये काम करने में मदद मिलती है कई हार्डवेयर SKU के लिए एक वेंडर इमेज का इस्तेमाल करता है.

प्रॉडक्ट और ODM विभाजनों का इस्तेमाल करें

Android 9 वाले इस वर्शन में, यह सुविधा जोड़ी गई product पार्टिशन, जिसकी मदद से कई सॉफ़्टवेयर के लिए एक सिस्टम इमेज का इस्तेमाल किया जा सकता है SKU की अलग-अलग product.img इमेज ने उपलब्ध कराई हैं. हालांकि product पार्टिशन, सॉफ़्टवेयर SKU के लिए है. odm पार्टिशन, हार्डवेयर SKU के लिए है.

खास तौर पर बनाए गए प्रॉडक्ट और ODM सेगमेंट के साथ, system का इस्तेमाल किया जा सकता है कई सॉफ़्टवेयर SKU के बीच शेयर करने के लिए, जेनरिक कोड को होस्ट करने के लिए पार्टीशन और SoC के लिए बनाए गए बीएसपी कोड को होस्ट करने के लिए, vendor का बंटवारा किया गया कई डिवाइस हो सकते हैं.

अलग-अलग सेगमेंट का इस्तेमाल करने के कुछ नुकसान हैं, जैसे कि इन सेगमेंट को मैनेज करने में समस्या डिस्क में बचा स्टोरेज. उदाहरण के लिए, आपको आने वाले समय के लिए सीमित जगह रिज़र्व करनी होगी बढ़ोतरी). हालांकि, Android 10 के लिए डाइनैमिक पार्टीशन इससे डिस्क में आ रही समस्या को हटा दिया जाता है और प्रोसेस के दौरान डिवाइस को फिर से बांटा जाता है ओवर-द-एयर (ओटीए) अपडेट हो सकता है.

ओडीएम कॉम्पोनेंट

odm पार्टिशन में ये ODM खास कॉम्पोनेंट होते हैं (vendor पार्टीशन की तरह), इस टेबल में दिया गया है.

ओडीएम के लिए खास कॉम्पोनेंट जगह की जानकारी
लोड किए जा सकने वाले कर्नेल मॉड्यूल (एलकेएम) /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
Java लाइब्रेरी /odm/framework/*.jar
Android फ़्रेमवर्क के सिस्टम से जुड़े कॉन्फ़िगरेशन /odm/etc/sysconfig/* और /odm/etc/permissions/*

कोई कस्टम इमेज नहीं है

इस्तेमाल न करें पसंद के मुताबिक इमेज, क्योंकि वे इन चीज़ों के लिए काम नहीं करतीं:

  • किसी खास टारगेट के लिए मॉड्यूल इंस्टॉल करना. कस्टम इमेज के लिए, आर्टफ़ैक्ट को इमेज में कॉपी किया जा सकता है. हालांकि, ऐसा नहीं किया जा सकता टारगेट पार्टिशन तय करके किसी खास पार्टीशन में मॉड्यूल इंस्टॉल करना बनाने के नियम का हिस्सा है.
  • सूर्यास्त. custom_images का इस्तेमाल करके नहीं बनाया जा सकता सूंग बिल्ड सिस्टम इस्तेमाल किया.
  • ओटीए अपडेट. पसंद के मुताबिक बनाई गई इमेज का इस्तेमाल इस तरह किया गया है फ़ैक्ट्री ROM ऐसी इमेज जिन्हें ओटीए-एड नहीं किया जा सकता.

सेगमेंट के बीच एबीआई को बनाए रखना

odm विभाजन, vendor का ही एक एक्सटेंशन है विभाजन. ऐप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) की स्थिरता को ध्यान में रखते हुए, को ध्यान में रखें.

सेगमेंट के बीच एबीआई को बनाए रखना

पहला डायग्राम. सेगमेंट के बीच एबीआई को बनाए रखना.

  • odm और के बीच एबीआई की कोई स्थिरता नहीं है vendor विभाजन. दोनों सेगमेंट को एक ही साथ अपग्रेड करना ज़रूरी है समय.
  • odm और vendor सेगमेंट, इन पर निर्भर कर सकते हैं एक-दूसरे से जुड़े हुए हैं, लेकिन vendor वाला बंटवारा ज़रूरी है वह भी odm पार्टीशन के बिना.
  • odm और system के बीच का एबीआई, इसके जैसा है एबीआई, vendor और system के बीच.

product विभाजन और vendor या odm विभाजन नहीं है अनुमति है. (यह एसई नीति से लागू किया जाता है.)

ओडीएम पार्टिशन लागू करना

नया विभाजन लागू करने से पहले, संबंधित एओएसपी बदलाव के बारे में ज़्यादा जानें.

ओडीएम पार्टिशन सेट अप करना

odm पार्टिशन सेट अप करने के लिए, इन बिल्ड फ़्लैग को शामिल करें:

  • पार्टिशन के तय साइज़ के लिए BOARD_ODMIMAGE_PARTITION_SIZE
  • PRODUCT_USE_DYNAMIC_PARTITIONS और BOARD_ODMIMAGE_PARTITION_RESERVED_SIZE डाइनैमिक विभाजन साइज़
  • इसके लिए, BOARD_ODMIMAGE_FILE_SYSTEM_TYPE फ़ाइल सिस्टम टाइप का इस्तेमाल किया गया ODM इमेज
  • /odm/build.prop के लिए PRODUCT_ODM_PROPERTIES $(call inherit-product path/to/device.mk) के अंदर इस्तेमाल करें, जैसे कि PRODUCT_ODM_PROPERTIES += product.abc=ok

ODM पार्टीशन में मॉड्यूल इंस्टॉल करना

किसी odm पार्टीशन में मॉड्यूल इंस्टॉल करने के लिए, इन बिल्ड फ़्लैग का इस्तेमाल करें:

  • device_specific: true, Android.bp में है
  • LOCAL_ODM_MODULE := true, Android.mk में है

वेरिफ़ाइड बूट की सुविधा चालू करें

नुकसान पहुंचाने वाले सॉफ़्टवेयर को odm पार्टीशन के साथ छेड़छाड़ करने से रोकने के लिए, Android वेरिफ़ाइड बूट की सुविधा चालू करें (AVB) का इस्तेमाल किया जाएगा (ठीक वैसे ही जैसे आप vendor और system विभाजन).

एवीबी को चालू करने के लिए, बिल्ड फ़्लैग को शामिल करें BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS. कॉन्फ़िगर करने के बारे में जानकारी डाइनैमिक पार्टीशन पर एवीबी, देखें एवीबी कॉन्फ़िगरेशन बदलाव के बारे में ज़्यादा जानें.

/odm को एक और /वेंडर विभाजन मानें

यह पक्का करने के लिए कि सिस्टम odm विभाजन को vendor पार्टिशन, किसी भी हार्ड कोड किए गए vendor को बदल दें हार्डवेयर-आधारित पार्टिशन के सेट के साथ संदर्भ (वर्तमान में odm और vendor). मशहूर vendor इस प्लैटफ़ॉर्म पर रेफ़रंस की जगहों में ये शामिल हैं डाइनैमिक लिंकर, पैकेज मैनेजर, और shell/libc.