একটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক রিলিজে একাধিক ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স (এফসিএম) রয়েছে—প্রতিটি আপগ্রেডযোগ্য টার্গেট এফসিএম সংস্করণের জন্য একটি—যা ফ্রেমওয়ার্কটি কী ব্যবহার করতে পারে এবং লক্ষ্য এফসিএম সংস্করণের প্রয়োজনীয়তা নির্ধারণ করে। FCM লাইফসাইকেলের অংশ হিসেবে, Android HIDL HALগুলিকে অবমূল্যায়ন করে এবং সরিয়ে দেয়, তারপর HAL সংস্করণের স্থিতি প্রতিফলিত করতে FCM ফাইলগুলিকে সংশোধন করে৷
তাদের নিজস্ব ইকোসিস্টেমে ফ্রেমওয়ার্ক-কেবল ওটিএ সক্ষম করতে, যে অংশীদাররা বিক্রেতা ইন্টারফেসগুলি প্রসারিত করে তাদেরও একই পদ্ধতি ব্যবহার করে HIDL HAL গুলিকে অবমূল্যায়ন করা এবং অপসারণ করা উচিত।
পরিভাষা
ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM) | একটি XML ফাইল যা বিক্রেতা বাস্তবায়নের সাথে সামঞ্জস্যপূর্ণ কাঠামোর প্রয়োজনীয়তা নির্দিষ্ট করে। সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সংস্করণ করা হয়েছে, এবং প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য একটি নতুন সংস্করণ হিমায়িত করা হয়েছে। প্রতিটি ফ্রেমওয়ার্ক রিলিজে একাধিক FCM রয়েছে। |
---|---|
প্ল্যাটফর্ম FCM সংস্করণ (S F ) | ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM সংস্করণের সেট। ফ্রেমওয়ার্ক যে কোনো বিক্রেতা বাস্তবায়নের সাথে কাজ করতে পারে যা এই FCMগুলির একটিকে সন্তুষ্ট করে। |
FCM সংস্করণ (F) | ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM-এর মধ্যে সর্বোচ্চ সংস্করণ। |
লক্ষ্য FCM সংস্করণ (V) | লক্ষ্যযুক্ত এফসিএম সংস্করণ (এসএফ থেকে), ডিভাইস ম্যানিফেস্টে স্পষ্টভাবে ঘোষণা করা হয়েছে, যে একটি বিক্রেতা বাস্তবায়ন সন্তুষ্ট। একটি বিক্রেতা বাস্তবায়ন একটি প্রকাশিত FCM এর বিপরীতে তৈরি করা আবশ্যক, যদিও এটি তার ডিভাইস ম্যানিফেস্টে নতুন HAL সংস্করণ ঘোষণা করতে পারে। |
HAL সংস্করণ | একটি HAL সংস্করণে foo@xy ফর্ম্যাট রয়েছে, যেখানে foo হল HAL নাম এবং xy হল নির্দিষ্ট সংস্করণ; যেমন nfc@1.0 , keymaster@3.0 (মূল উপসর্গ, যেমন android.hardware , এই নথিতে বাদ দেওয়া হয়েছে।) |
ডিভাইস ম্যানিফেস্ট | XML ফাইলগুলি যা নির্দিষ্ট করে যে HAL সংস্করণগুলি বিক্রেতা ইন্টারফেসের ডিভাইস সাইড, বিক্রেতা এবং ODM ছবিগুলি সহ, প্রদান করে। একটি ডিভাইস ম্যানিফেস্টের বিষয়বস্তু ডিভাইসের টার্গেট FCM সংস্করণ দ্বারা সীমাবদ্ধ কিন্তু V-এর সাথে সম্পর্কিত FCM-এর তুলনায় কঠোরভাবে নতুন HALগুলি তালিকাভুক্ত করতে পারে। |
ডিভাইস HALs | HALগুলি যেগুলি ডিভাইস ম্যানিফেস্টে তালিকাভুক্ত (প্রদান করা হয়েছে) এবং ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্সে (FCM) তালিকাভুক্ত (প্রয়োজনীয় বা ঐচ্ছিক)। |
ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM) | একটি XML ফাইল যা ফ্রেমওয়ার্ক বাস্তবায়নের জন্য বিক্রেতার প্রয়োজনীয়তা নির্দিষ্ট করে। প্রতিটি ডিভাইসে একটি DCM থাকে। |
ফ্রেমওয়ার্ক ম্যানিফেস্ট | একটি XML ফাইল যা নির্দিষ্ট করে যে HAL সংস্করণগুলি ভেন্ডর ইন্টারফেসের ফ্রেমওয়ার্ক সাইড, সিস্টেম, system_ext এবং পণ্যের ছবিগুলি সহ প্রদান করে। ফ্রেমওয়ার্ক ম্যানিফেস্টের HALগুলি ডিভাইসের টার্গেট FCM সংস্করণ অনুসারে গতিশীলভাবে অক্ষম করা হয়েছে৷ |
ফ্রেমওয়ার্ক HALs | HAL গুলি যেগুলি ফ্রেমওয়ার্ক ম্যানিফেস্টে প্রদত্ত হিসাবে তালিকাভুক্ত এবং ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM) এ প্রয়োজনীয় বা ঐচ্ছিক হিসাবে তালিকাভুক্ত। |
একটি নতুন FCM সংস্করণে বিকাশ করা হচ্ছে
Android প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য FCM সংস্করণ বৃদ্ধি করে (যেমন Android 8, 8.1, ইত্যাদি)। বিকাশের সময়, নতুন compatibility_matrix.current.xml
তৈরি করা হয় ( F
) এবং বিদ্যমান compatibility_matrix.f.xml
(যেখানে f
< F
) আর পরিবর্তন করা হয় না।
একটি নতুন FCM সংস্করণ F
তে বিকাশ শুরু করতে:
- সাম্প্রতিক
compatibility_matrix.<F-1>.xml
compatibility_matrix.current.xml
কপি করুন। - ফাইলের
level
অ্যাট্রিবিউটটিF
এ আপডেট করুন। - ডিভাইসে এই সামঞ্জস্যতা ম্যাট্রিক্স ইনস্টল করতে সংশ্লিষ্ট বিল্ড নিয়ম যোগ করুন।
একটি নতুন HAL চালু করা হচ্ছে
বিকাশের সময়, বর্তমান FCM সংস্করণ F
এ Android-এ একটি নতুন HAL (Wi-Fi, NFC, ইত্যাদি) প্রবর্তন করার সময়, নিম্নলিখিত optional
সেটিংস সহ compatibility_matrix.current.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.current.xml
এ যোগ করা হয়েছে (Android 8.1 প্রকাশের পরে compatibility_matrix.2.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.current.xml
অবশ্যইx.(z+1)
এবংoptional="false"
হবে। -
V = F
দিয়ে লঞ্চ করা ডিভাইসগুলিতে প্রয়োজন নেই,compatibility_matrix.current.xml
অবশ্যই compatibility_matrix থেকেxy-z
এবং বিকল্পতা অনুলিপি করতে হবেcompatibility_matrix.<F-1>.xml
এবং সংস্করণ পরিবর্তন করেxw-(z+1)
(যেখানেw >= y
)
উদাহরণস্বরূপ, অ্যান্ড্রয়েড 8.1 1.0 HAL-এর একটি ছোট সংস্করণ আপগ্রেড হিসাবে broadcastradio@1.1
চালু করেছে। পুরানো সংস্করণ, 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.current.xml
এ কপি করা হয়েছে (Android 8.1 প্রকাশের পর compatibility_matrix.2.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.current.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.current.xml
এ কপি করা হয়েছে (Android 9 রিলিজের সাথে compatibility_matrix.3.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.xml
এoptional="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 দ্বারা সম্পন্ন হয় এবং এতে নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত রয়েছে:
-
compatibility_matrix.current.xml
নাম পরিবর্তন করুনcompatibility_matrix.F.xml
। - নিশ্চিত করুন যে ফাইলটিতে অ্যাট্রিবিউট
level="F"
আছে। - ফাইলের নাম পরিবর্তন প্রতিফলিত করতে সংশ্লিষ্ট বিল্ড নিয়মগুলি সম্পাদনা করুন।
- সমস্ত ডিভাইস তৈরি এবং বুট নিশ্চিত করুন।
- সর্বশেষ ফ্রেমওয়ার্ক (শিপিং এপিআই স্তরের উপর ভিত্তি করে) সাথে লঞ্চ হওয়া ডিভাইসগুলির লক্ষ্য FCM সংস্করণ
V >= F
আছে তা নিশ্চিত করতে VTS পরীক্ষাগুলি আপডেট করুন। - AOSP এ ফাইল প্রকাশ করুন।
একবার পুনঃনামকরণ এবং প্রকাশিত হলে এই ফাইলটি পরিবর্তন করা যাবে না । উদাহরণস্বরূপ, অ্যান্ড্রয়েড 9 বিকাশের সময় নিম্নলিখিত ফাইলগুলি hardware/interfaces/compatibility_matrices/
এর জন্য তৈরি করা হয়েছে:
-
compatibility_matrix.legacy.xml
-
compatibility_matrix.1.xml
-
compatibility_matrix.2.xml
-
compatibility_matrix.current.xml
যখন Android 9 প্রকাশ করা হয়, compatibility_matrix.current.xml
এর নাম পরিবর্তন করে compatibility_matrix.3.xml
করা হয় এবং নিম্নলিখিত ফাইলগুলি hardware/interfaces/compatibility_matrices/
এর জন্য তৈরি করা হয়:
-
compatibility_matrix.legacy.xml
-
compatibility_matrix.1.xml
-
compatibility_matrix.2.xml
-
compatibility_matrix.3.xml
VTS পরীক্ষাগুলি নিশ্চিত করে যে Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলির লক্ষ্য FCM সংস্করণ >= 3 রয়েছে৷
উপরন্তু, পণ্য এবং system_ext FCM প্রতিটি প্ল্যাটফর্ম FCM সংস্করণের জন্য প্রয়োজনীয়তা তালিকাভুক্ত করতে পারে। পণ্য এবং system_ext পার্টিশনে FCM সংস্করণ প্রকাশ করা হয় যথাক্রমে এই চিত্রগুলির মালিক দ্বারা। পণ্যের FCM সংস্করণ নম্বর এবং system_ext পার্টিশনগুলিকে অবশ্যই সিস্টেম পার্টিশনের সাথে সারিবদ্ধ করতে হবে। সিস্টেম পার্টিশনের FCM সংস্করণের মতো, পণ্য এবং system_ext পার্টিশনের FCM সংস্করণ F-এর সামঞ্জস্যপূর্ণ ম্যাট্রিক্স লক্ষ্য 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
@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 থেকে সরানো হয়। এটি নিম্নলিখিত উভয় পদক্ষেপ দ্বারা সম্পন্ন হয়:
- বিল্ড রুলস থেকে
compatibility_matrix.V.xml
অপসারণ করা হচ্ছে (যাতে এটি সিস্টেম ইমেজে ইন্সটল না হয়), এবং যেকোন কোড মুছে ফেলা যা বাস্তবায়িত বা অপসারিত কার্যকারিতার উপর নির্ভর করে। - ফ্রেমওয়ার্ক ম্যানিফেস্ট থেকে
V
এর থেকে কম বা সমানmax-level
সাথে ফ্রেমওয়ার্ক HALগুলি সরানো, এবং যেকোন কোড মুছে ফেলা যা সরানো ফ্রেমওয়ার্ক HALs প্রয়োগ করে।
একটি প্রদত্ত ফ্রেমওয়ার্ক রিলিজের জন্য SF এর বাইরে লক্ষ্য FCM সংস্করণ সহ ডিভাইসগুলি সেই রিলিজে আপগ্রেড করতে পারে না।
HAL সংস্করণের অবস্থা
নিম্নলিখিত বিভাগগুলি HAL সংস্করণের সম্ভাব্য অবস্থা বর্ণনা করে (কালানুক্রমিক ক্রমে)।
অপ্রকাশিত
ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যতা ম্যাট্রিক্সে না থাকে, তাহলে এটিকে অপ্রকাশিত এবং সম্ভবত বিকাশে বিবেচনা করা হয়। এর মধ্যে HAL সংস্করণগুলি রয়েছে যা শুধুমাত্র compatibility_matrix.current.xml
এ রয়েছে। উদাহরণ:
- অ্যান্ড্রয়েড 9-এর বিকাশের সময় (
compatibility_matrix.3.xml
এর আগেcompatibiility_matrix.current.xml
নামকরণ করা হয়),health@2.0
কে একটি অপ্রকাশিত HAL বলে মনে করা হয়েছিল। -
teleportation@1.0
HAL কোনো প্রকাশিত সামঞ্জস্যতা ম্যাট্রিক্সে নেই, এবং এটি একটি অপ্রকাশিত HAL হিসাবে বিবেচিত হয়।
ফ্রেমওয়ার্ক HAL-এর জন্য, যদি HAL সংস্করণ শুধুমাত্র একটি সম্পর্কহীন ডেভেলপমেন্ট শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে, তাহলে এটিকে অপ্রকাশিত বলে গণ্য করা হয়।
মুক্তি এবং বর্তমান
ডিভাইস HAL-এর জন্য, যদি HAL সংস্করণ কোনো পাবলিক এবং হিমায়িত সামঞ্জস্যপূর্ণ ম্যাট্রিক্সে থাকে, তাহলে এটি প্রকাশ করা হয়। উদাহরণস্বরূপ, এফসিএম সংস্করণ 3 হিমায়িত হওয়ার পরে (যখন compatibiility_matrix.current.xml
এর নাম পরিবর্তন করে compatibility_matrix.3.xml
করা হয়) এবং AOSP-তে প্রকাশিত, health@2.0
HAL একটি প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচিত হয়।
যদি একটি HAL সংস্করণ একটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে থাকে যার সর্বোচ্চ FCM সংস্করণ রয়েছে ( compatibility_matrix.current.xml
ব্যতীত), HAL সংস্করণটি বর্তমান (অর্থাৎ অবমুক্ত নয়)। উদাহরণ স্বরূপ, বিদ্যমান HAL সংস্করণগুলি (যেমন nfc@1.0
compatibility_matrix.3.xml
তে চালু করা হয়েছে) যেগুলি compatibility_matrix.legacy.xml
এ বিদ্যমান থাকে, সেগুলিকেও প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।
ফ্রেমওয়ার্ক এইচএএল-এর জন্য, যদি কোনও এইচএএল সংস্করণ max-level
বৈশিষ্ট্য ছাড়াই সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে বা (অস্বাভাবিকভাবে) এই শাখায় প্রকাশিত এফসিএম সংস্করণের সমান বা উচ্চতর max-level
থাকে, তবে এটি একটি প্রকাশিত হিসাবে বিবেচিত হয়। এবং বর্তমান HAL সংস্করণ। উদাহরণস্বরূপ, displayservice
এইচএএল রিলিজ করা হয়েছে এবং অ্যান্ড্রয়েড 12-এ বর্তমান, যেমন উল্লেখ করা হয়েছে Android 12framework manifest
।
রিলিজ করা হয়েছে কিন্তু ডিপ্রেকেটেড
ডিভাইস HAL-এর জন্য, একটি HAL সংস্করণ বাতিল করা হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিতগুলি পূরণ করা হয়:
- এটি মুক্তি পায়।
- এটি সর্বজনীন এবং হিমায়িত সামঞ্জস্যতা ম্যাট্রিক্সে নেই যার সর্বোচ্চ FCM সংস্করণ রয়েছে৷
- এটি একটি সর্বজনীন এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে যা ফ্রেমওয়ার্ক এখনও সমর্থন করে৷
উদাহরণ:
-
health@1.0
HALcompatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, এবংcompatibility_matrix.2.xml
এ আছে, কিন্তুcompatibility_matrix.3.xml
এ নয়। তাই এটি অ্যান্ড্রয়েড 9-এ অবচয় বলে বিবেচিত হয়। - পাওয়ার HAL-এর Android 9-এ একটি ছোট সংস্করণ আপগ্রেড করা হয়েছে, কিন্তু
power@1.0
এখনওcompatibility_matrix.3.xml
এ রয়েছে।-
power@1.0
compatibility_matrix.legacy.xml
,compatibility_matrix.1.xml
, এবংcompatibility_matrix.2.xml
তে রয়েছে। -
compatibility_matrix.3.xml
এরpower@1.0-1
আছে।
-
তাই Android 9-এ power@1.0
বর্তমান, কিন্তু অবমূল্যায়িত নয় ।
ফ্রেমওয়ার্ক এইচএএল-এর জন্য, যদি একটি HAL সংস্করণ সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে যার max-level
বৈশিষ্ট্য এই শাখায় প্রকাশিত FCM সংস্করণের চেয়ে কম থাকে, তবে এটি একটি প্রকাশিত কিন্তু অবচয়িত HAL সংস্করণ হিসাবে বিবেচিত হয়। উদাহরণ স্বরূপ, schedulerservice
সার্ভিস HAL রিলিজ করা হয়েছে কিন্তু Android 12-এ অবমুক্ত করা হয়েছে, যেমনটি দ্বারা নির্দিষ্ট করা হয়েছে Android 12framework manifest
।
সরানো হয়েছে
ডিভাইস 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
দেখুন।