प्रॉडक्ट विभाजन

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

प्रॉडक्ट विभाजन के बारे में जानकारी

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

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

प्रॉडक्ट विभाजन और अनुमतियां

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

लेगसी /oem बनाम /प्रॉडक्ट

product विभाजन के आधार पर हमारे पास दो तरह के एट्रिब्यूट होते हैं प्रॉडक्ट के लिए इंटरफ़ेस पर नीति लागू करने का तरीका. साथ ही, product विभाजन अलग है ये सेगमेंट, लेगसी oem पार्टीशन के मुकाबले होते हैं:

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

इन वजहों से, Android 9, डिफ़ॉल्ट रूप से product पार्टिशन के साथ काम करता है पुराने वर्शन के साथ काम करने वाले, लेगसी oem वाले हिस्से को उन डिवाइसों पर इस्तेमाल किया जा सकेगा जिन पर निर्भर करता है: इसे. product पार्टिशन को system से अलग करने के लिए सेगमेंट, Android 11 पर काम करता है product लागू किया जा रहा है इंटरफ़ेस.

/प्रॉडक्ट के कॉम्पोनेंट

product पार्टीशन में ये कॉम्पोनेंट शामिल हैं:

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

कोई custom_images नहीं है

custom_images का इस्तेमाल नहीं किया जा सकता. वे इस फ़ॉलो किया जा रहा है:

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

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

Android 9 का product पार्टिशन, system विभाजन. नेटवर्क के बीच में कमज़ोर एबीआई है product और system विभाजन, इसलिए दोनों होने चाहिए उसी समय अपग्रेड किया जाता है और एबीआई, सिस्टम के SDK टूल पर आधारित होना चाहिए. अगर सिस्टम SDK टूल में, product और इसके बीच के सभी एपीआई प्लैटफ़ॉर्म शामिल नहीं हैं system, OEM को दो सेगमेंट बनाए जाते हैं.

product और system सेगमेंट में ये शामिल हो सकते हैं एक-दूसरे पर निर्भर रहती हैं. हालांकि, सामान्य सिस्टम इमेज (जीएसआई) product विभाजन के बिना ठीक से काम करना चाहिए.

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

काम न करने वाले इंटरफ़ेस पर, product पार्टिशन के लिए कोई डिपेंडेंसी नहीं होनी चाहिए vendor विभाजन. दोनों के बीच डायरेक्ट इंटरैक्शन product और vendor पार्टिशन वर्जित है. (यह एसई नीति से लागू किया जाता है.)

प्रॉडक्ट विभाजन लागू करना

नया प्रॉडक्ट विभाजन लागू करने से पहले, मिलते-जुलते एओएसपी में प्रॉडक्ट विभाजन में हुए बदलाव. इसके बाद, 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 वेरिफ़ाइड बूट (एवीबी) का इस्तेमाल करते हैं. vendor और system पार्टिशन). एवीबी को चालू करने के लिए, नीचे दिए गए बिल्ड फ़्लैग शामिल करें: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS.