उत्पाद विभाजन

एंड्रॉइड 9 और उच्चतर में एंड्रॉइड बिल्ड सिस्टम का उपयोग करके product विभाजन बनाने के लिए समर्थन शामिल है। पहले, एंड्रॉइड 8.x ने एंड्रॉइड system से निर्मित ओईएम-विशिष्ट घटकों के लिए स्थान समर्पित किए बिना एसओसी-विशिष्ट घटकों को सिस्टम विभाजन से vendor विभाजन में अलग करने को लागू किया था। एंड्रॉइड 9 और उच्चतर अतिरिक्त अनुमतियाँ और श्वेतसूची सुविधाएँ प्रदान करता है जो विभिन्न विभाजनों पर निजी-ऐप्स पर लागू होती हैं।

उत्पाद विभाजन के बारे में

कई ओईएम अपनी सुविधाओं के साथ-साथ वाहक आवश्यकताओं को लागू करने के लिए एओएसपी सिस्टम छवि को अनुकूलित करते हैं। हालाँकि, ऐसे अनुकूलन एकाधिक सॉफ़्टवेयर SKU के लिए एकल सिस्टम छवि का उपयोग करना असंभव बना देते हैं। अनुकूलन का समर्थन करने के लिए प्रत्येक छवि अलग-अलग होनी चाहिए, जैसे कि अलग-अलग स्थानों या वाहकों के साथ। अनुकूलन को शामिल करने के लिए एक अलग product विभाजन का उपयोग करने से एकाधिक सॉफ़्टवेयर SKU के लिए एकल सिस्टम छवि का उपयोग करना संभव हो जाता है। ( system विभाजन सामान्य कोड को होस्ट करता है जिसे कई सॉफ़्टवेयर SKU के बीच साझा किया जा सकता है)। vendor विभाजन SoC-विशिष्ट बीएसपी कोड को होस्ट करना जारी रखता है जिसे दिए गए SoC के आधार पर कई उपकरणों के बीच साझा किया जा सकता है।

अलग-अलग विभाजनों का उपयोग करने के कुछ नुकसान हैं, जैसे डिस्क स्थान का प्रबंधन करना (भविष्य के विकास के लिए सीमित मात्रा में स्थान आरक्षित रहना चाहिए) और विभाजनों के बीच एक स्थिर एप्लिकेशन बाइनरी इंटरफ़ेस (एबीआई) बनाए रखनाproduct विभाजन का उपयोग करने का निर्णय लेने से पहले, अपने अद्वितीय एओएसपी कार्यान्वयन और संभावित शमन रणनीति पर विचार करने के लिए समय लें (जैसे ओवर-द-एयर (ओटीए) अपडेट के दौरान डिवाइस को दोबारा विभाजित करना, जो Google द्वारा नहीं किया जाता है लेकिन कुछ ओईएम द्वारा किया जाता है ). डायनामिक विभाजन इसके लिए एक अच्छा समाधान होगा।

उत्पाद विभाजन और अनुमतियाँ

एंड्रॉइड 9 और उच्चतर में, अनुमतियों और श्वेतसूची प्रक्रिया में बदलाव से यह प्रभावित होता है कि आप अपने `उत्पाद` विभाजन पर निजी-ऐप्स अनुमतियां कैसे देते हैं। permissions.xml फ़ाइल को प्राइवेट-ऐप्स के समान विभाजन में रहना चाहिए। प्राइवेट-ऐप्स के लिए system विभाजन में एक permissions.xml फ़ाइल रखने से product विभाजन में प्राइवेट-ऐप्स के लिए उन अनुमतियों का विस्तार नहीं होता है, भले ही पूर्व बाद वाले का विस्तार हो। अनुमतियों और श्वेतसूची प्रक्रियाओं के विवरण के लिए, विशेषाधिकार प्राप्त अनुमति अनुमति सूची देखें।

विरासत/ओईएम बनाम/उत्पाद

उत्पाद इंटरफ़ेस प्रवर्तन के आधार पर हमारे पास product विभाजन की दो प्रकार की विशेषताएँ हैं। साथ ही, product विभाजन पुराने oem विभाजन से भिन्न है:

PARTITION गुण
oem
  • अद्यतन करने योग्य नहीं; आमतौर पर कारखाने में एक बार फ्लैश होता है।
  • ब्रांडिंग और रंग जैसे छोटे बदलावों के अनुसार निर्मित। अलग-अलग oem विभाजन सामग्री होने का मतलब यह नहीं है कि उत्पाद सॉफ़्टवेयर अलग है।
  • system विभाजन oem विभाजन पर निर्भर नहीं करता है. (यह oem विभाजन का उपयोग केवल तभी करता है जब कोई विशिष्ट फ़ाइल वहां पाई जाती है)।
  • system विभाजन पर केवल सार्वजनिक एपीआई का उपयोग करता है।
product
  • अपडेट किए
  • सिस्टम छवि के साथ युग्मित (वे एक साथ अपडेट होते हैं)
  • प्रति उत्पाद या उत्पाद परिवारों के अनुसार निर्मित।
  • सिस्टम विभाजन product विभाजन पर निर्भर हो सकता है।
  • गैर-सार्वजनिक एपीआई का उपयोग कर सकते हैं क्योंकि वे एक साथ अपडेट किए जाते हैं।
product (प्रबलित इंटरफ़ेस)
  • अपडेट किए
  • सिस्टम छवि के साथ वियुग्मित.
  • प्रति उत्पाद या उत्पाद परिवारों के अनुसार निर्मित।
  • system विभाजन product विभाजन पर निर्भर नहीं करता है.
  • छिपे हुए एपीआई का उपयोग नहीं किया जा सकता है, लेकिन system विभाजन पर केवल सार्वजनिक और सिस्टम एपीआई का उपयोग किया जाता है।

इन कारणों से, एंड्रॉइड 9 product विभाजन का समर्थन करता है, जबकि उस पर निर्भर उपकरणों के लिए पुराने oem विभाजन का समर्थन बरकरार रखता है। system विभाजन से product विभाजन को अलग करने के लिए, एंड्रॉइड 11 product इंटरफेस लागू करने का समर्थन करता है।

/उत्पाद घटक

product विभाजन में निम्नलिखित घटक शामिल हैं:

  • उत्पाद-विशिष्ट सिस्टम गुण ( /product/build.prop )
  • उत्पाद-विशिष्ट आरआरओ ( /product/overlay/*.apk )
  • उत्पाद-विशिष्ट ऐप्स ( /product/app/*.apk )
  • उत्पाद-विशिष्ट निजी-ऐप्स ( /product/priv-app/*.apk )
  • उत्पाद-विशिष्ट पुस्तकालय ( /product/lib/* )
  • उत्पाद-विशिष्ट जावा लाइब्रेरी ( /product/framework/*.jar )
  • उत्पाद-विशिष्ट एंड्रॉइड फ्रेमवर्क सिस्टम कॉन्फ़िगरेशन ( /product/etc/sysconfig/* और /product/etc/permissions/* )
  • उत्पाद-विशिष्ट मीडिया फ़ाइलें ( /product/media/audio/* )
  • उत्पाद-विशिष्ट bootanimation फ़ाइलें

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

आप custom_images उपयोग नहीं कर सकते. उनके पास निम्नलिखित के लिए समर्थन का अभाव है:

  • किसी विशिष्ट लक्ष्य में मॉड्यूल स्थापित करनाcustom_images एक छवि में कलाकृतियों की प्रतिलिपि बनाने का समर्थन करते हैं लेकिन बिल्ड नियम के एक भाग के रूप में इसके लक्ष्य विभाजन को निर्दिष्ट करके एक मॉड्यूल को एक विशिष्ट विभाजन में स्थापित नहीं कर सकते हैं।
  • जल्द ही समर्थन . custom_images सूंग बिल्ड सिस्टम का उपयोग करके नहीं बनाया जा सकता है।
  • ओटीए अद्यतन समर्थनcustom_images का उपयोग फ़ैक्टरी ROM छवियों के रूप में किया जाता है जो OTA अपडेट प्राप्त नहीं कर सकते हैं।

विभाजनों के बीच एबीआई को बनाए रखना

एंड्रॉइड 9 में product विभाजन system विभाजन का विस्तार है। product और system विभाजन के बीच एक कमजोर एबीआई है, इसलिए दोनों को एक ही समय में अपग्रेड किया जाना चाहिए, और एबीआई सिस्टम एसडीके-आधारित होना चाहिए। यदि सिस्टम एसडीके product और system के बीच सभी एपीआई सतहों को कवर नहीं करता है, तो ओईएम को दो विभाजनों के बीच अपना स्वयं का एबीआई बनाए रखना होगा।

product और system विभाजन एक दूसरे पर निर्भर हो सकते हैं। हालाँकि, जेनेरिक सिस्टम इमेज (जीएसआई) के साथ परीक्षण product विभाजन के बिना ठीक से काम करना चाहिए।

जब product इंटरफ़ेस लागू किया जाता है, तो product विभाजन को system विभाजन से अलग कर दिया जाता है। product विभाजन system विभाजन से केवल अनुमत इंटरफ़ेस का उपयोग करता है।

product विभाजन में vendor विभाजन पर अस्थिर इंटरफ़ेस के माध्यम से कोई निर्भरता नहीं होनी चाहिए। product और vendor विभाजन के बीच सीधा संपर्क निषिद्ध है। (यह SEpolicy द्वारा लागू किया गया है।)

उत्पाद विभाजन लागू करना

नए उत्पाद विभाजन को लागू करने से पहले, AOSP में संबंधित उत्पाद विभाजन परिवर्तनों की समीक्षा करें। फिर, product स्थापित करने के लिए, निम्नलिखित बोर्ड या उत्पाद-निर्माण झंडे शामिल करें:

  • BOARD_USES_PRODUCTIMAGE
  • BOARD_PRODUCTIMAGE_PARTITION_SIZE
  • BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE
  • /product/build.prop के लिए PRODUCT_PRODUCT_PROPERTIES । ये $(call inherit-product path/to/device.mk) के भीतर होने चाहिए, जैसा PRODUCT_PRODUCT_PROPERTIES += product.abc=ok में है।

उत्पाद विभाजन में एक मॉड्यूल स्थापित करना

product विभाजन में मॉड्यूल स्थापित करने के लिए निम्नलिखित बिल्ड फ़्लैग का उपयोग करें।

  • product_specific: true Android.bp में सत्य
  • LOCAL_PRODUCT_MODULE := true Android.mk में सत्य

सत्यापित बूट सक्षम करना

product विभाजन को दुर्भावनापूर्ण सॉफ़्टवेयर द्वारा छेड़छाड़ से बचाने के लिए, उस विभाजन के लिए Android सत्यापित बूट (AVB) सक्षम करें (जैसा कि आप vendor और system विभाजन के लिए करते हैं)। AVB को सक्षम करने के लिए, निम्नलिखित बिल्ड फ़्लैग शामिल करें: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS