Android 10-এ Android বিল্ড সিস্টেম ব্যবহার করে
odm পার্টিশন তৈরি করার সুবিধা অন্তর্ভুক্ত রয়েছে।
ODM পার্টিশন সম্পর্কে
অরিজিনাল ডিজাইন ম্যানুফ্যাকচারার (ODM) তাদের নির্দিষ্ট ডিভাইসের (তাদের বোর্ড) জন্য সিস্টেম-অন-চিপ (SoC) ভেন্ডর বোর্ড-সাপোর্ট প্যাকেজ (BSP) কাস্টমাইজ করে। এর ফলে বোর্ড-নির্দিষ্ট কম্পোনেন্ট, বোর্ড-নির্দিষ্ট ডেমোন বা হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ারে (HAL) নিজস্ব ফিচার প্রয়োগ করতে পারবেন। এছাড়াও, তারা SoC কম্পোনেন্ট রিপ্লেস বা কাস্টমাইজ করতে চাইতে পারেন।
Android-এর আগের ভার্সনে, এই ধরনের কাস্টমাইজেশনের ফলে একই SoC (বা আলাদা SoC থাকলেও একই
ফ্যামিলি) সহ ডিভাইসের জন্য একটি
ভেন্ডর ইমেজ ব্যবহার করা যেত না। Android 10 ও তার পরবর্তী যেকোনও ভার্সনে, কাস্টমাইজেশনের জন্য আপনি
আলাদা odm পার্টিশন ব্যবহার করতে পারবেন, যা আপনাকে
একাধিক হার্ডওয়্যার SKU-এর জন্য একটি ভেন্ডর ইমেজ ব্যবহার করতে দেয়।
প্রোডাক্ট ও ODM পার্টিশন ব্যবহার করুন
Android 9-এ
product
পার্টিশন তৈরি করার সুবিধা যোগ করা হয়েছে, যার ফলে বিভিন্ন product.img ইমেজের মাধ্যমে সরবরাহ করা একাধিক সফ্টওয়্যার SKU-এর জন্য একটি সিস্টেম ইমেজ ব্যবহার করা যায়।
product পার্টিশন সফ্টওয়্যার SKU-এর জন্য তৈরি করা হলেও, odm পার্টিশন হার্ডওয়্যার SKU-এর জন্য তৈরি করা হয়েছে।
ডেডিকেটেড প্রোডাক্ট ও ODM পার্টিশনের মাধ্যমে, আপনি system
পার্টিশন ব্যবহার করে একাধিক সফ্টওয়্যার SKU-এর মধ্যে শেয়ার করার জন্য জেনেরিক কোড হোস্ট করতে এবং
vendor পার্টিশন ব্যবহার করে প্রদত্ত SoC-এর উপর ভিত্তি করে
একাধিক ডিভাইসের মধ্যে শেয়ার করার জন্য SoC-নির্দিষ্ট BSP কোড হোস্ট করতে পারবেন।
আলাদা পার্টিশন ব্যবহার করার কিছু অসুবিধা আছে, যেমন ডিস্ক স্পেস ম্যানেজ করা কঠিন (যেমন, আপনাকে ভবিষ্যতের বৃদ্ধির জন্য সীমিত পরিমাণ স্পেস রিজার্ভ করতে হবে)। তবে, Android 10-এ ডায়নামিক পার্টিশন এর সুবিধা থাকার ফলে ডিস্ক সংক্রান্ত সমস্যা দূর হয় এবং ওভার-দ্য-এয়ার (OTA) আপডেটের সময় ডিভাইস আবার পার্টিশন করা সম্ভব হয়।
ODM কম্পোনেন্ট
odm পার্টিশনে নিম্নলিখিত ODM-নির্দিষ্ট কম্পোনেন্ট থাকে
(vendor পার্টিশনের মতো), যা নিম্নলিখিত টেবিলে তালিকাভুক্ত করা আছে।
| ODM-নির্দিষ্ট কম্পোনেন্ট | লোকেশন |
|---|---|
| লোড করা যায় এমন কার্নেল মডিউল (LKM) | /odm/lib/modules/*.ko |
| নেটিভ লাইব্রেরি | /odm/lib[64] |
| HAL | /odm/lib[64]/hw |
| SEPolicy | /odm/etc/selinux |
| VINTF object data | /odm/etc/vintf |
init.rc
ফাইল |
/odm/etc/init |
| সিস্টেম প্রপার্টি | /odm/build.prop |
| রানটাইম রিসোর্স ওভারলে (RRO) | /odm/overlay/*.apk |
| অ্যাপ | /odm/app/*.apk |
| Priv-apps | /odm/priv-app/*.apk |
| জাভা লাইব্রেরি | /odm/framework/*.jar |
| Android ফ্রেমওয়ার্ক সিস্টেম কনফিগারেশন | /odm/etc/sysconfig/* ও /odm/etc/permissions/* |
কোনও কাস্টম ছবি নেই
কাস্টম ইমেজ ব্যবহার করবেন না, কারণ এতে নিম্নলিখিত বিষয়গুলি কাজ করে না:
- নির্দিষ্ট টার্গেটে মডিউল ইনস্টল করা। কাস্টম ছবি, ছবিতে আর্টিফ্যাক্ট কপি করার সুবিধা দেয়, কিন্তু বিল্ড রুলের অংশ হিসেবে টার্গেট পার্টিশন উল্লেখ করে নির্দিষ্ট পার্টিশনে মডিউল ইনস্টল করতে পারে না।
- Soong.
custom_imagesSoong বিল্ড সিস্টেম ব্যবহার করে তৈরি করা যায় না। - OTA আপডেট। কাস্টম ছবিগুলি ফ্যাক্টরি ROM ছবি হিসেবে ব্যবহার করা হয়, যা OTA-এর মাধ্যমে আপডেট করা যায় না।
পার্টিশনের মধ্যে ABI বজায় রাখা
odm পার্টিশন হল vendor
পার্টিশনের এক্সটেনশন। অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) স্থিতিশীলতা বিবেচনা করার সময়, নিচে উল্লেখ করা
আর্কিটেকচার মাথায় রাখুন।
ছবি ১. পার্টিশনের মধ্যে ABI বজায় রাখা।
odmএবংvendorপার্টিশনের মধ্যে কোনও ABI স্টেবিলিটি নেই। দুটি পার্টিশনকেই একই সময়ে আপগ্রেড করতে হবে।odmএবংvendorপার্টিশন একে অপরের উপর নির্ভর করতে পারে, তবেvendorপার্টিশনকে অবশ্যইodmপার্টিশন ছাড়াই কাজ করতে হবে।odmওsystem-এর মধ্যে ABI এবংvendorওsystem-এর মধ্যে ABI একই।
product পার্টিশন ও
vendor বা odm পার্টিশনের মধ্যে সরাসরি ইন্টার্যাকশন অনুমোদিত
নয়। (এটি SEpolicy দ্বারা এনফোর্স করা হয়।)
ODM পার্টিশন প্রয়োগ করা
নতুন পার্টিশন প্রয়োগ করার আগে, সম্পর্কিত AOSP পরিবর্তন পর্যালোচনা করুন।
ODM পার্টিশন সেট-আপ করা
odm পার্টিশন সেট-আপ করতে, এইসব বিল্ড ফ্ল্যাগ যোগ করুন:
- নির্দিষ্ট পার্টিশন সাইজের জন্য
BOARD_ODMIMAGE_PARTITION_SIZE PRODUCT_USE_DYNAMIC_PARTITIONSএবংBOARD_ODMIMAGE_PARTITION_RESERVED_SIZEডায়নামিক পার্টিশন সাইজের জন্যBOARD_ODMIMAGE_FILE_SYSTEM_TYPEODM ইমেজের জন্য ব্যবহৃত ফাইল সিস্টেমের ধরন/odm/build.prop-এর জন্যPRODUCT_ODM_PROPERTIES,$(call inherit-product path/to/device.mk)-এর মধ্যে ব্যবহার করার জন্য, যেমনPRODUCT_ODM_PROPERTIES += product.abc=ok
ODM পার্টিশনে মডিউল ইনস্টল করা
odm পার্টিশনে মডিউল ইনস্টল করতে এই বিল্ড ফ্ল্যাগ ব্যবহার করুন:
Android.bp-এdevice_specific: trueAndroid.mk-এLOCAL_ODM_MODULE := true
'যাচাই করা বুট' চালু করা
ক্ষতিকর সফ্টওয়্যারকে odm পার্টিশন
পরিবর্তন করা থেকে আটকাতে, সেইসব পার্টিশনের জন্য Android Verified Boot
(AVB) চালু করুন (ঠিক যেভাবে আপনি vendor এবং
system পার্টিশনের জন্য করেন)।
AVB চালু করতে, বিল্ড ফ্ল্যাগ
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS যোগ করুন। ডায়নামিক পার্টিশনে AVB কনফিগার করার ব্যাপারে বিস্তারিত জানতে, AVB কনফিগারেশনে
পরিবর্তন দেখুন।
/odm-কে অন্য /vendor পার্টিশন হিসেবে গণ্য করা
সিস্টেম যাতে odm পার্টিশনকে
vendor পার্টিশন হিসেবে হ্যান্ডেল করে তা নিশ্চিত করতে, হার্ডওয়্যার-ভিত্তিক পার্টিশনের সেট (বর্তমানে
odm ও vendor) দিয়ে যেকোনও হার্ড-কোডেড vendor
রেফারেন্স পাল্টে দিন। প্ল্যাটফর্মে উল্লেখযোগ্য vendor
রেফারেন্স লোকেশনের মধ্যে
ডায়নামিক
লিঙ্কার,
প্যাকেজ
ম্যানেজার ও shell/libc অন্তর্ভুক্ত।