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