ডিভাইস ম্যানিফেস্ট ডেভেলপমেন্ট

নতুন ডিভাইস তৈরি ও প্রকাশ করার সময়, বিক্রেতারা ডিভাইস ম্যানিফেস্টে (DM) লক্ষ্য FCM সংস্করণ সংজ্ঞায়িত এবং ঘোষণা করতে পারে। পুরানো ডিভাইসের জন্য বিক্রেতা ইমেজ আপগ্রেড করার সময়, বিক্রেতারা নতুন HAL সংস্করণ বাস্তবায়ন করতে এবং লক্ষ্য FCM সংস্করণ বৃদ্ধি করতে বেছে নিতে পারেন।

নতুন ডিভাইস ডেভেলপ করা হচ্ছে

নতুন ডিভাইসের জন্য ডিভাইস লক্ষ্য FCM সংস্করণ সংজ্ঞায়িত করার সময়:

  1. DEVICE_MANIFEST_FILE এবং PRODUCT_ENFORCE_VINTF_MANIFEST অনির্ধারিত ছেড়ে দিন।
  2. লক্ষ্য FCM সংস্করণের জন্য HALs প্রয়োগ করুন৷
  3. সঠিক ডিভাইস ম্যানিফেস্ট ফাইল লিখুন।
  4. ডিভাইস ম্যানিফেস্ট ফাইলে লক্ষ্য FCM সংস্করণ লিখুন।
  5. DEVICE_MANIFEST_FILE সেট করুন।
  6. PRODUCT_ENFORCE_VINTF_MANIFEST কে true সেট করুন৷

নতুন ডিভাইস প্রকাশ করা হচ্ছে

যখন একটি নতুন ডিভাইস প্রকাশ করা হয়, তখন তার প্রাথমিক লক্ষ্য FCM সংস্করণটিকে ডিভাইস ম্যানিফেস্টে " target-level " অ্যাট্রিবিউট হিসেবে টপ-লেভেল <manifest> এলিমেন্টে ডিক্লেয়ার করতে হবে।

উদাহরণস্বরূপ, অ্যান্ড্রয়েড 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলিতে অবশ্যই 3 এর সমান লক্ষ্য FCM সংস্করণ থাকতে হবে (এই সময়ে উপলব্ধ উচ্চতর সংস্করণ)। ডিভাইস ম্যানিফেস্টে এটি ঘোষণা করতে:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

বিক্রেতার ছবি আপগ্রেড করা হচ্ছে

একটি পুরানো ডিভাইসের জন্য বিক্রেতা ইমেজ আপগ্রেড করার সময়, বিক্রেতারা নতুন HAL সংস্করণ বাস্তবায়ন করতে এবং লক্ষ্য FCM সংস্করণ বৃদ্ধি করতে বেছে নিতে পারেন।

HALs আপগ্রেড করা

একটি বিক্রেতা ইমেজ আপগ্রেড করার সময়, বিক্রেতারা নতুন 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 শুধুমাত্র অডিও 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 সংস্করণ (সিস্টেম) লক্ষ্য FCM সংস্করণ (বিক্রেতা) প্রয়োজনীয়তা
2 (8.1) 2 (8.1) অডিও 2.0
3 (9) 2 (8.1) অডিও 2.0 বা 4.0
3 (9) 3 (9) অডিও 4.0

টার্গেট FCM সংস্করণ আপগ্রেড করা হচ্ছে

একটি ভেন্ডর ইমেজ আপগ্রেড করার সময়, বিক্রেতারা টার্গেট FCM ভার্সন বাড়াতে পারে যাতে আপগ্রেড করা ভেন্ডর ইমেজ কাজ করতে পারে তা নির্দিষ্ট করে দিতে পারে। একটি ডিভাইসের টার্গেট এফসিএম সংস্করণটি বাম্প করতে, বিক্রেতাদের প্রয়োজন:

  1. লক্ষ্য FCM সংস্করণের জন্য সমস্ত নতুন প্রয়োজনীয় HAL সংস্করণ প্রয়োগ করুন৷
  2. ডিভাইস ম্যানিফেস্ট ফাইলে HAL সংস্করণ পরিবর্তন করুন।
  3. ডিভাইস ম্যানিফেস্ট ফাইলে লক্ষ্য FCM সংস্করণ পরিবর্তন করুন।
  4. অপ্রচলিত HAL সংস্করণগুলি সরান৷

উদাহরণস্বরূপ, Google Pixel এবং Pixel XL ডিভাইসগুলি Android 7.0 এর সাথে লঞ্চ হয়েছে তাই তাদের লক্ষ্য FCM সংস্করণটি অন্তত লিগ্যাসি হতে হবে। যাইহোক, ডিভাইস ম্যানিফেস্ট টার্গেট এফসিএম সংস্করণ 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 (যেমন অডিও 4.0, হেলথ 2.0, ইত্যাদি) দ্বারা প্রয়োজনীয় কিছু HAL বাস্তবায়ন করে, তারা android.hardware.radio.deprecated@1.0 সরিয়ে দেয় না android.hardware.radio.deprecated@1.0 , যা FCM সংস্করণ 3 (Android 9) এ অবমূল্যায়িত হয়েছে। তাই, এই ডিভাইসগুলি টার্গেট FCM সংস্করণকে 3-এ আপগ্রেড করতে পারে না।

OTA সময় কার্নেলের প্রয়োজনীয়তা বাধ্যতামূলক করা

অ্যান্ড্রয়েড 9 বা তার থেকে কম ডিভাইস আপডেট করা হচ্ছে

অ্যান্ড্রয়েড 9 বা তার নিচের ডিভাইসগুলিতে, নিম্নলিখিত CLগুলি চেরি-পিক করা হয়েছে তা নিশ্চিত করুন:

এই পরিবর্তনগুলি বিল্ড ফ্ল্যাগ PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS প্রবর্তন করে এবং Android 9 বা তার চেয়ে কম সংস্করণের সাথে লঞ্চ হওয়া ডিভাইসগুলির জন্য পতাকা সেট না করে রাখে৷

  • অ্যান্ড্রয়েড 10-এ আপডেট করার সময়, অ্যান্ড্রয়েড 9 বা তার চেয়ে কম সংস্করণে চলমান ডিভাইসগুলিতে ওটিএ ক্লায়েন্টরা ওটিএ প্যাকেজে কার্নেলের প্রয়োজনীয়তাগুলি সঠিকভাবে পরীক্ষা করে না। উত্পন্ন 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 এর উত্স কোড দেখতে পারেন।