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

Android 14 অনুযায়ী, সমর্থিত স্তরগুলি হল:

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

একটি নতুন 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 আপগ্রেড করুন (অপ্রধান)

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

  • V = F দিয়ে চালু হওয়া ডিভাইসগুলির জন্য প্রয়োজনীয়, compatibility_matrix.F.xml অবশ্যই x.(z+1) এবং optional="false" লিখতে হবে।
  • V = F দিয়ে লঞ্চ করা ডিভাইসগুলিতে প্রয়োজন নেই, compatibility_matrix.F.xml অবশ্যই compatibility_matrix.<F-1>.xml থেকে xy-z এবং বিকল্পতা অনুলিপি করবে।<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 এর সাথে লঞ্চ করা ডিভাইসগুলি অবশ্যই অবচ্যুত 1.0 HAL প্রদান করবে না এবং পরিবর্তে অবশ্যই নতুন 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 বাতিল করা হয়েছে। এর 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 তে আপগ্রেড করা যেতে পারে যদি তার ডিভাইস ম্যানিফেস্ট এই ফাইলের সাথে সামঞ্জস্যপূর্ণ হয়। এটির অপসারণ অন্যান্য টার্গেট এফসিএম সংস্করণগুলির জন্য এফসিএমগুলির মতো একই পদ্ধতি অনুসরণ করে (একটি নির্দিষ্ট থ্রেশহোল্ডের নীচে সক্রিয় প্রাক-8.0 ডিভাইসের সংখ্যা নেমে যাওয়ার পরে সরানো হয়)।

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

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

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