একটি অ্যান্ড্রয়েড ফ্রেমওয়ার্ক রিলিজে একাধিক ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স (FCM) থাকে, প্রতিটি আপগ্রেডেবল টার্গেট FCM ভার্সনের জন্য একটি, যা ফ্রেমওয়ার্কটি কী ব্যবহার করতে পারে এবং টার্গেট FCM ভার্সনের প্রয়োজনীয়তা নির্ধারণ করে। FCM লাইফসাইকেলের অংশ হিসাবে, অ্যান্ড্রয়েড HIDL HAL গুলিকে অবমূল্যায়ন করে এবং অপসারণ করে, তারপর HAL ভার্সনের অবস্থা প্রতিফলিত করার জন্য FCM ফাইলগুলিকে পরিবর্তন করে।
তাদের নিজস্ব ইকোসিস্টেমে ফ্রেমওয়ার্ক-অনলি OTA সক্ষম করার জন্য, যেসব অংশীদার বিক্রেতা ইন্টারফেস প্রসারিত করে তাদেরও একই পদ্ধতি ব্যবহার করে HIDL HAL গুলিকে অবচয় এবং অপসারণ করা উচিত।
পরিভাষা
- ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM)
- একটি XML ফাইল যা বিক্রেতা বাস্তবায়নের জন্য ফ্রেমওয়ার্কের প্রয়োজনীয়তা নির্দিষ্ট করে। সামঞ্জস্যতা ম্যাট্রিক্সটি সংস্করণ করা হয় এবং প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য একটি নতুন সংস্করণ হিমায়িত করা হয়। প্রতিটি ফ্রেমওয়ার্ক রিলিজে একাধিক FCM থাকে।
- প্ল্যাটফর্ম FCM সংস্করণ (S F )
- একটি ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM সংস্করণের সেট। ফ্রেমওয়ার্কটি যেকোনো বিক্রেতা বাস্তবায়নের সাথে কাজ করতে পারে যা এই FCM গুলির একটিকে সন্তুষ্ট করে।
- FCM সংস্করণ (F)
- একটি ফ্রেমওয়ার্ক রিলিজে সমস্ত FCM-এর মধ্যে সর্বোচ্চ সংস্করণ।
- টার্গেট এফসিএম সংস্করণ (ভি)
- ডিভাইস ম্যানিফেস্টে স্পষ্টভাবে ঘোষিত লক্ষ্যযুক্ত FCM সংস্করণ (S F থেকে), যেটি একটি বিক্রেতা বাস্তবায়ন সন্তুষ্ট করে। একটি প্রকাশিত FCM-এর বিপরীতে একটি বিক্রেতা বাস্তবায়ন তৈরি করতে হবে, যদিও এটি তার ডিভাইস ম্যানিফেস্টে নতুন HAL সংস্করণ ঘোষণা করতে পারে।
- এইচএএল সংস্করণ
- একটি HAL সংস্করণের ফর্ম্যাট
foo@xy, যেখানেfooহল HAL নাম এবংxyহল নির্দিষ্ট সংস্করণ; যেমনnfc@1.0,keymaster@3.0(মূল উপসর্গ, যেমনandroid.hardware, এই ডকুমেন্টে বাদ দেওয়া হয়েছে।) - ডিভাইস ম্যানিফেস্ট
- XML ফাইলগুলি যা বিক্রেতা ইন্টারফেসের ডিভাইস সাইড, বিক্রেতা এবং ODM চিত্র সহ, কোন HAL সংস্করণগুলি প্রদান করে তা নির্দিষ্ট করে। ডিভাইস ম্যানিফেস্টের বিষয়বস্তু ডিভাইসের টার্গেট FCM সংস্করণ দ্বারা সীমাবদ্ধ থাকে তবে V এর সাথে সম্পর্কিত FC এর তুলনায় সম্পূর্ণ নতুন HAL গুলিকে তালিকাভুক্ত করতে পারে।
- ডিভাইস HAL গুলি
- ডিভাইস ম্যানিফেস্টে তালিকাভুক্ত (প্রদত্ত) এবং ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM) এ তালিকাভুক্ত HAL গুলি।
- ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM)
- একটি XML ফাইল যা ফ্রেমওয়ার্ক বাস্তবায়নের ক্ষেত্রে বিক্রেতার প্রয়োজনীয়তা নির্দিষ্ট করে। প্রতিটি ডিভাইসে একটি করে DCM থাকে।
- ফ্রেমওয়ার্ক ম্যানিফেস্ট
- একটি XML ফাইল যা সিস্টেম, system_ext এবং পণ্যের ছবি সহ ভেন্ডর ইন্টারফেসের ফ্রেমওয়ার্ক সাইডের কোন HAL সংস্করণগুলি প্রদান করে তা নির্দিষ্ট করে। ডিভাইসের টার্গেট FCM সংস্করণ অনুসারে ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকা HALগুলি গতিশীলভাবে অক্ষম করা হয়।
- ফ্রেমওয়ার্ক HAL গুলি
- ফ্রেমওয়ার্ক ম্যানিফেস্টে প্রদত্ত তালিকাভুক্ত এবং ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স (DCM) তে তালিকাভুক্ত HAL গুলি।
কোডবেসে FCM জীবনচক্র
এই ডকুমেন্টটি সারাংশে FCM জীবনচক্র বর্ণনা করে। সমর্থিত ম্যানিফেস্টগুলি দেখতে, hardware/interfaces/compatibility_matrices/compatibility_matrix.<FCM>.xml দেখুন যেখানে FCM system/libvintf/include/vintf/Level.h এ পাওয়া যাবে।
সংশ্লিষ্ট অ্যান্ড্রয়েড রিলিজ সংস্করণে পাঠানো একটি ডিভাইসের FCM মান সমতুল্য স্তরের চেয়ে বেশি বা সমান হবে বলে আশা করা হচ্ছে। উদাহরণস্বরূপ, Android 12 দিয়ে পাঠানো একটি ডিভাইসের FCM মান সাধারণত 6 স্তরের FCM হবে, তবে এটি FCM স্তর 7 বা তার বেশি প্রয়োগ করতে পারে, যা অ্যান্ড্রয়েড আচরণ পরিবর্তন করে এবং নতুন বিক্রেতা API গুলিকে সামঞ্জস্যতা ম্যাট্রিক্সে নির্দিষ্টভাবে ব্যবহার করতে বাধ্য করে। Android 16 এর জন্য সমর্থিত স্তরগুলি হল:
| এফসিএম | অ্যান্ড্রয়েড সংস্করণ |
|---|---|
| ৬ | অ্যান্ড্রয়েড ১২/এস |
| ৭ | অ্যান্ড্রয়েড ১৩/টি |
| ৮ | অ্যান্ড্রয়েড ১৪/ইউ |
| ২০২৪০৪ | অ্যান্ড্রয়েড ১৫/ভি |
| ২০২৫০৪ | অ্যান্ড্রয়েড ১৬/বি |
FCM লেভেলটি ভেন্ডর API লেভেলের সমান বা তার চেয়ে নতুন।
যখন প্রজেক্ট ট্রেবল ঘোষণা করা হয়েছিল, তখন অ্যান্ড্রয়েড সিস্টেমের ছবিগুলি পূর্ববর্তী তিনটি সংস্করণের (মোট চারটি) বিক্রেতা বাস্তবায়নের সাথে সামঞ্জস্যপূর্ণভাবে তৈরি করা হয়েছিল। দীর্ঘ ডিভাইসের জীবনকাল সমর্থন করার জন্য, এই স্প্যানটি 202404 এবং তার পরে বর্তমান এবং ছয়টি পূর্ববর্তী FCM সংস্করণ (মোট সাতটি) সমর্থন করার জন্য বৃদ্ধি করা হয়েছে।
যখন অ্যান্ড্রয়েড একটি FCM স্তর অবচয় করে, তখনও বিদ্যমান ডিভাইসগুলির জন্য এটি সমর্থিত থাকে। নিম্ন FCM স্তরগুলিকে লক্ষ্য করে এমন ডিভাইসগুলিকে উচ্চতর FCM স্তরে তালিকাভুক্ত HAL ব্যবহার করার অনুমতি দেওয়া হয়, যতক্ষণ না সেগুলি শাখায় উপলব্ধ থাকে।
একটি নতুন FCM সংস্করণে বিকাশ করুন
প্রতিটি ফ্রেমওয়ার্ক রিলিজের জন্য Android FCM সংস্করণ বৃদ্ধি করে (যেমন Android 8 এবং 8.1)। ডেভেলপমেন্টের সময়, নতুন compatibility_matrix.F.xml তৈরি করা হয় এবং বিদ্যমান compatibility_matrix.f.xml (যেখানে f < F ) আর পরিবর্তন করা হয় না।
একটি নতুন FCM সংস্করণ F তে ডেভেলপমেন্ট শুরু করতে:
- সর্বশেষ
compatibility_matrix.<F-1>.xmlকপি করুনcompatibility_matrix.F.xmlএ। - ফাইলের
levelঅ্যাট্রিবিউটটিFতে আপডেট করুন। - ডিভাইসে এই সামঞ্জস্যতা ম্যাট্রিক্স ইনস্টল করতে সংশ্লিষ্ট বিল্ড নিয়ম যোগ করুন।
একটি নতুন HAL চালু করুন
ডেভেলপমেন্টের সময়, বর্তমান FCM সংস্করণ F তে Android এ একটি নতুন HAL (Wi-Fi, NFC, ইত্যাদি) প্রবর্তন করার সময়, compatibility_matrix.F.xml তে HAL যোগ করুন।
উদাহরণস্বরূপ, অ্যান্ড্রয়েড 8.1 চালু করেছে cas@1.0 । অ্যান্ড্রয়েড 8.1 দিয়ে চালু হওয়া ডিভাইসগুলি এই HAL বাস্তবায়ন করতে পারে, তাই নিম্নলিখিত এন্ট্রিটি compatibility_matrix.F.xml এ যোগ করা হয়েছে (যা সেই রিলিজের বিকাশের সময় সাময়িকভাবে compatibility_matrix.current.xml নামে পরিচিত ছিল):
<hal format="hidl">
<name>android.hardware.cas</name>
<version>1.0</version>
<interface>
<name>IMediaCasService</name>
<instance>default</instance>
</interface>
</hal>
একটি HAL (মাইনর) আপগ্রেড করুন
AIDL HAL সংস্করণগুলিকে HAL সংস্করণ হিসেবে গণ্য করা হয়। HIDL ইন্টারফেস সংস্করণগুলিতে 1.2 এর মতো major . minor সংস্করণ রয়েছে।
ডেভেলপমেন্টের সময়, যখন একটি AIDL HAL-এর বর্তমান FCM সংস্করণ F তে 2 থেকে 3 সংস্করণে আপগ্রেড করা হয়, তখন compatibility_matrix.F.xml এ HAL এন্ট্রিতে নতুন সংস্করণ যোগ করা হয়। একটি HAL এন্ট্রির সংস্করণ ক্ষেত্র 2-3 এর মতো রেঞ্জ গ্রহণ করে।
উদাহরণস্বরূপ, Android FCM F HAL-এর একটি ছোট সংস্করণ আপগ্রেড হিসেবে foo@3 চালু করেছে। পুরোনো সংস্করণ, foo@2 , পুরোনো FCM-গুলিকে লক্ষ্য করে তৈরি ডিভাইসগুলির জন্য ব্যবহৃত হয়, যখন নতুন সংস্করণ, foo@3 , Android FCM F কে লক্ষ্য করে তৈরি ডিভাইসগুলির জন্য ব্যবহার করা যেতে পারে। ভার্সন 2 আগের পুরোনো FCM-গুলিতে এন্ট্রিটি দেখতে এরকম:
<hal format="aidl">
<name>foo</name>
<version>2</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
এই এন্ট্রিটি compatibility_matrix.F.xml এ কপি করা হয়েছে এবং নিম্নরূপ সংস্করণ 3 সমর্থন করার জন্য সংশোধন করা হয়েছে:
<hal format="aidl">
<name>foo</name>
<version>2-3</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
একটি HAL (প্রধান) আপগ্রেড করুন
ডেভেলপমেন্টের সময়, যখন একটি HAL-এর বর্তমান FCM সংস্করণ F তে একটি মেজর-ভার্সন আপগ্রেড থাকে, তখন নতুন মেজর সংস্করণ x.0 নিম্নলিখিত সেটিংস সহ compatibility_matrix.F.xml এ যোগ করা হয়:
- শুধুমাত্র
x.0সংস্করণ, যদিV = Fদিয়ে পাঠানো ডিভাইসগুলিকেx.0দিয়ে চালু করতে হয়। - একই
<hal>ট্যাগে পুরোনো মেজর ভার্সন থাকলে, যদিV = Fদিয়ে পাঠানো ডিভাইসগুলি পুরোনো মেজর ভার্সন দিয়ে চালু হতে পারে।
উদাহরণস্বরূপ, FCM সংস্করণ F 1.0 HAL-এর একটি প্রধান-সংস্করণ আপগ্রেড হিসেবে foo@2.0 প্রবর্তন করে এবং 1.0 HAL-কে অবমূল্যায়ন করে। পুরানো সংস্করণ, foo@1.0 , পূর্ববর্তী FCM সংস্করণগুলিকে লক্ষ্য করে এমন ডিভাইসগুলির জন্য ব্যবহৃত হয়। FCM সংস্করণ F কে লক্ষ্য করে এমন ডিভাইসগুলিকে যদি HAL প্রদান করে তবে অবশ্যই নতুন 2.0 সংস্করণ প্রদান করতে হবে। এই উদাহরণে, পূর্ববর্তী FCM সংস্করণগুলিতে এই এন্ট্রি রয়েছে:
<hal format="hidl">
<name>foo</name>
<version>1.0</version>;
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
এই এন্ট্রিটি compatibility_matrix.F.xml এ কপি করুন এবং নিম্নরূপ পরিবর্তন করুন:
<hal format="hidl">
<name>foo</name>
<version>2.0</version>
<interface>
<name>IFoo</name>
<instance>default</instance>
</interface>
</hal>
বিধিনিষেধ:
- যেহেতু 1.0 HAL
compatibility_matrix.F.xmlতে নেই, FCM সংস্করণFলক্ষ্য করে এমন ডিভাইসগুলিতে 1.0 HAL সরবরাহ করা উচিত নয় (কারণ এই HALটি অবচিত বলে বিবেচিত হবে)। - যেহেতু ১.০ HAL পুরোনো FCM ভার্সনগুলিতে উপস্থিত, তাই ফ্রেমওয়ার্কটি এখনও ১.০ HAL এর সাথে কাজ করতে পারে তাই এটি পুরোনো FCM ভার্সনগুলিকে লক্ষ্য করে তৈরি পুরানো ডিভাইসগুলির সাথে সামঞ্জস্যপূর্ণ।
নতুন FCM সংস্করণ
সিস্টেম পার্টিশনে একটি FCM সংস্করণ প্রকাশের প্রক্রিয়াটি AOSP রিলিজের অংশ হিসেবে শুধুমাত্র Google দ্বারা সম্পন্ন হয় এবং এতে নিম্নলিখিত পদক্ষেপগুলি অন্তর্ভুক্ত থাকে:
- নিশ্চিত করুন যে
compatibility_matrix.F.xmlএ অ্যাট্রিবিউটlevel="F"আছে। - সমস্ত ডিভাইস তৈরি এবং বুট করা নিশ্চিত করুন।
- সর্বশেষ ফ্রেমওয়ার্ক (শিপিং API স্তরের উপর ভিত্তি করে) দিয়ে লঞ্চ হওয়া ডিভাইসগুলিতে টার্গেট FCM সংস্করণ
V >= Fআছে কিনা তা নিশ্চিত করতে VTS পরীক্ষাগুলি আপডেট করুন । - AOSP-তে ফাইল প্রকাশ করুন।
উদাহরণস্বরূপ, VTS পরীক্ষাগুলি নিশ্চিত করে যে Android 9 এর সাথে লঞ্চ হওয়া ডিভাইসগুলিতে টার্গেট FCM সংস্করণ >= 3 রয়েছে।
এছাড়াও, পণ্য এবং system_ext FCM গুলিতে প্রতিটি প্ল্যাটফর্ম FCM সংস্করণের জন্য প্রয়োজনীয়তা তালিকাভুক্ত করা থাকতে পারে। পণ্য এবং system_ext পার্টিশনে FCM সংস্করণ প্রকাশের কাজ যথাক্রমে এই চিত্রগুলির মালিক দ্বারা করা হয়। পণ্য এবং system_ext পার্টিশনের FCM সংস্করণ নম্বরগুলি সিস্টেম পার্টিশনের সাথে সামঞ্জস্যপূর্ণ হতে হবে। সিস্টেম পার্টিশনের FCM সংস্করণের মতো, পণ্য এবং system_ext পার্টিশনে FCM সংস্করণ F-এর সামঞ্জস্য ম্যাট্রিক্স লক্ষ্য FCM সংস্করণ F সহ একটি ডিভাইসের প্রয়োজনীয়তা প্রতিফলিত করে।
HAL সংস্করণের অবচয়
HAL সংস্করণ বন্ধ করা ডেভেলপারদের সিদ্ধান্ত (অর্থাৎ AOSP HAL-এর ক্ষেত্রে, Google সিদ্ধান্ত নেয়)। এটি তখন ঘটতে পারে যখন একটি উচ্চতর HAL সংস্করণ (ছোট বা বড়) প্রকাশিত হয়।
একটি ডিভাইস HAL বন্ধ করুন
যখন একটি প্রদত্ত ডিভাইস HAL foo@xy FCM Version F এ অবচিত হয়, তখন এর অর্থ হল যে টার্গেট FCM Version V = F বা তার পরবর্তী সংস্করণের সাথে লঞ্চ হওয়া যেকোনো ডিভাইস xy সংস্করণে বা xy এর চেয়ে পুরানো কোনও সংস্করণে foo প্রয়োগ করবে না। একটি অবচিত HAL সংস্করণ এখনও ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা সমর্থিত।
যখন FCM সংস্করণ F প্রকাশিত হয়, তখন একটি HAL সংস্করণ foo@xy অবচিত বলে বিবেচিত হয় যদি নির্দিষ্ট HAL সংস্করণটি সর্বশেষ FCM-এ টার্গেট FCM সংস্করণ V = F এর জন্য স্পষ্টভাবে উল্লেখ না করা থাকে। 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 Version F তে অবচিত হয়, তখন এর অর্থ হল যে Target FCM Version V = F বা তার পরবর্তী সংস্করণের সাথে লঞ্চ হওয়া যেকোনো ডিভাইস xy সংস্করণে অথবা xy এর চেয়ে পুরানো কোনও সংস্করণে ফ্রেমওয়ার্কটি foo প্রদান করবে বলে আশা করা উচিত নয়। ডিভাইস আপগ্রেড করার জন্য ফ্রেমওয়ার্ক দ্বারা একটি অবচিত HAL সংস্করণ এখনও সরবরাহ করা হয়।
যখন FCM সংস্করণ F প্রকাশিত হয়, তখন যদি ফ্রেমওয়ার্ক ম্যানিফেস্ট foo@xy এর জন্য max-level=" F - 1 " নির্দিষ্ট করে, তাহলে HAL সংস্করণ foo foo@xy 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 সংস্করণ অপসারণ নির্ধারণ করতে, প্রয়োজনীয় সময়কালের জন্য সামঞ্জস্য বজায় রাখতে এবং দীর্ঘস্থায়ী ডিভাইসের জন্য অংশীদারের প্রয়োজনীয়তা সমর্থন করতে একটি সময়সূচী-ভিত্তিক প্রক্রিয়া ব্যবহার করি।
যখন আমরা পরবর্তী ফ্রেমওয়ার্ক রিলিজের সেট S F থেকে একটি টার্গেট FCM সংস্করণ সরিয়ে ফেলি, তখন আমরা নিম্নলিখিত দুটি ধাপই সম্পাদন করি:
বিল্ড রুলস থেকে
compatibility_matrix.V.xmlমুছে ফেলুন (যাতে এটি সিস্টেম ইমেজে ইনস্টল না থাকে), এবং সরানো ক্ষমতা প্রয়োগকারী বা নির্ভরশীল যেকোনো কোড মুছে ফেলুন।ফ্রেমওয়ার্ক ম্যানিফেস্ট থেকে
Vএর চেয়ে কম বা সমানmax-levelফ্রেমওয়ার্ক HAL গুলি সরিয়ে ফেলুন এবং সরানো ফ্রেমওয়ার্ক HAL গুলি বাস্তবায়ন করে এমন যেকোনো কোড মুছে ফেলুন।
রিলিজ কনফিগারেশনের জন্য স্থির অবচয়
ট্রাঙ্ক স্টেবলের ব্রাঞ্চিং কৌশল, যেখানে কোয়ার্টারলি প্ল্যাটফর্ম রিলিজ (QPRs) সরাসরি git_main থেকে নেওয়া হয়, আলাদা রিলিজ-ডেভ শাখার পরিবর্তে, একটি স্থির অবচয় প্রক্রিয়া প্রয়োজন। trunk_staging বিল্ডগুলিতে প্রাথমিক সিগন্যালের জন্য একটি FCM সংস্করণ সরানো হতে পারে, যখন রিলিজ শাখায় সমর্থিত থাকে যাতে সারা বছর ধরে QPR গ্রহণকারী ডিভাইসগুলিকে সামঞ্জস্য করা যায়।
সাধারণত, একটি ফ্রেমওয়ার্ক রিলিজ ছয়টি FCM সমর্থন করে: একটি বর্তমান সংস্করণ, চারটি পূর্ববর্তী সংস্করণ এবং QPR সমর্থন করার জন্য একটি অতিরিক্ত সংস্করণ। নির্দিষ্ট FCM সংস্করণগুলিতে (যেমন Android 15 এর 202404 ) ডিভাইসের দীর্ঘায়ুতার জন্য বর্ধিত সমর্থন থাকলে এই সংখ্যাটি বাড়তে পারে।
প্রদত্ত ফ্রেমওয়ার্ক রিলিজের জন্য S F এর বাইরে একটি টার্গেট FCM সংস্করণ সহ ডিভাইসগুলি সেই রিলিজে আপগ্রেড করতে পারবে না।
সম্পূর্ণরূপে অবচিত HAL গুলি অপসারণ
যখন একটি FCM সংস্করণ সরানো হয়, তখন কিছু HAL ইন্টারফেস, অথবা HAL ইন্টারফেসের সংস্করণগুলি আর কোনও FCM-তে উপস্থিত থাকে না। এর অর্থ হল অ্যান্ড্রয়েড আর এগুলিকে সমর্থন করে না, এমনকি ডিভাইস আপগ্রেড করার জন্যও।
যখন কোনও HAL আর সমর্থিত না থাকে, তখন ডেভেলপাররা অ্যান্ড্রয়েড থেকে সেই HAL ইন্টারফেসের রেফারেন্সগুলি সরিয়ে ফেলে, যার মধ্যে ফ্রেমওয়ার্কের ক্লায়েন্ট কোড, ডিফল্ট বাস্তবায়ন এবং VTS পরীক্ষার কেস অন্তর্ভুক্ত থাকে।
যদি অপসারণ করা HAL থেকে উত্তরাধিকারসূত্রে প্রাপ্ত কোনও সমর্থিত HAL না থাকে, তাহলে কয়েকটি অতিরিক্ত ধাপ অনুসরণ করে HAL সংজ্ঞাটি নিজেই সরানো যেতে পারে।
- সোর্স কোড থেকে HAL ইন্টারফেসের সংজ্ঞাটি সরিয়ে ফেলুন। এর মধ্যে
*.aidlফাইল এবংAndroid.bpaidl_interfaceমডিউল অন্তর্ভুক্ত রয়েছে। - যদি HIDL হয়, তাহলে
hardware/interfaces/current.txtথেকে HASH মুছে ফেলুন। - যদি AIDL হয়, তাহলে হিমায়িত AIDL ফাইলগুলি সহ
aidl_apiডিরেক্টরিটি সরিয়ে ফেলুন। -
hardware/interfaces/compatibility_matrices/exclude/fcm_exclude.cppথেকে ইন্টারফেসটি সরান।
HAL সংস্করণের অবস্থা
নিম্নলিখিত বিভাগগুলি (কালানুক্রমিক ক্রমে) একটি HAL সংস্করণের সম্ভাব্য অবস্থা বর্ণনা করে।
অপ্রকাশিত
HAL ডিভাইসের ক্ষেত্রে, যদি HAL সংস্করণটি কোনও পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে না থাকে, তাহলে এটি অপ্রকাশিত এবং সম্ভবত বিকাশাধীন বলে বিবেচিত হবে। এর মধ্যে HAL সংস্করণগুলি অন্তর্ভুক্ত রয়েছে যা শুধুমাত্র compatibility_matrix.F.xml এ রয়েছে। উদাহরণ:
- অ্যান্ড্রয়েড ৯ এর উন্নয়নের সময়
health@2.0HAL কে একটি অপ্রকাশিত HAL হিসেবে বিবেচনা করা হত এবং এটি শুধুমাত্রcompatibility_matrix.3.xmlতে উপস্থিত ছিল। -
teleportation@1.0HAL কোনও প্রকাশিত সামঞ্জস্যতা ম্যাট্রিক্সে নেই, এবং এটি একটি অপ্রকাশিত HAL হিসাবেও বিবেচিত হয়।
ফ্রেমওয়ার্ক HAL-এর ক্ষেত্রে, যদি HAL সংস্করণটি শুধুমাত্র একটি সম্পর্কহীন উন্নয়ন শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে, তাহলে এটি অপ্রকাশিত বলে বিবেচিত হবে।
প্রকাশিত এবং বর্তমান
ডিভাইস HAL-এর ক্ষেত্রে, যদি HAL সংস্করণটি কোনও পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে থাকে, তাহলে এটি প্রকাশ করা হয়। উদাহরণস্বরূপ, FCM সংস্করণ 3 হিমায়িত হয়ে AOSP-তে প্রকাশিত হওয়ার পরে, health@2.0 HAL-কে একটি প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।
যদি একটি HAL সংস্করণ একটি পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে থাকে যার সর্বোচ্চ FCM সংস্করণ থাকে তবে HAL সংস্করণটি বর্তমান (অর্থাৎ অবচিত নয়)। উদাহরণস্বরূপ, বিদ্যমান HAL সংস্করণগুলি (যেমন compatibility_matrix.legacy.xml এ প্রবর্তিত nfc@1.0 ) যা compatibility_matrix.3.xml এ বিদ্যমান থাকে সেগুলিকেও প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচনা করা হয়।
ফ্রেমওয়ার্ক HAL-এর ক্ষেত্রে, যদি HAL সংস্করণটি সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে যার max-level বৈশিষ্ট্য নেই অথবা (অস্বাভাবিকভাবে) এই শাখায় প্রকাশিত FCM সংস্করণের সমান বা তার চেয়ে বেশি max-level থাকে, তাহলে এটি একটি প্রকাশিত এবং বর্তমান HAL সংস্করণ হিসাবে বিবেচিত হবে। উদাহরণস্বরূপ, displayservice HAL Android 12-তে প্রকাশিত এবং বর্তমান, যেমনটি Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা হয়েছে।
মুক্তি পেয়েছে কিন্তু বাতিল করা হয়েছে
ডিভাইস HAL-এর জন্য, একটি HAL সংস্করণ অবচিত হয় যদি এবং শুধুমাত্র যদি নিম্নলিখিত সমস্ত পূরণ হয়:
- এটি মুক্তি পায়।
- এটি পাবলিক এবং ফ্রোজেন কম্প্যাটিবিলিটি ম্যাট্রিক্সে নেই যার সর্বোচ্চ FCM সংস্করণ রয়েছে।
- এটি একটি পাবলিক এবং হিমায়িত সামঞ্জস্য ম্যাট্রিক্সে রয়েছে যা ফ্রেমওয়ার্ক এখনও সমর্থন করে।
উদাহরণ:
-
health@1.0HALcompatibility_matrix.legacy.xml,compatibility_matrix.1.xmlএবংcompatibility_matrix.2.xmlএ আছে, কিন্তুcompatibility_matrix.3.xmlএ নেই। তাই এটি Android 9 এ অবচিত বলে বিবেচিত হয়। - অ্যান্ড্রয়েড ৯-এ পাওয়ার HAL-এর একটি ছোটখাটো সংস্করণ আপগ্রেড আছে, কিন্তু
power@1.0এখনওcompatibility_matrix.3.xmlএ রয়েছে। -
power@1.0compatibility_matrix.legacy.xml,compatibility_matrix.1.xml, এবংcompatibility_matrix.2.xml। -
compatibility_matrix.3.xmlএpower@1.0-1আছে।
অতএব, অ্যান্ড্রয়েড ৯-এ power@1.0 বর্তমান, কিন্তু অবচিত নয় ।
ফ্রেমওয়ার্ক HAL-এর ক্ষেত্রে, যদি HAL সংস্করণটি সর্বশেষ প্রকাশিত শাখার ফ্রেমওয়ার্ক ম্যানিফেস্টে থাকে এবং এই শাখার FCM সংস্করণ রিলিজের চেয়ে max-level বৈশিষ্ট্য কম থাকে, তাহলে এটি একটি প্রকাশিত কিন্তু অবচিত HAL সংস্করণ হিসাবে বিবেচিত হবে। উদাহরণস্বরূপ, schedulerservice HAL Android 12-এ প্রকাশিত কিন্তু অবচিত, যেমনটি Android 12 ফ্রেমওয়ার্ক ম্যানিফেস্ট দ্বারা নির্দিষ্ট করা হয়েছে।
সরানো হয়েছে
ডিভাইস HAL-এর জন্য, শুধুমাত্র যদি নিম্নলিখিতগুলি সত্য হয় তবে একটি HAL সংস্করণ সরানো হয়:
- এটি আগে প্রকাশিত হয়েছিল।
- এই ফ্রেমওয়ার্কটি কোনও পাবলিক এবং ফ্রোজেন কম্প্যাটিবিলিটি ম্যাট্রিক্সে সমর্থন করে না।
যেসব সামঞ্জস্যপূর্ণ ম্যাট্রিক্স সর্বজনীন, হিমায়িত, কিন্তু ফ্রেমওয়ার্ক দ্বারা সমর্থিত নয়, সেগুলিকে কোডবেসে রাখা হয় যাতে সরানো HAL সংস্করণ সেটটি সংজ্ঞায়িত করা যায় যাতে VTS পরীক্ষাগুলি লেখা যায় যাতে নিশ্চিত করা যায় যে সরানো HALগুলি নতুন ডিভাইসে নেই।
ফ্রেমওয়ার্ক HAL-এর জন্য, শুধুমাত্র যদি নিম্নলিখিত বিষয়গুলি পূরণ করা হয় তবেই HAL সংস্করণটি সরানো হয়:
- এটি আগে প্রকাশিত হয়েছিল।
- এটি সর্বশেষ প্রকাশিত শাখার কোনও ফ্রেমওয়ার্ক ম্যানিফেস্টে নেই।
লিগ্যাসি এফসিএম
টার্গেট FCM ভার্সন লিগ্যাসি হল সমস্ত নন-ট্রেবল ডিভাইসের জন্য একটি বিশেষ মান। লিগ্যাসি FCM, compatibility_matrix.legacy.xml , লিগ্যাসি ডিভাইসের (অর্থাৎ Android 8.0 এর আগে চালু হওয়া ডিভাইসগুলির) কাঠামোর প্রয়োজনীয়তা তালিকাভুক্ত করে।
যদি এই ফাইলটি F সংস্করণ সহ একটি FCM-এর জন্য বিদ্যমান থাকে, তাহলে যেকোনো নন-ট্রেবল ডিভাইস F তে আপগ্রেড করা যেতে পারে যদি এর ডিভাইস ম্যানিফেস্ট এই ফাইলের সাথে সামঞ্জস্যপূর্ণ হয়। এটি অপসারণ অন্যান্য টার্গেট FCM সংস্করণের জন্য FCM-এর মতো একই পদ্ধতি অনুসরণ করে (8.0-এর আগে সক্রিয় ডিভাইসের সংখ্যা একটি নির্দিষ্ট থ্রেশহোল্ডের নিচে নেমে যাওয়ার পরে অপসারণ করা হয়)।
প্রকাশিত FCM সংস্করণগুলি
প্রকাশিত FCM সংস্করণগুলির তালিকা hardware/interfaces/compatibility_matrices এর অধীনে পাওয়া যাবে।
একটি নির্দিষ্ট অ্যান্ড্রয়েড রিলিজের সাথে প্রকাশিত FCM সংস্করণটি খুঁজে পেতে, Level.h দেখুন।