Android 9 এবং উচ্চতর Android বিল্ড সিস্টেম ব্যবহার করে product পার্টিশন তৈরির জন্য সমর্থন অন্তর্ভুক্ত করে। পূর্বে, অ্যান্ড্রয়েড 8.x অ্যান্ড্রয়েড বিল্ড সিস্টেম থেকে তৈরি OEM-নির্দিষ্ট উপাদানগুলির জন্য স্থান নিবেদন না করেই system পার্টিশন থেকে vendor পার্টিশনে SoC-নির্দিষ্ট উপাদানগুলির পৃথকীকরণ কার্যকর করেছিল। অ্যান্ড্রয়েড 9 এবং উচ্চতর অতিরিক্ত অনুমতি এবং হোয়াইটলিস্টিং বৈশিষ্ট্যগুলি প্রদান করে যা বিভিন্ন পার্টিশনে প্রাইভ-অ্যাপগুলিতে প্রযোজ্য।
পণ্য পার্টিশন সম্পর্কে
অনেক OEM তাদের নিজস্ব বৈশিষ্ট্য, সেইসাথে ক্যারিয়ারের প্রয়োজনীয়তা বাস্তবায়নের জন্য AOSP সিস্টেমের চিত্র কাস্টমাইজ করে। যাইহোক, এই ধরনের কাস্টমাইজেশন একাধিক সফ্টওয়্যার SKU-এর জন্য একটি একক সিস্টেম চিত্র ব্যবহার করা অসম্ভব করে তোলে। কাস্টমাইজেশন সমর্থন করার জন্য প্রতিটি ছবি আলাদা হতে হবে, যেমন বিভিন্ন লোকেল বা ক্যারিয়ারের সাথে। কাস্টমাইজেশন ধারণ করার জন্য একটি পৃথক product পার্টিশন ব্যবহার করা একাধিক সফ্টওয়্যার SKU-এর জন্য একটি একক সিস্টেম চিত্র ব্যবহার করা সম্ভব করে তোলে। ( system পার্টিশনটি জেনেরিক কোড হোস্ট করে যা অনেক সফ্টওয়্যার SKU-এর মধ্যে ভাগ করা যায়)। vendor পার্টিশনটি SoC-নির্দিষ্ট BSP কোড হোস্ট করতে থাকে যা প্রদত্ত SoC-এর উপর ভিত্তি করে একাধিক ডিভাইসের মধ্যে ভাগ করা যেতে পারে।
পৃথক পার্টিশন ব্যবহার করার কিছু অসুবিধা রয়েছে, যেমন ডিস্কের স্থান পরিচালনা করা (ভবিষ্যৎ বৃদ্ধির জন্য একটি সীমিত পরিমাণ স্থান সংরক্ষিত থাকতে হবে) এবং পার্টিশনগুলির মধ্যে একটি স্থিতিশীল অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) বজায় রাখা । product পার্টিশন ব্যবহার করার সিদ্ধান্ত নেওয়ার আগে, আপনার অনন্য AOSP বাস্তবায়ন এবং সম্ভাব্য প্রশমন কৌশলগুলি বিবেচনা করার জন্য সময় নিন (যেমন একটি ওভার-দ্য-এয়ার (OTA) আপডেটের সময় একটি ডিভাইস পুনরায় বিভাজন করা, যা Google দ্বারা করা হয় না কিন্তু কিছু OEM দ্বারা করা হয় ) ডাইনামিক পার্টিশনিং এর জন্য একটি ভাল সমাধান।
পণ্য পার্টিশন এবং অনুমতি
অ্যান্ড্রয়েড 9 এবং উচ্চতর সংস্করণে, অনুমতি এবং হোয়াইটলিস্টিং প্রক্রিয়ার একটি পরিবর্তন প্রভাবিত করে যে আপনি কীভাবে আপনার 'পণ্য' পার্টিশনগুলিতে ব্যক্তিগত-অ্যাপগুলিকে অনুমতি দেন৷ permissions.xml ফাইলটি অবশ্যই প্রাইভ-অ্যাপগুলির মতো একই পার্টিশনে থাকতে হবে। priv-apps-এর জন্য system পার্টিশনে permissions.xml ফাইল রাখলে product পার্টিশনে প্রাইভেট-অ্যাপগুলিতে সেই অনুমতিগুলি প্রসারিত হয় না, যদিও আগেরটি পরেরটির একটি এক্সটেনশন। অনুমতি এবং হোয়াইটলিস্টিং প্রক্রিয়ার বিস্তারিত জানার জন্য, প্রিভিলেজড পারমিশন অ্যালোলিস্টিং দেখুন।
উত্তরাধিকার/oem বনাম/পণ্য
পণ্য ইন্টারফেস প্রয়োগের উপর নির্ভর করে আমাদের কাছে product পার্টিশনের দুটি ধরণের বৈশিষ্ট্য রয়েছে। এছাড়াও, product পার্টিশনটি লিগ্যাসি oem পার্টিশন থেকে আলাদা:
| বিভাজন | গুণাবলী |
|---|---|
oem |
|
product |
|
product (প্রয়োগকৃত ইন্টারফেস) |
|
এই কারণে, Android 9 product পার্টিশনকে সমর্থন করে যখন এটির উপর নির্ভরশীল ডিভাইসগুলির জন্য উত্তরাধিকার oem পার্টিশনের সমর্থন বজায় রাখে। system পার্টিশন থেকে product পার্টিশনকে ডিকপল করার জন্য, Android 11 product ইন্টারফেস এনফোর্সিং সমর্থন করে।
/ পণ্য উপাদান
product পার্টিশনে নিম্নলিখিত উপাদান রয়েছে:
- পণ্য-নির্দিষ্ট সিস্টেম বৈশিষ্ট্য (
/product/build.prop) - পণ্য-নির্দিষ্ট RROs (
/product/overlay/*.apk) - পণ্য-নির্দিষ্ট অ্যাপ্লিকেশন (
/product/app/*.apk) - পণ্য-নির্দিষ্ট priv-apps (
/product/priv-app/*.apk) - পণ্য-নির্দিষ্ট লাইব্রেরি (
/product/lib/*) - পণ্য-নির্দিষ্ট জাভা লাইব্রেরি (
/product/framework/*.jar) - পণ্য-নির্দিষ্ট অ্যান্ড্রয়েড ফ্রেমওয়ার্ক সিস্টেম কনফিগারেশন (
/product/etc/sysconfig/*এবং/product/etc/permissions/*) - পণ্য-নির্দিষ্ট মিডিয়া ফাইল (
/product/media/audio/*) - পণ্য-নির্দিষ্ট
bootanimationফাইল
কোনো কাস্টম_ইমেজ নেই
আপনি custom_images ব্যবহার করতে পারবেন না। তাদের নিম্নলিখিতগুলির জন্য সমর্থনের অভাব রয়েছে:
- একটি নির্দিষ্ট লক্ষ্যে মডিউল ইনস্টল করা ।
custom_imagesএকটি ইমেজে আর্টিফ্যাক্ট অনুলিপি করা সমর্থন করে কিন্তু একটি নির্দিষ্ট পার্টিশনে একটি মডিউল ইনস্টল করতে পারে না একটি বিল্ড নিয়মের অংশ হিসাবে এর লক্ষ্য পার্টিশন নির্দিষ্ট করে। - Soong সমর্থন . সুং বিল্ড সিস্টেম ব্যবহার করে
custom_imagesতৈরি করা যাবে না। - OTA আপডেট সমর্থন ।
custom_imagesফ্যাক্টরি রম ইমেজ হিসাবে ব্যবহার করা হয় যা OTA আপডেট গ্রহণ করতে পারে না।
পার্টিশনের মধ্যে ABI বজায় রাখুন
অ্যান্ড্রয়েড 9-এর product পার্টিশনটি system পার্টিশনের একটি এক্সটেনশন। product এবং system পার্টিশনের মধ্যে একটি দুর্বল ABI আছে, তাই উভয়কেই একই সময়ে আপগ্রেড করতে হবে এবং ABI সিস্টেম SDK-ভিত্তিক হওয়া উচিত। যদি সিস্টেম SDK product এবং system মধ্যে সমস্ত API সারফেস কভার না করে, তাহলে OEM-কে অবশ্যই দুটি পার্টিশনের মধ্যে তাদের নিজস্ব ABI বজায় রাখতে হবে।
product এবং system পার্টিশন একে অপরের উপর নির্ভরতা থাকতে পারে। যাইহোক, জেনেরিক সিস্টেম ইমেজ (GSI) পরীক্ষাগুলি অবশ্যই product বিভাজন ছাড়াই সঠিকভাবে কাজ করবে।
যখন product ইন্টারফেস প্রয়োগ করা হয়, product পার্টিশন system পার্টিশনের সাথে ডিকপল করা হয়। product পার্টিশন system পার্টিশন থেকে শুধুমাত্র অনুমোদিত ইন্টারফেস ব্যবহার করে।
vendor পার্টিশনে অস্থির ইন্টারফেসের মাধ্যমে product পার্টিশনের কোনো নির্ভরতা থাকা উচিত নয়। product এবং vendor পার্টিশনের মধ্যে সরাসরি মিথস্ক্রিয়া নিষিদ্ধ। (এটি এসইপলিসি দ্বারা প্রয়োগ করা হয়।)
পণ্য পার্টিশন বাস্তবায়ন
একটি নতুন পণ্য পার্টিশন বাস্তবায়নের আগে, 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: trueAndroid.bpএ সত্য -
LOCAL_PRODUCT_MODULE := trueAndroid.mkএ সত্য
যাচাইকৃত বুট সক্ষম করুন
দূষিত সফ্টওয়্যার দ্বারা product বিভাজন রোধ করতে, সেই পার্টিশনের জন্য অ্যান্ড্রয়েড ভেরিফাইড বুট (AVB) সক্ষম করুন (যেমন আপনি vendor এবং system পার্টিশনের জন্য করেন)। AVB সক্ষম করতে, নিম্নলিখিত বিল্ড ফ্ল্যাগগুলি অন্তর্ভুক্ত করুন: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS ।