FCM জীবনচক্র

একটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক রিলিজে একাধিক ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স (এফসিএম), প্রতিটি আপগ্রেডযোগ্য টার্গেট এফসিএম সংস্করণের জন্য একটি, যা ফ্রেমওয়ার্কটি কী ব্যবহার করতে পারে এবং লক্ষ্য এফসিএম সংস্করণের প্রয়োজনীয়তা নির্ধারণ করে। FCM লাইফসাইকেলের অংশ হিসেবে, Android HIDL HALগুলিকে অবমূল্যায়ন করে এবং সরিয়ে দেয়, তারপর HAL সংস্করণের স্থিতি প্রতিফলিত করতে FCM ফাইলগুলিকে সংশোধন করে৷

তাদের নিজস্ব ইকোসিস্টেমে ফ্রেমওয়ার্ক-কেবল ওটিএ সক্ষম করতে, যে অংশীদাররা বিক্রেতা ইন্টারফেসগুলি প্রসারিত করে তাদেরও একই পদ্ধতি ব্যবহার করে HIDL HAL গুলিকে অবমূল্যায়ন এবং অপসারণ করা উচিত।

পরিভাষা

ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (এফসিএম)
একটি XML ফাইল যা বিক্রেতা বাস্তবায়নের জন্য কাঠামোর প্রয়োজনীয়তা নির্দিষ্ট করে। সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সংস্করণ করা হয়েছে, এবং প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য একটি নতুন সংস্করণ হিমায়িত করা হয়েছে। প্রতিটি ফ্রেমওয়ার্ক রিলিজে একাধিক FCM থাকে।
প্ল্যাটফর্ম FCM সংস্করণ (S F )
ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM সংস্করণের সেট। ফ্রেমওয়ার্ক যেকোন ভেন্ডর ইমপ্লিমেন্টেশনের সাথে কাজ করতে পারে যা এই FCM এর একটিকে সন্তুষ্ট করে।
FCM সংস্করণ (F)
ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM-এর মধ্যে সর্বোচ্চ সংস্করণ।
লক্ষ্য FCM সংস্করণ (V)
লক্ষ্যযুক্ত FCM সংস্করণ (S F থেকে), ডিভাইস ম্যানিফেস্টে স্পষ্টভাবে ঘোষণা করা হয়েছে, যে একটি বিক্রেতা বাস্তবায়ন সন্তুষ্ট। একটি বিক্রেতা বাস্তবায়ন অবশ্যই একটি প্রকাশিত FCM এর বিপরীতে তৈরি করতে হবে, যদিও এটি তার ডিভাইস ম্যানিফেস্টে নতুন HAL সংস্করণ ঘোষণা করতে পারে।
HAL সংস্করণ
একটি HAL সংস্করণে foo@xy ফর্ম্যাট রয়েছে, যেখানে foo হল HAL নাম এবং xy হল নির্দিষ্ট সংস্করণ; যেমন nfc@1.0 , keymaster@3.0 (মূল উপসর্গ, যেমন android.hardware , এই নথিতে বাদ দেওয়া হয়েছে।)
ডিভাইস ম্যানিফেস্ট
XML ফাইলগুলি যা নির্দিষ্ট করে যে কোন HAL সংস্করণগুলি বিক্রেতা ইন্টারফেসের ডিভাইস সাইড, বিক্রেতা এবং ODM ছবিগুলি সহ প্রদান করে। একটি ডিভাইস ম্যানিফেস্টের বিষয়বস্তু ডিভাইসের টার্গেট FCM সংস্করণ দ্বারা সীমাবদ্ধ কিন্তু HAL গুলি তালিকাভুক্ত করতে পারে যা V-এর সাথে সম্পর্কিত FC-এর তুলনায় কঠোরভাবে নতুন।
ডিভাইস HALs
HALগুলি যেগুলি ডিভাইস ম্যানিফেস্টে তালিকাভুক্ত (প্রদান করা হয়েছে) এবং ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM) এ তালিকাভুক্ত (প্রয়োজনীয় বা ঐচ্ছিক)।
ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM)
একটি XML ফাইল যা ফ্রেমওয়ার্ক বাস্তবায়নের জন্য বিক্রেতার প্রয়োজনীয়তা নির্দিষ্ট করে। প্রতিটি ডিভাইসে একটি DCM থাকে।
ফ্রেমওয়ার্ক ম্যানিফেস্ট
একটি XML ফাইল যা নির্দিষ্ট করে যে HAL ভার্সন ভেন্ডর ইন্টারফেসের ফ্রেমওয়ার্ক সাইড, সিস্টেম, system_ext এবং প্রোডাক্ট ইমেজ সহ, প্রদান করে। ফ্রেমওয়ার্ক ম্যানিফেস্টের HALগুলি ডিভাইসের টার্গেট FCM সংস্করণ অনুসারে গতিশীলভাবে অক্ষম করা হয়েছে৷
ফ্রেমওয়ার্ক HALs
ফ্রেমওয়ার্ক ম্যানিফেস্টে প্রদত্ত HALগুলি তালিকাভুক্ত এবং ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM) এ প্রয়োজনীয় বা ঐচ্ছিক হিসাবে তালিকাভুক্ত।

কোডবেসে FCM জীবনচক্র

এই নথিটি বিমূর্তভাবে FCM জীবনচক্র বর্ণনা করে। সমর্থিত ম্যানিফেস্টগুলি দেখতে, hardware/interfaces/compatibility_matrix.<FCM>.xml যেখানে FCM পাওয়া যাবে system/libvintf/include/vintf/Level.h এ।

সংশ্লিষ্ট অ্যান্ড্রয়েড রিলিজ সংস্করণ শিপিং একটি ডিভাইসের একটি FCM মান সমতুল্য স্তরের চেয়ে বেশি বা সমান হবে বলে আশা করা হচ্ছে। উদাহরণস্বরূপ, Android 11 এর সাথে একটি ডিভাইস শিপিংয়ে সাধারণত FCM স্তর 5 থাকে তবে FCM স্তর 6 বা তার বেশি প্রয়োগ করা হয়, যা সামঞ্জস্য ম্যাট্রিক্সে নির্দিষ্ট করা বিভিন্ন অতিরিক্ত প্রয়োজনীয়তার সাথে আসে। সমর্থিত স্তরগুলি হল:

FCM অ্যান্ড্রয়েড সংস্করণ
4 Android 10/Q
5 Android 11/R
6 Android 12/S
7 Android 13/T
8 Android 14/U
202404 Android 15/V

এফসিএম লেভেল ভেন্ডর এপিআই লেভেলের সমান বা নতুন।

যখন অ্যান্ড্রয়েড একটি এফসিএম স্তরকে অবমূল্যায়ন করে, তখনও এটি বিদ্যমান ডিভাইসগুলির জন্য সমর্থিত। নিম্নতর FCM স্তরগুলিকে লক্ষ্য করে এমন ডিভাইসগুলিকে পরোক্ষভাবে নতুন FCM স্তরগুলিতে তালিকাভুক্ত HALগুলি ব্যবহার করার অনুমতি দেওয়া হয়, যতক্ষণ না সেগুলি শাখায় উপলব্ধ থাকে৷

একটি নতুন FCM সংস্করণে বিকাশ করুন৷

Android প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য FCM সংস্করণ বৃদ্ধি করে (যেমন Android 8 এবং 8.1)। বিকাশের সময়, নতুন compatibility_matrix.F.xml তৈরি করা হয় এবং বিদ্যমান compatibility_matrix.f.xml (যেখানে f < F ) আর পরিবর্তন করা হয় না।

একটি নতুন FCM সংস্করণ F এ বিকাশ শুরু করতে:

  1. সাম্প্রতিক compatibility_matrix.<F-1>.xml compatibility_matrix.F.xml এ কপি করুন।
  2. ফাইলের level অ্যাট্রিবিউট F এ আপডেট করুন।
  3. ডিভাইসে এই সামঞ্জস্যপূর্ণ ম্যাট্রিক্স ইনস্টল করতে সংশ্লিষ্ট বিল্ড নিয়ম যোগ করুন।

একটি নতুন HAL চালু করুন

বিকাশের সময়, বর্তমান FCM সংস্করণ F এ Android-এ একটি নতুন HAL (Wi-Fi, NFC, ইত্যাদি) প্রবর্তন করার সময়, নিম্নলিখিত optional সেটিংস সহ compatibility_matrix.F.xml এ HAL যোগ করুন:

  • optional="false" যদি V = F দিয়ে পাঠানো ডিভাইসগুলিকে এই HAL দিয়ে লঞ্চ করতে হয়,
  • optional="true" যদি V = F দিয়ে পাঠানো ডিভাইসগুলি এই HAL ছাড়াই চালু করতে পারে।

উদাহরণস্বরূপ, Android 8.1 একটি ঐচ্ছিক HAL হিসাবে cas@1.0 চালু করেছে। এই HAL বাস্তবায়নের জন্য Android 8.1-এর সাথে চালু হওয়া ডিভাইসগুলির প্রয়োজন নেই, তাই নিম্নোক্ত এন্ট্রিটি compatibility_matrix.F.xml এ যোগ করা হয়েছে (যার নাম দেওয়া হত compatibility_matrix.current.xml অস্থায়ীভাবে সেই রিলিজের বিকাশের সময়):

<hal format="hidl" optional="true">
    <name>android.hardware.cas</name>
    <version>1.0</version>
    <interface>
        <name>IMediaCasService</name>
        <instance>default</instance>
    </interface>
</hal>

একটি HAL আপগ্রেড করুন (অপ্রধান)

During development, when a HAL has a minor-version upgrade from xz to x.(z+1) at current FCM Version F , if that version is:

  • Required on devices launching with V = F , compatibility_matrix.F.xml must state x.(z+1) and optional="false" .
  • V = F , compatibility_matrix.F.xml এর সাথে চালু হওয়া ডিভাইসগুলিতে প্রয়োজন নেই। F.xml অবশ্যই compatibility_matrix থেকে xy-z এবং বিকল্পতা কপি করতে হবে compatibility_matrix.<F-1>.xml এবং সংস্করণ পরিবর্তন করে xw-(z+1) (যেখানে w >= y )

উদাহরণস্বরূপ, Android 8.1 broadcastradio@1.1 চালু করেছে 1.0 HAL-এর একটি ছোট সংস্করণ আপগ্রেড হিসাবে। পুরানো সংস্করণ, broadcastradio@1.0 , Android 8.0 এর সাথে চালু হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক যখন নতুন সংস্করণ, broadcastradio@1.1 , Android 8.1 এর সাথে চালু হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক৷ compatibility_matrix.1.xml এ:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

এই এন্ট্রিটি compatibility_matrix.F.xml এ অনুলিপি করা হয়েছে এবং নিম্নরূপ সংশোধন করা হয়েছে:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0-1</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

একটি HAL আপগ্রেড করুন (প্রধান)

বিকাশের সময়, যখন একটি HAL-এর বর্তমান FCM সংস্করণ F এ একটি প্রধান-সংস্করণ আপগ্রেড করা হয়, তখন নতুন প্রধান সংস্করণ x.0 নিম্নলিখিত optional সেটিংস সহ compatibility_matrix.F.xml এ যোগ করা হয়:

  • optional="false" শুধুমাত্র সংস্করণ x.0 সহ , যদি V = F দিয়ে শিপ করা ডিভাইসগুলি অবশ্যই x.0 দিয়ে চালু করতে হবে।
  • optional="false" কিন্তু একই <hal> ট্যাগে পুরানো প্রধান সংস্করণগুলির সাথে, যদি V = F সহ শিপ করা ডিভাইসগুলি অবশ্যই এই HAL দিয়ে লঞ্চ করতে হবে, তবে একটি পুরানো প্রধান সংস্করণের সাথে লঞ্চ করতে পারে।
  • optional="true" যদি V = F দিয়ে পাঠানো ডিভাইসগুলিকে HAL চালু করতে না হয়।

উদাহরণস্বরূপ, Android 9 1.0 HAL-এর একটি প্রধান-সংস্করণ আপগ্রেড হিসাবে health@2.0 প্রবর্তন করে এবং 1.0 HAL-কে অবমূল্যায়ন করে। পুরানো সংস্করণ, health@1.0 , Android 8.0 এবং Android 8.1 এর সাথে লঞ্চ হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক। অ্যান্ড্রয়েড 9 এর সাথে চালু হওয়া ডিভাইসগুলিকে অবশ্যই নতুন 2.0 সংস্করণ সরবরাহ করতে হবে। উদাহরণস্বরূপ, অনুমান করুন compatibility_matrix.legacy.xml , compatibility_matrix.1.xml , এবং compatibility_matrix.2.xml এই এন্ট্রিটি রয়েছে:

<hal format="hidl" optional="true">
    <name>android.hardware.health</name>
    <version>1.0</version>;
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

compatibility_matrix.F.xml এ এই এন্ট্রিটি অনুলিপি করুন এবং নিম্নরূপ পরিবর্তন করুন:

<hal format="hidl" optional="false">
    <name>android.hardware.health</name>
    <version>2.0</version>
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

বিধিনিষেধ:

  • কারণ 2.0 HAL compatibility_matrix.3.xmloptional="false" এর সাথে রয়েছে, Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলি অবশ্যই 2.0 HAL-এর সাথে পাঠাতে হবে৷`
  • কারণ 1.0 HAL compatibility_matrix.3.xml এ নেই, যে ডিভাইসগুলি Android 9 এর সাথে লঞ্চ হয় সেগুলি অবশ্যই 1.0 HAL প্রদান করবে না (যেহেতু এই HALটিকে অবচয় বলে মনে করা হয়)৷
  • যেহেতু 1.0 HAL একটি ঐচ্ছিক HAL হিসাবে legacy/1/2.xml (পুরনো FCM সংস্করণ যেগুলির সাথে Android 9 কাজ করতে পারে) উপস্থিত রয়েছে, Android 9 ফ্রেমওয়ার্ক এখনও 1.0 HAL-এর সাথে কাজ করতে পারে (যাকে সরিয়ে দেওয়া HAL সংস্করণ হিসাবে বিবেচনা করা হয় না )

নতুন FCM সংস্করণ

সিস্টেম পার্টিশনে একটি এফসিএম সংস্করণ প্রকাশ করার প্রক্রিয়াটি শুধুমাত্র একটি AOSP রিলিজের অংশ হিসাবে Google দ্বারা সম্পন্ন করা হয় এবং নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত করে:

  1. নিশ্চিত করুন compatibility_matrix.F.xml এ অ্যাট্রিবিউট level="F" আছে।
  2. সমস্ত ডিভাইস তৈরি এবং বুট নিশ্চিত করুন।
  3. সর্বশেষ ফ্রেমওয়ার্ক (শিপিং এপিআই লেভেলের উপর ভিত্তি করে) লঞ্চ করা ডিভাইসগুলির লক্ষ্য FCM সংস্করণ V >= F আছে তা নিশ্চিত করতে VTS পরীক্ষাগুলি আপডেট করুন
  4. AOSP এ ফাইল প্রকাশ করুন।

উদাহরণস্বরূপ, VTS পরীক্ষাগুলি নিশ্চিত করে যে Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলিতে লক্ষ্য FCM সংস্করণ >= 3 রয়েছে৷

উপরন্তু, পণ্য এবং system_ext FCM প্রতিটি প্ল্যাটফর্ম FCM সংস্করণের জন্য প্রয়োজনীয়তা তালিকাভুক্ত করতে পারে। পণ্য এবং system_ext পার্টিশনে FCM সংস্করণ প্রকাশ করা হয় যথাক্রমে এই চিত্রগুলির মালিক দ্বারা। পণ্যের FCM সংস্করণ নম্বর এবং system_ext পার্টিশনগুলিকে সিস্টেম পার্টিশনের সাথে সারিবদ্ধ হওয়া আবশ্যক। সিস্টেম পার্টিশনের FCM সংস্করণের মতো, পণ্যের FCM সংস্করণ F এবং system_ext পার্টিশনের সামঞ্জস্যতা ম্যাট্রিক্স লক্ষ্য FCM সংস্করণ F সহ একটি ডিভাইসে প্রয়োজনীয়তা প্রতিফলিত করে।

HAL সংস্করণ অবচয়

একটি HAL সংস্করণকে অবমূল্যায়ন করা একটি বিকাশকারীর সিদ্ধান্ত (যেমন AOSP HAL-এর জন্য, Google সিদ্ধান্ত নেয়)। এটি ঘটতে পারে যখন একটি উচ্চতর HAL সংস্করণ (সেই ছোট বা বড়) প্রকাশিত হয়।

একটি ডিভাইস HAL বর্জন করুন

যখন একটি প্রদত্ত ডিভাইস HAL foo@xy FCM সংস্করণ F এ অবচয়িত হয়, তখন এর মানে হল যে কোনো ডিভাইস লঞ্চ হওয়া লক্ষ্য FCM সংস্করণ V = F বা তার পরবর্তী সংস্করণ xy বা xy এর চেয়ে পুরনো কোনো সংস্করণে foo প্রয়োগ করা উচিত নয়। একটি অবচিত HAL সংস্করণ এখনও ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা সমর্থিত।

যখন FCM সংস্করণ F প্রকাশ করা হয়, একটি HAL সংস্করণ foo@xy অবচয় বলে বিবেচিত হয় যদি নির্দিষ্ট HAL সংস্করণটি লক্ষ্য FCM সংস্করণ V = F এর জন্য সাম্প্রতিক FCM-এ স্পষ্টভাবে বলা না থাকে। V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য, নিম্নলিখিত শর্তগুলির মধ্যে একটি সত্য:

  • কাঠামোর জন্য একটি উচ্চতর সংস্করণ প্রয়োজন (প্রধান বা ছোট);
  • ফ্রেমওয়ার্কের জন্য আর HAL এর প্রয়োজন নেই।

উদাহরণস্বরূপ, Android 9 এ, health@2.0 1.0 HAL-এর একটি প্রধান সংস্করণ আপগ্রেড হিসাবে চালু করা হয়েছে। health@1.0 compatibility_matrix.3.xml থেকে সরানো হয়েছে কিন্তু compatibility_matrix.legacy.xml , compatibility_matrix.1.xml , এবং compatibility_matrix.2.xml এ উপস্থিত রয়েছে। তাই, health@1.0 অবহেলিত বলে মনে করা হয়।

একটি ফ্রেমওয়ার্ক HAL বর্জন করুন

যখন একটি প্রদত্ত ফ্রেমওয়ার্ক HAL foo@xy FCM সংস্করণ F এ অবচয় করা হয়, তখন এর মানে হল যে কোনো ডিভাইস লঞ্চ করা লক্ষ্য FCM সংস্করণ V = F বা তার পরবর্তী সংস্করণে xy , বা xy এর চেয়ে পুরনো কোনো সংস্করণে foo প্রদানের আশা করা উচিত নয়। ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা একটি অবনমিত HAL সংস্করণ এখনও প্রদান করা হয়।

When FCM version F is released, a HAL Version foo@xy is considered deprecated if the framework manifest specifies max-level=" F - 1 " for foo@xy . V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য, ফ্রেমওয়ার্ক HAL foo@xy প্রদান করে না। V = F দিয়ে লঞ্চ হওয়া ডিভাইসগুলিতে ডিভাইসের সামঞ্জস্যতা ম্যাট্রিক্স অবশ্যই max-level < V সাথে HAL-কে তালিকাভুক্ত করবে না।

উদাহরণস্বরূপ, Android 12-এ, schedulerservice@1.0 বাতিল করা হয়েছে। এর max-level বৈশিষ্ট্যটি 5 এ সেট করা হয়েছে, Android 11 এ চালু করা FCM সংস্করণ। দেখুন Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট

লক্ষ্য FCM সংস্করণের জন্য সমর্থন অপসারণ

যখন একটি নির্দিষ্ট লক্ষ্য FCM সংস্করণ V এর সক্রিয় ডিভাইসগুলি একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে নেমে যায়, তখন লক্ষ্য FCM সংস্করণটি পরবর্তী ফ্রেমওয়ার্ক রিলিজের সেট S F থেকে সরানো হয়। এটি নিম্নলিখিত উভয় পদক্ষেপ দ্বারা সম্পন্ন হয়:

  1. বিল্ড রুলস থেকে compatibility_matrix.V.xml অপসারণ করা (যাতে এটি সিস্টেম ইমেজে ইন্সটল না হয়), এবং যেকোন কোড মুছে ফেলা যা বাস্তবায়িত বা অপসারিত ক্ষমতার উপর নির্ভর করে।

  2. ফ্রেমওয়ার্ক ম্যানিফেস্ট থেকে V থেকে কম বা সমান max-level সাথে ফ্রেমওয়ার্ক HALগুলি সরানো, এবং যেকোন কোড মুছে ফেলা যা সরানো ফ্রেমওয়ার্ক HALs প্রয়োগ করে।

একটি প্রদত্ত ফ্রেমওয়ার্ক রিলিজের জন্য SF এর বাইরে একটি লক্ষ্য FCM সংস্করণ সহ ডিভাইসগুলি সেই রিলিজে আপগ্রেড করতে পারে না।

HAL সংস্করণের অবস্থা

নিম্নলিখিত বিভাগগুলি HAL সংস্করণের সম্ভাব্য অবস্থা বর্ণনা করে (কালানুক্রমিক ক্রমে)।

অপ্রকাশিত

ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যতা ম্যাট্রিক্সে না থাকে, তাহলে এটিকে অপ্রকাশিত এবং সম্ভবত বিকাশে বিবেচনা করা হয়। এর মধ্যে HAL ভার্সন রয়েছে যা শুধুমাত্র compatibility_matrix.F.xml এ রয়েছে। উদাহরণ:

  • অ্যান্ড্রয়েড 9 এর বিকাশের সময় health@2.0 HAL কে একটি অপ্রকাশিত HAL হিসাবে বিবেচনা করা হয়েছিল এবং শুধুমাত্র compatibility_matrix.3.xml এ উপস্থিত ছিল।
  • teleportation@1.0 HAL কোনো প্রকাশিত সামঞ্জস্যতা ম্যাট্রিক্সে নেই, এবং এটি একটি অপ্রকাশিত HAL হিসাবে বিবেচিত হয়।

ফ্রেমওয়ার্ক HAL-এর জন্য, যদি HAL সংস্করণ শুধুমাত্র একটি সম্পর্কহীন ডেভেলপমেন্ট শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে, তাহলে এটিকে অপ্রকাশিত বলে গণ্য করা হয়।

মুক্তি এবং বর্তমান

ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যপূর্ণ ম্যাট্রিক্সে থাকে, তাহলে এটি প্রকাশ করা হয়। উদাহরণস্বরূপ, FCM সংস্করণ 3 হিমায়িত এবং AOSP-তে প্রকাশিত হওয়ার পরে, health@2.0 HAL-কে একটি প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।

যদি একটি HAL সংস্করণ একটি সর্বজনীন এবং হিমায়িত সামঞ্জস্যপূর্ণ ম্যাট্রিক্সে থাকে যার সর্বোচ্চ FCM সংস্করণ থাকে তবে HAL সংস্করণটি বর্তমান (অর্থাৎ অবমুক্ত নয়)। উদাহরণ স্বরূপ, বিদ্যমান HAL সংস্করণগুলি (যেমন nfc@1.0 compatibility_matrix.legacy.xml তে চালু করা হয়েছে) যেগুলি compatibility_matrix.3.xml এ বিদ্যমান থাকে, সেগুলিকেও প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।

ফ্রেমওয়ার্ক এইচএএল-এর জন্য, যদি কোনও HAL সংস্করণ max-level বৈশিষ্ট্য ছাড়াই সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে বা (অস্বাভাবিকভাবে) এই শাখায় প্রকাশিত এফসিএম সংস্করণের সমান বা উচ্চতর max-level থাকে, তবে এটি প্রকাশিত হিসাবে বিবেচিত হয়। এবং বর্তমান HAL সংস্করণ। উদাহরণস্বরূপ, Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা displayservice HAL অ্যান্ড্রয়েড 12-এ প্রকাশিত এবং বর্তমান।

মুক্তি কিন্তু অবমূল্যায়িত

ডিভাইস HAL-এর জন্য, একটি HAL সংস্করণ বাতিল করা হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি পূরণ করা হয়:

  • এটি মুক্তি পায়।
  • এটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে নেই যার সর্বোচ্চ FCM সংস্করণ রয়েছে৷
  • এটি একটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে যা ফ্রেমওয়ার্ক এখনও সমর্থন করে৷

উদাহরণ:

তাই Android 9-এ power@1.0 বর্তমান, কিন্তু অবমূল্যায়িত নয়

ফ্রেমওয়ার্ক HAL-এর জন্য, যদি HAL সংস্করণ সাম্প্রতিক প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে যার max-level বৈশিষ্ট্য এই শাখায় FCM সংস্করণ রিলিজের চেয়ে কম থাকে, তবে এটি একটি প্রকাশিত কিন্তু অবচয়িত HAL সংস্করণ হিসাবে বিবেচিত হয়। উদাহরণস্বরূপ, Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা অনুসারে, schedulerservice HAL রিলিজ করা হয়েছে কিন্তু Android 12-এ অবমূল্যায়িত করা হয়েছে।

সরানো হয়েছে

ডিভাইস HALগুলির জন্য, একটি HAL সংস্করণ সরানো হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি সত্য হয়:

  • এটি আগে মুক্তি পেয়েছিল।
  • এটি কোনো পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে নয় যা ফ্রেমওয়ার্ক সমর্থন করে।

সামঞ্জস্যপূর্ণ ম্যাট্রিক্সগুলি যেগুলি সর্বজনীন, হিমায়িত, কিন্তু ফ্রেমওয়ার্ক দ্বারা সমর্থিত নয় সেগুলিকে সরিয়ে দেওয়া HAL সংস্করণগুলিকে সংজ্ঞায়িত করার জন্য কোডবেসে রাখা হয় যাতে VTS পরীক্ষাগুলি অপসারণ করা HALগুলি নতুন ডিভাইসে নেই তা নিশ্চিত করার জন্য লেখা যেতে পারে৷

ফ্রেমওয়ার্ক HAL-এর জন্য, একটি HAL সংস্করণ সরানো হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি পূরণ করা হয়:

  • এটি আগে মুক্তি পেয়েছিল।
  • এটি সর্বশেষ প্রকাশিত শাখার কোনো কাঠামোর মধ্যে নেই।

উত্তরাধিকারী FCMs

টার্গেট এফসিএম সংস্করণ লিগ্যাসি সমস্ত নন-ট্রেবল ডিভাইসের জন্য একটি বিশেষ মান। লিগ্যাসি এফসিএম, compatibility_matrix.legacy.xml , লিগ্যাসি ডিভাইসে (যেমন Android 8.0 এর আগে চালু হওয়া ডিভাইস) ফ্রেমওয়ার্কের প্রয়োজনীয়তা তালিকাভুক্ত করে।

যদি এই ফাইলটি সংস্করণ F সহ একটি FCM-এর জন্য বিদ্যমান থাকে, তাহলে যেকোন নন-ট্রেবল ডিভাইস F তে আপগ্রেড করা যেতে পারে যদি তার ডিভাইস ম্যানিফেস্ট এই ফাইলের সাথে সামঞ্জস্যপূর্ণ হয়। এটির অপসারণ অন্যান্য টার্গেট এফসিএম সংস্করণগুলির জন্য FCMগুলির মতো একই পদ্ধতি অনুসরণ করে (একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে সক্রিয় প্রাক-8.0 ডিভাইসের সংখ্যা নেমে যাওয়ার পরে সরানো হয়)।

FCM সংস্করণ প্রকাশ করা হয়েছে

মুক্তিপ্রাপ্ত FCM সংস্করণগুলির তালিকা hardware/interfaces/compatibility_matrices অধীনে পাওয়া যাবে।

একটি নির্দিষ্ট অ্যান্ড্রয়েড রিলিজের সাথে প্রকাশিত FCM সংস্করণ খুঁজে পেতে, Level.h দেখুন।

,

একটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক রিলিজে একাধিক ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স (এফসিএম), প্রতিটি আপগ্রেডযোগ্য টার্গেট এফসিএম সংস্করণের জন্য একটি, যা ফ্রেমওয়ার্কটি কী ব্যবহার করতে পারে এবং লক্ষ্য এফসিএম সংস্করণের প্রয়োজনীয়তা নির্ধারণ করে। FCM লাইফসাইকেলের অংশ হিসেবে, Android HIDL HALগুলিকে অবমূল্যায়ন করে এবং সরিয়ে দেয়, তারপর HAL সংস্করণের স্থিতি প্রতিফলিত করতে FCM ফাইলগুলিকে সংশোধন করে৷

তাদের নিজস্ব ইকোসিস্টেমে ফ্রেমওয়ার্ক-কেবল ওটিএ সক্ষম করতে, যে অংশীদাররা বিক্রেতা ইন্টারফেসগুলি প্রসারিত করে তাদেরও একই পদ্ধতি ব্যবহার করে HIDL HAL গুলিকে অবমূল্যায়ন এবং অপসারণ করা উচিত।

পরিভাষা

ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (এফসিএম)
একটি XML ফাইল যা বিক্রেতা বাস্তবায়নের জন্য কাঠামোর প্রয়োজনীয়তা নির্দিষ্ট করে। সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সংস্করণ করা হয়েছে, এবং প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য একটি নতুন সংস্করণ হিমায়িত করা হয়েছে। প্রতিটি ফ্রেমওয়ার্ক রিলিজে একাধিক FCM থাকে।
প্ল্যাটফর্ম FCM সংস্করণ (S F )
ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM সংস্করণের সেট। ফ্রেমওয়ার্ক যেকোন ভেন্ডর ইমপ্লিমেন্টেশনের সাথে কাজ করতে পারে যা এই FCM এর একটিকে সন্তুষ্ট করে।
FCM সংস্করণ (F)
ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM-এর মধ্যে সর্বোচ্চ সংস্করণ।
লক্ষ্য FCM সংস্করণ (V)
লক্ষ্যযুক্ত FCM সংস্করণ (S F থেকে), ডিভাইস ম্যানিফেস্টে স্পষ্টভাবে ঘোষণা করা হয়েছে, যে একটি বিক্রেতা বাস্তবায়ন সন্তুষ্ট। একটি বিক্রেতা বাস্তবায়ন অবশ্যই একটি প্রকাশিত FCM এর বিপরীতে তৈরি করতে হবে, যদিও এটি তার ডিভাইস ম্যানিফেস্টে নতুন HAL সংস্করণ ঘোষণা করতে পারে।
HAL সংস্করণ
একটি HAL সংস্করণে foo@xy ফর্ম্যাট রয়েছে, যেখানে foo হল HAL নাম এবং xy হল নির্দিষ্ট সংস্করণ; যেমন nfc@1.0 , keymaster@3.0 (মূল উপসর্গ, যেমন android.hardware , এই নথিতে বাদ দেওয়া হয়েছে।)
ডিভাইস ম্যানিফেস্ট
XML ফাইলগুলি যা নির্দিষ্ট করে যে কোন HAL সংস্করণগুলি বিক্রেতা ইন্টারফেসের ডিভাইস সাইড, বিক্রেতা এবং ODM ছবিগুলি সহ প্রদান করে। একটি ডিভাইস ম্যানিফেস্টের বিষয়বস্তু ডিভাইসের টার্গেট FCM সংস্করণ দ্বারা সীমাবদ্ধ কিন্তু HAL গুলি তালিকাভুক্ত করতে পারে যা V-এর সাথে সম্পর্কিত FC-এর তুলনায় কঠোরভাবে নতুন।
ডিভাইস HALs
HALগুলি যেগুলি ডিভাইস ম্যানিফেস্টে তালিকাভুক্ত (প্রদান করা হয়েছে) এবং ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM) এ তালিকাভুক্ত (প্রয়োজনীয় বা ঐচ্ছিক)।
ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM)
একটি XML ফাইল যা ফ্রেমওয়ার্ক বাস্তবায়নের জন্য বিক্রেতার প্রয়োজনীয়তা নির্দিষ্ট করে। প্রতিটি ডিভাইসে একটি DCM থাকে।
ফ্রেমওয়ার্ক ম্যানিফেস্ট
একটি XML ফাইল যা নির্দিষ্ট করে যে HAL ভার্সন ভেন্ডর ইন্টারফেসের ফ্রেমওয়ার্ক সাইড, সিস্টেম, system_ext এবং প্রোডাক্ট ইমেজ সহ, প্রদান করে। ফ্রেমওয়ার্ক ম্যানিফেস্টের HALগুলি ডিভাইসের টার্গেট FCM সংস্করণ অনুসারে গতিশীলভাবে অক্ষম করা হয়েছে৷
ফ্রেমওয়ার্ক HALs
ফ্রেমওয়ার্ক ম্যানিফেস্টে প্রদত্ত HALগুলি তালিকাভুক্ত এবং ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM) এ প্রয়োজনীয় বা ঐচ্ছিক হিসাবে তালিকাভুক্ত।

কোডবেসে FCM জীবনচক্র

এই নথিটি বিমূর্তভাবে FCM জীবনচক্র বর্ণনা করে। সমর্থিত ম্যানিফেস্টগুলি দেখতে, hardware/interfaces/compatibility_matrix.<FCM>.xml যেখানে FCM পাওয়া যাবে system/libvintf/include/vintf/Level.h এ।

সংশ্লিষ্ট অ্যান্ড্রয়েড রিলিজ সংস্করণ শিপিং একটি ডিভাইসের একটি FCM মান সমতুল্য স্তরের চেয়ে বেশি বা সমান হবে বলে আশা করা হচ্ছে। উদাহরণস্বরূপ, Android 11 এর সাথে একটি ডিভাইস শিপিংয়ে সাধারণত FCM স্তর 5 থাকে তবে FCM স্তর 6 বা তার বেশি প্রয়োগ করা হয়, যা সামঞ্জস্য ম্যাট্রিক্সে নির্দিষ্ট করা বিভিন্ন অতিরিক্ত প্রয়োজনীয়তার সাথে আসে। সমর্থিত স্তরগুলি হল:

FCM অ্যান্ড্রয়েড সংস্করণ
4 Android 10/Q
5 Android 11/R
6 Android 12/S
7 Android 13/T
8 Android 14/U
202404 Android 15/V

এফসিএম লেভেল ভেন্ডর এপিআই লেভেলের সমান বা নতুন।

যখন অ্যান্ড্রয়েড একটি এফসিএম স্তরকে অবমূল্যায়ন করে, তখনও এটি বিদ্যমান ডিভাইসগুলির জন্য সমর্থিত। নিম্নতর FCM স্তরগুলিকে লক্ষ্য করে এমন ডিভাইসগুলিকে পরোক্ষভাবে নতুন FCM স্তরগুলিতে তালিকাভুক্ত HALগুলি ব্যবহার করার অনুমতি দেওয়া হয়, যতক্ষণ না সেগুলি শাখায় উপলব্ধ থাকে৷

একটি নতুন FCM সংস্করণে বিকাশ করুন৷

Android প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য FCM সংস্করণ বৃদ্ধি করে (যেমন Android 8 এবং 8.1)। বিকাশের সময়, নতুন compatibility_matrix.F.xml তৈরি করা হয় এবং বিদ্যমান compatibility_matrix.f.xml (যেখানে f < F ) আর পরিবর্তন করা হয় না।

একটি নতুন FCM সংস্করণ F এ বিকাশ শুরু করতে:

  1. সাম্প্রতিক compatibility_matrix.<F-1>.xml compatibility_matrix.F.xml এ কপি করুন।
  2. ফাইলের level অ্যাট্রিবিউট F এ আপডেট করুন।
  3. ডিভাইসে এই সামঞ্জস্যপূর্ণ ম্যাট্রিক্স ইনস্টল করতে সংশ্লিষ্ট বিল্ড নিয়ম যোগ করুন।

একটি নতুন HAL চালু করুন

বিকাশের সময়, বর্তমান FCM সংস্করণ F এ Android-এ একটি নতুন HAL (Wi-Fi, NFC, ইত্যাদি) প্রবর্তন করার সময়, নিম্নলিখিত optional সেটিংস সহ compatibility_matrix.F.xml এ HAL যোগ করুন:

  • optional="false" যদি V = F দিয়ে পাঠানো ডিভাইসগুলিকে এই HAL দিয়ে লঞ্চ করতে হয়,
  • optional="true" যদি V = F দিয়ে পাঠানো ডিভাইসগুলি এই HAL ছাড়াই চালু করতে পারে।

For example, Android 8.1 introduced cas@1.0 as an optional HAL. এই HAL বাস্তবায়নের জন্য Android 8.1-এর সাথে চালু হওয়া ডিভাইসগুলির প্রয়োজন নেই, তাই নিম্নোক্ত এন্ট্রিটি compatibility_matrix.F.xml এ যোগ করা হয়েছে (যার নাম দেওয়া হত compatibility_matrix.current.xml অস্থায়ীভাবে সেই রিলিজের বিকাশের সময়):

<hal format="hidl" optional="true">
    <name>android.hardware.cas</name>
    <version>1.0</version>
    <interface>
        <name>IMediaCasService</name>
        <instance>default</instance>
    </interface>
</hal>

একটি HAL আপগ্রেড করুন (অপ্রধান)

বিকাশের সময়, যখন একটি HAL-এর বর্তমান FCM সংস্করণ F তে xz থেকে x.(z+1) একটি ছোট-সংস্করণ আপগ্রেড হয়, যদি সেই সংস্করণটি হয়:

  • V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য প্রয়োজনীয়, compatibility_matrix.F.xml অবশ্যই x.(z+1) এবং optional="false" লিখতে হবে।
  • V = F , compatibility_matrix.F.xml এর সাথে চালু হওয়া ডিভাইসগুলিতে প্রয়োজন নেই। F.xml অবশ্যই compatibility_matrix থেকে xy-z এবং বিকল্পতা কপি করতে হবে compatibility_matrix.<F-1>.xml এবং সংস্করণ পরিবর্তন করে xw-(z+1) (যেখানে w >= y )

উদাহরণস্বরূপ, Android 8.1 broadcastradio@1.1 চালু করেছে 1.0 HAL-এর একটি ছোট সংস্করণ আপগ্রেড হিসাবে। পুরানো সংস্করণ, broadcastradio@1.0 , Android 8.0 এর সাথে চালু হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক যখন নতুন সংস্করণ, broadcastradio@1.1 , Android 8.1 এর সাথে চালু হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক৷ compatibility_matrix.1.xml এ:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

এই এন্ট্রিটি compatibility_matrix.F.xml এ অনুলিপি করা হয়েছে এবং নিম্নরূপ সংশোধন করা হয়েছে:

<hal format="hidl" optional="true">
    <name>android.hardware.broadcastradio</name>
    <version>1.0-1</version>
    <interface>
        <name>IBroadcastRadioFactory</name>
        <instance>default</instance>
    </interface>
</hal>

একটি HAL আপগ্রেড করুন (প্রধান)

বিকাশের সময়, যখন একটি HAL-এর বর্তমান FCM সংস্করণ F এ একটি প্রধান-সংস্করণ আপগ্রেড করা হয়, তখন নতুন প্রধান সংস্করণ x.0 নিম্নলিখিত optional সেটিংস সহ compatibility_matrix.F.xml এ যোগ করা হয়:

  • optional="false" শুধুমাত্র সংস্করণ x.0 সহ , যদি V = F দিয়ে শিপ করা ডিভাইসগুলি অবশ্যই x.0 দিয়ে চালু করতে হবে।
  • optional="false" but along with older major versions in the same <hal> tag, if devices that ship with V = F must launch with this HAL, but can launch with an older major version.
  • optional="true" যদি V = F দিয়ে পাঠানো ডিভাইসগুলিকে HAL চালু করতে না হয়।

উদাহরণস্বরূপ, Android 9 1.0 HAL-এর একটি প্রধান-সংস্করণ আপগ্রেড হিসাবে health@2.0 প্রবর্তন করে এবং 1.0 HAL-কে অবমূল্যায়ন করে। পুরানো সংস্করণ, health@1.0 , Android 8.0 এবং Android 8.1 এর সাথে লঞ্চ হওয়া ডিভাইসগুলির জন্য ঐচ্ছিক। অ্যান্ড্রয়েড 9 এর সাথে চালু হওয়া ডিভাইসগুলিকে অবশ্যই নতুন 2.0 সংস্করণ সরবরাহ করতে হবে। উদাহরণস্বরূপ, অনুমান করুন compatibility_matrix.legacy.xml , compatibility_matrix.1.xml , এবং compatibility_matrix.2.xml এই এন্ট্রিটি রয়েছে:

<hal format="hidl" optional="true">
    <name>android.hardware.health</name>
    <version>1.0</version>;
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

compatibility_matrix.F.xml এ এই এন্ট্রিটি অনুলিপি করুন এবং নিম্নরূপ পরিবর্তন করুন:

<hal format="hidl" optional="false">
    <name>android.hardware.health</name>
    <version>2.0</version>
    <interface>
        <name>IHealth</name>
        <instance>default</instance>
    </interface>
</hal>

বিধিনিষেধ:

  • কারণ 2.0 HAL compatibility_matrix.3.xmloptional="false" এর সাথে রয়েছে, Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলি অবশ্যই 2.0 HAL-এর সাথে পাঠাতে হবে৷`
  • কারণ 1.0 HAL compatibility_matrix.3.xml এ নেই, যে ডিভাইসগুলি Android 9 এর সাথে লঞ্চ হয় সেগুলি অবশ্যই 1.0 HAL প্রদান করবে না (যেহেতু এই HALটিকে অবচয় বলে মনে করা হয়)৷
  • যেহেতু 1.0 HAL একটি ঐচ্ছিক HAL হিসাবে legacy/1/2.xml (পুরনো FCM সংস্করণ যেগুলির সাথে Android 9 কাজ করতে পারে) উপস্থিত রয়েছে, Android 9 ফ্রেমওয়ার্ক এখনও 1.0 HAL-এর সাথে কাজ করতে পারে (যাকে সরিয়ে দেওয়া HAL সংস্করণ হিসাবে বিবেচনা করা হয় না )

নতুন FCM সংস্করণ

সিস্টেম পার্টিশনে একটি এফসিএম সংস্করণ প্রকাশ করার প্রক্রিয়াটি শুধুমাত্র একটি AOSP রিলিজের অংশ হিসাবে Google দ্বারা সম্পন্ন করা হয় এবং নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত করে:

  1. নিশ্চিত করুন compatibility_matrix.F.xml এ অ্যাট্রিবিউট level="F" আছে।
  2. সমস্ত ডিভাইস তৈরি এবং বুট নিশ্চিত করুন।
  3. সর্বশেষ ফ্রেমওয়ার্ক (শিপিং এপিআই লেভেলের উপর ভিত্তি করে) লঞ্চ করা ডিভাইসগুলির লক্ষ্য FCM সংস্করণ V >= F আছে তা নিশ্চিত করতে VTS পরীক্ষাগুলি আপডেট করুন
  4. AOSP এ ফাইল প্রকাশ করুন।

উদাহরণস্বরূপ, VTS পরীক্ষাগুলি নিশ্চিত করে যে Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলিতে লক্ষ্য FCM সংস্করণ >= 3 রয়েছে৷

উপরন্তু, পণ্য এবং system_ext FCM প্রতিটি প্ল্যাটফর্ম FCM সংস্করণের জন্য প্রয়োজনীয়তা তালিকাভুক্ত করতে পারে। পণ্য এবং system_ext পার্টিশনে FCM সংস্করণ প্রকাশ করা হয় যথাক্রমে এই চিত্রগুলির মালিক দ্বারা। পণ্যের FCM সংস্করণ নম্বর এবং system_ext পার্টিশনগুলিকে সিস্টেম পার্টিশনের সাথে সারিবদ্ধ হওয়া আবশ্যক। সিস্টেম পার্টিশনের FCM সংস্করণের মতো, পণ্যের FCM সংস্করণ F এবং system_ext পার্টিশনের সামঞ্জস্যতা ম্যাট্রিক্স লক্ষ্য FCM সংস্করণ F সহ একটি ডিভাইসে প্রয়োজনীয়তা প্রতিফলিত করে।

HAL সংস্করণ অবচয়

একটি HAL সংস্করণকে অবমূল্যায়ন করা একটি বিকাশকারীর সিদ্ধান্ত (যেমন AOSP HAL-এর জন্য, Google সিদ্ধান্ত নেয়)। এটি ঘটতে পারে যখন একটি উচ্চতর HAL সংস্করণ (সেই ছোট বা বড়) প্রকাশিত হয়।

একটি ডিভাইস HAL বর্জন করুন

যখন একটি প্রদত্ত ডিভাইস HAL foo@xy FCM সংস্করণ F এ অবচয়িত হয়, তখন এর মানে হল যে কোনো ডিভাইস লঞ্চ হওয়া লক্ষ্য FCM সংস্করণ V = F বা তার পরবর্তী সংস্করণ xy বা xy এর চেয়ে পুরনো কোনো সংস্করণে foo প্রয়োগ করা উচিত নয়। একটি অবচিত HAL সংস্করণ এখনও ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা সমর্থিত।

যখন FCM সংস্করণ F প্রকাশ করা হয়, একটি HAL সংস্করণ foo@xy অবচয় বলে বিবেচিত হয় যদি নির্দিষ্ট HAL সংস্করণটি লক্ষ্য FCM সংস্করণ V = F এর জন্য সাম্প্রতিক FCM-এ স্পষ্টভাবে বলা না থাকে। V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য, নিম্নলিখিত শর্তগুলির মধ্যে একটি সত্য:

  • কাঠামোর জন্য একটি উচ্চতর সংস্করণ প্রয়োজন (প্রধান বা ছোট);
  • ফ্রেমওয়ার্কের জন্য আর HAL এর প্রয়োজন নেই।

উদাহরণস্বরূপ, Android 9 এ, health@2.0 1.0 HAL-এর একটি প্রধান সংস্করণ আপগ্রেড হিসাবে চালু করা হয়েছে। health@1.0 compatibility_matrix.3.xml থেকে সরানো হয়েছে কিন্তু compatibility_matrix.legacy.xml , compatibility_matrix.1.xml , এবং compatibility_matrix.2.xml এ উপস্থিত রয়েছে। তাই, health@1.0 অবহেলিত বলে মনে করা হয়।

একটি ফ্রেমওয়ার্ক HAL বর্জন করুন

যখন একটি প্রদত্ত ফ্রেমওয়ার্ক HAL foo@xy FCM সংস্করণ F এ অবচয় করা হয়, তখন এর মানে হল যে কোনো ডিভাইস লঞ্চ করা লক্ষ্য FCM সংস্করণ V = F বা তার পরবর্তী সংস্করণে xy , বা xy এর চেয়ে পুরনো কোনো সংস্করণে foo প্রদানের আশা করা উচিত নয়। ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা একটি অবনমিত HAL সংস্করণ এখনও প্রদান করা হয়।

যখন FCM সংস্করণ F প্রকাশিত হয়, একটি HAL সংস্করণ foo@xy অবচয় বলে বিবেচিত হয় যদি ফ্রেমওয়ার্ক ম্যানিফেস্ট foo@xy জন্য max-level=" F - 1 " নির্দিষ্ট করে। V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য, ফ্রেমওয়ার্ক HAL foo@xy প্রদান করে না। V = F দিয়ে লঞ্চ হওয়া ডিভাইসগুলিতে ডিভাইসের সামঞ্জস্যতা ম্যাট্রিক্স অবশ্যই max-level < V সাথে HAL-কে তালিকাভুক্ত করবে না।

উদাহরণস্বরূপ, Android 12-এ, schedulerservice@1.0 বাতিল করা হয়েছে। Its max-level attribute is set to 5 , the FCM version introduced in Android 11. See Android 12 framework manifest .

লক্ষ্য FCM সংস্করণের জন্য সমর্থন অপসারণ

যখন একটি নির্দিষ্ট লক্ষ্য FCM সংস্করণ V এর সক্রিয় ডিভাইসগুলি একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে নেমে যায়, তখন লক্ষ্য FCM সংস্করণটি পরবর্তী ফ্রেমওয়ার্ক রিলিজের সেট S F থেকে সরানো হয়। এটি নিম্নলিখিত উভয় পদক্ষেপ দ্বারা সম্পন্ন হয়:

  1. বিল্ড রুলস থেকে compatibility_matrix.V.xml অপসারণ করা (যাতে এটি সিস্টেম ইমেজে ইন্সটল না হয়), এবং যেকোন কোড মুছে ফেলা যা বাস্তবায়িত বা অপসারিত ক্ষমতার উপর নির্ভর করে।

  2. ফ্রেমওয়ার্ক ম্যানিফেস্ট থেকে V থেকে কম বা সমান max-level সাথে ফ্রেমওয়ার্ক HALগুলি সরানো, এবং যেকোন কোড মুছে ফেলা যা সরানো ফ্রেমওয়ার্ক HALs প্রয়োগ করে।

একটি প্রদত্ত ফ্রেমওয়ার্ক রিলিজের জন্য SF এর বাইরে একটি লক্ষ্য FCM সংস্করণ সহ ডিভাইসগুলি সেই রিলিজে আপগ্রেড করতে পারে না।

HAL সংস্করণের অবস্থা

নিম্নলিখিত বিভাগগুলি HAL সংস্করণের সম্ভাব্য অবস্থা বর্ণনা করে (কালানুক্রমিক ক্রমে)।

অপ্রকাশিত

ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যতা ম্যাট্রিক্সে না থাকে, তাহলে এটিকে অপ্রকাশিত এবং সম্ভবত বিকাশে বিবেচনা করা হয়। এর মধ্যে HAL ভার্সন রয়েছে যা শুধুমাত্র compatibility_matrix.F.xml এ রয়েছে। উদাহরণ:

  • During the development of Android 9 the health@2.0 HAL was considered an unreleased HAL and was only present in compatibility_matrix.3.xml .
  • teleportation@1.0 HAL কোনো প্রকাশিত সামঞ্জস্যতা ম্যাট্রিক্সে নেই, এবং এটি একটি অপ্রকাশিত HAL হিসাবে বিবেচিত হয়।

ফ্রেমওয়ার্ক HAL-এর জন্য, যদি HAL সংস্করণ শুধুমাত্র একটি সম্পর্কহীন ডেভেলপমেন্ট শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে, তাহলে এটিকে অপ্রকাশিত বলে গণ্য করা হয়।

মুক্তি এবং বর্তমান

ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যপূর্ণ ম্যাট্রিক্সে থাকে, তাহলে এটি প্রকাশ করা হয়। উদাহরণস্বরূপ, এফসিএম সংস্করণ 3 হিমায়িত এবং এওএসপি -তে প্রকাশিত হওয়ার পরে, health@2.0 হালকে একটি প্রকাশিত এবং বর্তমান এইচএল সংস্করণ হিসাবে বিবেচনা করা হয়।

যদি কোনও এইচএল সংস্করণ সর্বজনীন এবং হিমায়িত সামঞ্জস্যতা ম্যাট্রিক্সে থাকে যা সর্বোচ্চ এফসিএম সংস্করণ রয়েছে এইচএল সংস্করণটি বর্তমান (অর্থাত্ অবমূল্যায়িত নয়)। উদাহরণ স্বরূপ, বিদ্যমান HAL সংস্করণগুলি (যেমন nfc@1.0 compatibility_matrix.legacy.xml তে চালু করা হয়েছে) যেগুলি compatibility_matrix.3.xml এ বিদ্যমান থাকে, সেগুলিকেও প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।

ফ্রেমওয়ার্ক এইচএএল-এর জন্য, যদি কোনও HAL সংস্করণ max-level বৈশিষ্ট্য ছাড়াই সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে বা (অস্বাভাবিকভাবে) এই শাখায় প্রকাশিত এফসিএম সংস্করণের সমান বা উচ্চতর max-level থাকে, তবে এটি প্রকাশিত হিসাবে বিবেচিত হয়। এবং বর্তমান HAL সংস্করণ। উদাহরণস্বরূপ, Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা displayservice HAL অ্যান্ড্রয়েড 12-এ প্রকাশিত এবং বর্তমান।

মুক্তি কিন্তু অবমূল্যায়িত

ডিভাইস HAL-এর জন্য, একটি HAL সংস্করণ বাতিল করা হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি পূরণ করা হয়:

  • এটি মুক্তি পায়।
  • এটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে নেই যার সর্বোচ্চ FCM সংস্করণ রয়েছে৷
  • এটি একটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে যা ফ্রেমওয়ার্ক এখনও সমর্থন করে৷

উদাহরণ:

তাই Android 9-এ power@1.0 বর্তমান, কিন্তু অবমূল্যায়িত নয়

ফ্রেমওয়ার্ক HAL-এর জন্য, যদি HAL সংস্করণ সাম্প্রতিক প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে যার max-level বৈশিষ্ট্য এই শাখায় FCM সংস্করণ রিলিজের চেয়ে কম থাকে, তবে এটি একটি প্রকাশিত কিন্তু অবচয়িত HAL সংস্করণ হিসাবে বিবেচিত হয়। উদাহরণস্বরূপ, Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা অনুসারে, schedulerservice HAL রিলিজ করা হয়েছে কিন্তু Android 12-এ অবমূল্যায়িত করা হয়েছে।

সরানো হয়েছে

ডিভাইস HALগুলির জন্য, একটি HAL সংস্করণ সরানো হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি সত্য হয়:

  • এটি আগে মুক্তি পেয়েছিল।
  • এটি কোনো পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে নয় যা ফ্রেমওয়ার্ক সমর্থন করে।

সামঞ্জস্যপূর্ণ ম্যাট্রিক্সগুলি যেগুলি সর্বজনীন, হিমায়িত, কিন্তু ফ্রেমওয়ার্ক দ্বারা সমর্থিত নয় সেগুলিকে সরিয়ে দেওয়া HAL সংস্করণগুলিকে সংজ্ঞায়িত করার জন্য কোডবেসে রাখা হয় যাতে VTS পরীক্ষাগুলি অপসারণ করা HALগুলি নতুন ডিভাইসে নেই তা নিশ্চিত করার জন্য লেখা যেতে পারে৷

ফ্রেমওয়ার্ক HAL-এর জন্য, একটি HAL সংস্করণ সরানো হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি পূরণ করা হয়:

  • এটি আগে মুক্তি পেয়েছিল।
  • এটি সর্বশেষ প্রকাশিত শাখার কোনো কাঠামোর মধ্যে নেই।

উত্তরাধিকারী FCMs

টার্গেট এফসিএম সংস্করণ লিগ্যাসি সমস্ত নন-ট্রেবল ডিভাইসের জন্য একটি বিশেষ মান। লিগ্যাসি এফসিএম, compatibility_matrix.legacy.xml , লিগ্যাসি ডিভাইসে (যেমন Android 8.0 এর আগে চালু হওয়া ডিভাইস) ফ্রেমওয়ার্কের প্রয়োজনীয়তা তালিকাভুক্ত করে।

যদি এই ফাইলটি সংস্করণ F সহ একটি FCM-এর জন্য বিদ্যমান থাকে, তাহলে যেকোন নন-ট্রেবল ডিভাইস F তে আপগ্রেড করা যেতে পারে যদি তার ডিভাইস ম্যানিফেস্ট এই ফাইলের সাথে সামঞ্জস্যপূর্ণ হয়। এটির অপসারণ অন্যান্য টার্গেট এফসিএম সংস্করণগুলির জন্য FCMগুলির মতো একই পদ্ধতি অনুসরণ করে (একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে সক্রিয় প্রাক-8.0 ডিভাইসের সংখ্যা নেমে যাওয়ার পরে সরানো হয়)।

FCM সংস্করণ প্রকাশ করা হয়েছে

মুক্তিপ্রাপ্ত FCM সংস্করণগুলির তালিকা hardware/interfaces/compatibility_matrices অধীনে পাওয়া যাবে।

একটি নির্দিষ্ট অ্যান্ড্রয়েড রিলিজের সাথে প্রকাশিত FCM সংস্করণ খুঁজে পেতে, Level.h দেখুন।