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

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

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

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

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

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

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

विरासत / OEM बनाम / उत्पाद

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

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

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

/उत्पाद घटक

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

  • उत्पाद-विशिष्ट सिस्टम गुण ( /product/build.prop )
  • उत्पाद-विशिष्ट आरआरओ ( /product/overlay/*.apk )
  • उत्पाद-विशिष्ट ऐप्स ( /product/app/*.apk )
  • उत्पाद-विशिष्ट निजी-ऐप्स ( /product/priv-app/*.apk )
  • उत्पाद-विशिष्ट पुस्तकालय ( /product/lib/* )
  • उत्पाद-विशिष्ट जावा पुस्तकालय ( /product/framework/*.jar )
  • उत्पाद-विशिष्ट Android फ्रेमवर्क सिस्टम कॉन्फिग ( /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 विभाजन के बीच एक कमजोर ABI है, इसलिए दोनों को एक ही समय में अपग्रेड किया जाना चाहिए, और ABI को सिस्टम SDK-आधारित होना चाहिए। यदि सिस्टम एसडीके 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