পণ্য পার্টিশন

Android 9 এবং উচ্চতর Android বিল্ড সিস্টেম ব্যবহার করে product পার্টিশন তৈরির জন্য সমর্থন অন্তর্ভুক্ত করে। পূর্বে, Android 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
  • আপডেটযোগ্য নয়; সাধারণত কারখানায় একবার ফ্ল্যাশ হয়।
  • ব্র্যান্ডিং এবং রঙের মতো ছোট বৈচিত্রের জন্য নির্মিত। বিভিন্ন oem পার্টিশন বিষয়বস্তু থাকার মানে এই নয় যে পণ্য সফ্টওয়্যার আলাদা।
  • system পার্টিশন oem পার্টিশনের উপর নির্ভর করে না। (এটি শুধুমাত্র তখনই oem পার্টিশন ব্যবহার করে যখন সেখানে একটি নির্দিষ্ট ফাইল পাওয়া যায়)।
  • system পার্টিশনে শুধুমাত্র পাবলিক API ব্যবহার করে।
product
  • আপডেটযোগ্য
  • সিস্টেম চিত্রের সাথে মিলিত (তারা একসাথে আপডেট হয়)
  • পণ্য বা পণ্য পরিবার প্রতি নির্মিত.
  • সিস্টেম পার্টিশন product পার্টিশনের উপর নির্ভর করতে পারে।
  • অ-পাবলিক API ব্যবহার করতে পারে যেহেতু সেগুলি একই সাথে আপডেট করা হয়৷
product (প্রয়োগকৃত ইন্টারফেস)
  • আপডেটযোগ্য
  • সিস্টেম ইমেজ সঙ্গে decoupled.
  • পণ্য বা পণ্য পরিবার প্রতি নির্মিত.
  • system পার্টিশন product পার্টিশনের উপর নির্ভর করে না।
  • লুকানো API ব্যবহার করতে পারে না, তবে system পার্টিশনে শুধুমাত্র সর্বজনীন এবং সিস্টেম API ব্যবহার করে।

এই কারণে, 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: Android.bpproduct_specific: true
  • LOCAL_PRODUCT_MODULE := true Android.mk এ সত্য

যাচাইকৃত বুট সক্ষম করা হচ্ছে

দূষিত সফ্টওয়্যার দ্বারা product বিভাজন রোধ করতে, সেই পার্টিশনের জন্য অ্যান্ড্রয়েড ভেরিফাইড বুট (AVB) সক্ষম করুন (যেমন আপনি vendor এবং system পার্টিশনের জন্য করেন)। AVB সক্ষম করতে, নিম্নলিখিত বিল্ড ফ্ল্যাগগুলি অন্তর্ভুক্ত করুন: BOARD_AVB_PRODUCT_ADD_HASHTREE_FOOTER_ARGS