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 |
|
product |
|
product (लागू किए गए इंटरफ़ेस) |
|
इन वजहों से, 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
.