নতুন ডিভাইস ডেভেলপ ও রিলিজ করার সময়, ভেন্ডররা ডিভাইস ম্যানিফেস্টে (DM) টার্গেট FCM ভার্সন সংজ্ঞায়িত ও ঘোষণা করতে পারেন। পুরনো ডিভাইসের জন্য ভেন্ডর ইমেজ আপগ্রেড করার সময়, ভেন্ডররা নতুন HAL ভার্সন প্রয়োগ করার বিকল্প বেছে নিতে পারেন এবং টার্গেট FCM ভার্সন বাড়াতে পারেন।
নতুন ডিভাইস ডেভেলপ করা
নতুন ডিভাইসের জন্য ডিভাইস টার্গেট FCM ভার্সন নির্ধারণ করার সময়:
DEVICE_MANIFEST_FILEওPRODUCT_ENFORCE_VINTF_MANIFESTঅসংজ্ঞায়িত রাখুন।- টার্গেট FCM ভার্সনের জন্য HAL প্রয়োগ করুন।
- সঠিক ডিভাইস ম্যানিফেস্ট ফাইল লিখুন।
- ডিভাইস ম্যানিফেস্ট ফাইলে টার্গেট FCM ভার্সন লিখুন।
DEVICE_MANIFEST_FILEসেট করুন।PRODUCT_ENFORCE_VINTF_MANIFEST-কেtrueহিসেবে সেট করুন।
নতুন ডিভাইস রিলিজ করা
নতুন ডিভাইস রিলিজ করা হলে, এর প্রাথমিক টার্গেট FCM ভার্সন নির্ধারণ করতে হবে এবং ডিভাইস ম্যানিফেস্টে
টপ-লেভেল
<manifest> এলিমেন্টে "target-level" অ্যাট্রিবিউট হিসেবে
ঘোষণা করতে হবে।
যেমন, Android 9 সহ লঞ্চ হওয়া ডিভাইসের টার্গেট FCM ভার্সন অবশ্যই ৩ (এই মুহূর্তে উপলভ্য সবচেয়ে উন্নত ভার্সন) হতে হবে। ডিভাইস ম্যানিফেস্টে এটি ঘোষণা করতে:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
ভেন্ডর ছবি আপগ্রেড করা
পুরনো ডিভাইসের জন্য ভেন্ডর ইমেজ আপগ্রেড করার সময়, ভেন্ডররা নতুন HAL ভার্সন প্রয়োগ করতে এবং টার্গেট FCM ভার্সন বাড়াতে পারেন।
HAL আপগ্রেড করা
ভেন্ডর ইমেজ আপগ্রেড করার সময়, ভেন্ডর নতুন HAL ভার্সন প্রয়োগ করতে পারে, তবে HAL-এর নাম, ইন্টারফেসের নাম এবং ইনস্ট্যান্সের নাম একই হতে হবে। যেমন:
- Google Pixel 2 এবং Pixel 2 XL ডিভাইস টার্গেট FCM ভার্সন
2 সহ রিলিজ করা হয়েছে, যা প্রয়োজনীয় অডিও 2.0 HAL
android.hardware.audio@2.0::IDeviceFactory/defaultপ্রয়োগ করেছে। - Android
9-এর সাথে রিলিজ করা অডিও 4.0 HAL-এর জন্য, Google Pixel 2 ও Pixel 2 XL ডিভাইস 4.0 HAL-এ আপগ্রেড করার জন্য
সম্পূর্ণ OTA ব্যবহার করতে পারে, যা
android.hardware.audio@4.0::IDeviceFactory/defaultপ্রয়োগ করে। - যদিও
compatibility_matrix.2.xmlশুধুমাত্র অডিও ২.০ নির্দিষ্ট করে, তবে টার্গেট FCM ভার্সন ২ সহ ভেন্ডর ইমেজের প্রয়োজনীয়তা শিথিল করা হয়েছে কারণ Android 9 ফ্রেমওয়ার্ক (FCM ভার্সন ৩) কার্যকারিতার দিক থেকে অডিও ৪.০-কে অডিও ২.০ HAL-এর রিপ্লেসমেন্ট হিসেবে বিবেচনা করে।
সংক্ষেপে বলতে গেলে, compatibility_matrix.2.xml-এর জন্য
অডিও ২.০ এবং compatibility_matrix.3.xml-এর জন্য অডিও ৪.০ প্রয়োজন।
তাই প্রয়োজনীয়তাগুলি হল:
| FCM ভার্সন (সিস্টেম) | টার্গেট FCM ভার্সন (ভেন্ডর) | প্রয়োজনীয়তা |
|---|---|---|
| 2 (8.1) | 2 (8.1) | Audio 2.0 |
| ৩ (৯) | 2 (8.1) | অডিও 2.0 বা 4.0 |
| ৩ (৯) | ৩ (৯) | Audio 4.0 |
টার্গেট FCM ভার্সন আপগ্রেড করা
ভেন্ডর ইমেজ আপগ্রেড করার সময়, ভেন্ডর টার্গেট করা FCM ভার্সনও বাড়াতে পারেন যাতে আপগ্রেড করা ভেন্ডর ইমেজ কোন টার্গেট করা FCM ভার্সনের সাথে কাজ করতে পারে তা নির্দিষ্ট করা যায়। কোনও ডিভাইসের টার্গেট FCM ভার্সন বাড়াতে, ভেন্ডরদের এগুলি করতে হবে:
- টার্গেট FCM ভার্সনের জন্য প্রয়োজনীয় সব নতুন HAL ভার্সন প্রয়োগ করুন।
- ডিভাইস ম্যানিফেস্ট ফাইলে HAL ভার্সন পরিবর্তন করুন।
- ডিভাইস ম্যানিফেস্ট ফাইলে টার্গেট FCM ভার্সন পরিবর্তন করুন।
- বন্ধ হয়ে যাওয়া HAL ভার্সন সরিয়ে দিন।
যেমন, Google Pixel এবং Pixel XL ডিভাইস Android 7.0-এর সাথে লঞ্চ করা হয়েছে
তাই তাদের টার্গেট FCM ভার্সন অবশ্যই অন্তত লেগ্যাসি হতে হবে। তবে, ডিভাইস
ম্যানিফেস্ট টার্গেট FCM ভার্সন ২ ঘোষণা করে কারণ ভেন্ডর ইমেজ
compatibility_matrix.2.xml-এর সাথে মানানসই করার জন্য আপডেট করা হয়েছে:
<manifest version="1.0" type="device" target-level="2">
ভেন্ডররা যদি প্রয়োজনীয় সব নতুন HAL ভার্সন প্রয়োগ না করে অথবা বাতিল করা HAL ভার্সন না সরিয়ে দেয়, তাহলে টার্গেট FCM ভার্সন আপগ্রেড করা যাবে না।
যেমন, Google Pixel 2 এবং Pixel 2 XL ডিভাইসের টার্গেট এফসিএম ভার্সন হল ২।
যদিও তারা compatibility_matrix.3.xml-এর জন্য প্রয়োজনীয় কিছু HAL প্রয়োগ করে (যেমন অডিও 4.0, স্বাস্থ্য 2.0 ইত্যাদি),
তারা android.hardware.radio.deprecated@1.0 সরায় না, যা
FCM ভার্সন 3 (Android 9)-এ বাতিল করা হয়েছে। তাই, এইসব ডিভাইস টার্গেট FCM ভার্সন ৩-এ আপগ্রেড করতে পারবে না।
OTA চলাকালীন কার্নেল সংক্রান্ত প্রয়োজনীয়তা বাধ্যতামূলক করা
Android 9 বা তার আগের যেকোনও ভার্সন থেকে ডিভাইস আপডেট করা
Android 9 বা এর আগের যেকোনও ভার্সন আছে এমন ডিভাইসে, নিম্নলিখিত CLগুলি সঠিক জায়গায় আছে কিনা দেখুন:
এইসব পরিবর্তন বিল্ড ফ্ল্যাগ
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS নিয়ে আসে এবং Android 9 বা
তার আগের ভার্সন সহ লঞ্চ করা ডিভাইসের জন্য ফ্ল্যাগ
আনসেট করে দেয়।
- Android 10-এ আপডেট করার সময়, Android 9 বা এর আগের যেকোনও ভার্সনে চলা ডিভাইসে OTA ক্লায়েন্ট, OTA প্যাকেজে কার্নেল সংক্রান্ত প্রয়োজনীয়তা সঠিকভাবে চেক করে না। জেনারেট করা OTA প্যাকেজ থেকে কার্নেল সংক্রান্ত প্রয়োজনীয়তা বাদ দেওয়ার জন্য এইসব পরিবর্তন করা প্রয়োজন।
-
Android 11-এ আপডেট করার সময়, আপডেট প্যাকেজ তৈরি হলে VINTF
কম্প্যাটিবিলিটি চেক করার জন্য
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSবিল্ড ফ্ল্যাগ সেট করা ঐচ্ছিক।
এই বিল্ড ফ্ল্যাগ সম্পর্কে আরও তথ্যের জন্য, Android 10 থেকে ডিভাইস আপডেট করা দেখুন।
Android 10 থেকে ডিভাইস আপডেট করা
Android 10 একটি নতুন বিল্ড ফ্ল্যাগ নিয়ে এসেছে,
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS. Android 10-এর সাথে লঞ্চ করা
ডিভাইসের জন্য, এই ফ্ল্যাগ
অটোমেটিক true-এ সেট করা হয়। ফ্ল্যাগটি
true-এ সেট করা থাকলে, ইনস্টল করা কার্নেল ইমেজ থেকে একটি স্ক্রিপ্ট কার্নেল ভার্সন ও কার্নেল
কনফিগারেশন এক্সট্র্যাক্ট করে।
- Android 10-এ আপডেট করার সময়, OTA আপডেট প্যাকেজে কার্নেল ভার্সন ও কনফিগারেশন থাকে। Android 10 ভার্সনে চলা ডিভাইসে OTA ক্লায়েন্ট এই তথ্য পড়ে কম্প্যাটিবিলিটি চেক করে।
- Android 11-এ আপডেট করার সময়, OTA প্যাকেজ জেনারেশন কম্প্যাটিবিলিটি চেক করার জন্য কার্নেল ভার্সন ও কনফিগারেশন পড়ে।
স্ক্রিপ্ট যদি আপনার কার্নেল ইমেজের জন্য এই তথ্য এক্সট্র্যাক্ট করতে না পারে, তাহলে নিম্নলিখিতগুলির মধ্যে একটি করুন:
- আপনার কার্নেল ফর্ম্যাট সাপোর্ট করার জন্য স্ক্রিপ্ট এডিট করুন এবং AOSP-তে কন্ট্রিবিউট করুন।
BOARD_KERNEL_VERSION-কে কার্নেল ভার্সনে এবংBOARD_KERNEL_CONFIG_FILE-কে বিল্ট কার্নেলের পাথে কনফিগারেশন ফাইল.config-এ সেট করুন। কার্নেল ইমেজ আপডেট করা হলে দুটি ভেরিয়েবলই আপডেট করতে হবে।- অথবা, কার্নেল সংক্রান্ত প্রয়োজনীয়তা চেক করা এড়াতে,
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSথেকেfalseসেট করুন। এটি সাজেস্ট করা হয় না কারণ কোনও ইনকম্প্যাটিবিলিটি লুকানো থাকে এবং আপডেট করার পরে VTS টেস্ট রান করানোর পরেই তা ডিসকভার করা যায়।
আপনি কার্নেল তথ্য এক্সট্র্যাকশন স্ক্রিপ্টের সোর্স কোড দেখতে পারেন
extract_kernel.py।