সামঞ্জস্য ম্যাট্রিক্স

এই বিভাগে ফ্রেমওয়ার্ক এবং ডিভাইস সামঞ্জস্য ম্যাট্রিক্স এবং সামঞ্জস্য ম্যাট্রিক্স স্কিমা বর্ণনা করে। ম্যাচের নিয়মের জন্য, ম্যাচিং নিয়ম দেখুন।

ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স (FCM)

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

system_ext FCM এবং পণ্য FCM হল ডিভাইস-নির্দিষ্ট FCM (সিস্টেম পার্টিশনে ইনস্টল করা) এর পরিপূরক।

  • ডিভাইস FCM সিস্টেম পার্টিশনে মডিউলগুলির প্রয়োজনীয়তা প্রতিফলিত করবে।
  • system_ext FCM-কে system_ext পার্টিশনের মডিউল দ্বারা প্রয়োজনীয়তা প্রতিফলিত করা উচিত।
  • পণ্য FCM পণ্য পার্টিশনে মডিউল দ্বারা প্রয়োজনীয়তা প্রতিফলিত করা উচিত।

সমস্ত FCM-কে সিস্টেম, পণ্য এবং system_ext পার্টিশনের কাঠামোতে একটি OEM এর পরিবর্তনের সাথে সারিবদ্ধ করা উচিত। উদাহরণ স্বরূপ, যদি প্রোডাক্ট পার্টিশনে ইনস্টল করা কোনো অ্যাপ HAL ইন্টারফেসের ভেন্ডর এক্সটেনশন ব্যবহার করে, তাহলে HAL ইন্টারফেসের প্রয়োজনীয়তা প্রোডাক্ট FCM-এ ঘোষণা করা উচিত।

উদাহরণ সিস্টেম সামঞ্জস্যতা ম্যাট্রিক্স ফাইল:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<compatibility-matrix version="1.0" type="framework" level="3">
    <hal>
        <name>android.hardware.camera</name>
        <version>1.0</version>
        <version>3.1-4</version>
        <interface>
            <name>ICameraProvider</name>
            <instance>default</instance>
            <regex-instance>[a-z_]+/[0-9]+</regex-instance>
        </interface>
    </hal>
    <hal>
        <name>android.hardware.nfc</name>
        <version>1.0</version>
        <interface>
            <name>INfc</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal optional="true">
        <name>android.hardware.graphics.composer</name>
        <version>2.1</version>
        <interface>
            <name>IComposer</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal format="aidl" optional="true">
        <name>android.hardware.light</name>
        <version>1-2</version>
        <interface>
            <name>ILights</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal format="native">
        <name>GL</name>
        <version>1.1</version>
        <version>3.0</version>
    </hal>
    <hal format="native">
        <name>EGL</name>
        <version>1.1</version>
    </hal>
    <kernel version="3.18.51">
        <!-- common configs -->
    </kernel>
    <kernel version="3.18.51">
        <!-- arm specific configs -->
        <condition>
            <config>
                <key>CONFIG_ARM</key>
                <value type="tristate">y</value>
            </config>
        <condition>
        <config>
            <key>CONFIG_A</key>
            <value type="string"></value>
        </config>
        <config>
            <key>CONFIG_B</key>
            <value type="tristate">y</value>
        </config>
    </kernel>
    <kernel version="4.1.22">
        <!-- common configs -->
        <config>
            <key>CONFIG_A</key>
            <value type="string">foo</value>
        </config>
        <config>
            <key>CONFIG_B2</key>
            <value type="int">1024</value>
        </config>
    </kernel>
    <sepolicy>
        <kernel-sepolicy-version>30</kernel-sepolicy-version>
        <sepolicy-version>25.0</sepolicy-version>
        <sepolicy-version>26.0-3</sepolicy-version>
    </sepolicy>
    <avb>
        <vbmeta-version>2.1</vbmeta-version>
    </avb>
    <xmlfile format="dtd">
        <name>media_profile</name>
        <version>1.0</version>
        <path>/system/etc/media_profile_V1_0.dtd</path>
    </xmlfile>
</compatibility-matrix>

আরও বিশদ বিবরণের জন্য, এফসিএম লাইফসাইকেল দেখুন।

পণ্য সামঞ্জস্য ম্যাট্রিক্স

প্রোডাক্ট এফসিএম হল প্রোডাক্ট পার্টিশনের একটি ফ্রেমওয়ার্ক সামঞ্জস্যপূর্ণ ম্যাট্রিক্স ফাইল। VINTF অবজেক্টটি রানটাইমে সিস্টেমে FCM এবং system_ext পার্টিশনের সাথে পণ্য FCM-এর সাথে যোগ দেয়।

উদাহরণ পণ্য FCM ফাইল:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<compatibility-matrix version="1.0" type="framework">
    <hal>
        <name>vendor.foo.camera</name>
        <version>1.0</version>
        <interface>
            <name>IBetterCamera</name>
            <instance>default</instance>
        </interface>
    </hal>
</compatibility-matrix>

সিস্টেম_এক্সট সামঞ্জস্যতা ম্যাট্রিক্স

system_ext FCM হল system_ext পার্টিশনের একটি ফ্রেমওয়ার্ক সামঞ্জস্যপূর্ণ ম্যাট্রিক্স ফাইল। VINTF অবজেক্ট রানটাইমে সিস্টেম এবং প্রোডাক্ট পার্টিশনে FCM-এর সাথে system_ext FCM-এর সাথে যোগ দেয়। একটি উদাহরণ system_ext FCM ফাইলের জন্য পণ্য সামঞ্জস্যতা ম্যাট্রিক্স দেখুন।

ডিভাইস সামঞ্জস্য ম্যাট্রিক্স (DCM)

ডিভাইস সামঞ্জস্যতা ম্যাট্রিক্স কাঠামো থেকে ডিভাইসটি প্রত্যাশা করে এমন প্রয়োজনীয়তার একটি সেট বর্ণনা করে (লঞ্চ এবং ওটিএ সময় প্রয়োগ করা প্রয়োজনীয়তা)।

উদাহরণ DCM ফাইল:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<compatibility-matrix version="1.0" type="device">
    <hal>
        <name>android.hidl.manager</name>
        <version>1.0</version>
        <interface>
            <name>IServiceManager</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hidl.memory</name>
        <version>1.0</version>
        <interface>
            <name>IMemory</name>
            <instance>ashmem</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hidl.allocator</name>
        <version>1.0</version>
        <interface>
            <name>IAllocator</name>
            <instance>ashmem</instance>
        </interface>
    </hal>
    <hal>
        <name>android.framework.sensor</name>
        <version>1.0</version>
        <interface>
            <name>ISensorManager</name>
            <instance>default</instance>
        </interface>
    </hal>
    <vendor-ndk>
        <version>27</version>
    </vendor-ndk>
    <system-sdk>
        <version>27</version>
    </system-sdk>
</compatibility-matrix>

সামঞ্জস্যতা ম্যাট্রিক্স স্কিমা

এই বিভাগটি এই XML ট্যাগের অর্থ বর্ণনা করে। কিছু "প্রয়োজনীয়" ট্যাগ অ্যান্ড্রয়েড সোর্স ট্রিতে সোর্স ফাইল থেকে অনুপস্থিত হতে পারে এবং বিল্ড টাইমে assemble_vintf দ্বারা লেখা। ডিভাইসের সংশ্লিষ্ট ফাইলগুলিতে "প্রয়োজনীয়" ট্যাগ থাকতে হবে।

?xml
ঐচ্ছিক। এটি শুধুমাত্র XML পার্সারকে তথ্য প্রদান করে।
compatibility-matrix.version
প্রয়োজন। এই সামঞ্জস্য ম্যাট্রিক্সের মেটা-সংস্করণ। সামঞ্জস্য ম্যাট্রিক্সে প্রত্যাশিত উপাদানগুলি বর্ণনা করে৷ XML সংস্করণের সাথে সম্পর্কহীন।
compatibility-matrix.type
প্রয়োজন। এই সামঞ্জস্য ম্যাট্রিক্সের প্রকার:
  • "device" : ডিভাইসের সামঞ্জস্যতা ম্যাট্রিক্স।
  • "framework" : ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স।
manifest.level
ফ্রেমওয়ার্ক সামঞ্জস্য ম্যাট্রিক্সের জন্য প্রয়োজনীয়। অ্যান্ড্রয়েড 12 এবং উচ্চতর, পণ্য এবং system_ext পার্টিশনে ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স ফাইলগুলিতে অনুমোদিত৷ এই ফাইলের ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স সংস্করণ (FCM সংস্করণ) নির্দিষ্ট করে। ডিভাইস-নির্দিষ্ট ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্সে এটি ঘোষণা করবেন না (যেমন DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE )।
compatibility-matrix.hal
ঐচ্ছিক এবং পুনরাবৃত্তি করতে পারেন। একটি একক HAL (HIDL বা নেটিভ) তালিকা করে যা উপস্থিত থাকার জন্য সামঞ্জস্যতা ম্যাট্রিক্সের (ফ্রেমওয়ার্ক বা ডিভাইস) মালিকের দ্বারা প্রয়োজন৷ HAL এন্ট্রিগুলি একটি <name> উপাদান দ্বারা আলাদা করা হয়; একই নামের সাথে একাধিক HAL এন্ট্রি থাকতে পারে (উচিত "এবং" শর্ত)।
compatibility-matrix.hal.format
ঐচ্ছিক। মান এর মধ্যে একটি হতে পারে:
  • "hidl" : HIDL HALs। এটি ডিফল্ট।
  • "aidl" : AIDL HALs । শুধুমাত্র সামঞ্জস্যপূর্ণ ম্যাট্রিক্স মেটা-সংস্করণ 2.0 এ বৈধ।
  • "native" : নেটিভ HALs।
compatibility-matrix.hal.optional
বৈশিষ্ট্য ঐচ্ছিক এবং মিথ্যা থেকে ডিফল্ট। এই HAL সামঞ্জস্যতা ম্যাট্রিক্সের (ফ্রেমওয়ার্ক বা ডিভাইস) মালিকের কাছে ঐচ্ছিক কিনা তা জানায়। যদি একটি <hal> এন্ট্রি ঐচ্ছিক হিসাবে চিহ্নিত করা হয়, তাহলে এর অর্থ হল মালিক এই HAL এর সাথে কাজ করতে পারেন, যদি উপস্থিত থাকে তবে এটি উপস্থিত থাকার প্রয়োজন নেই।
compatibility-matrix.hal.name
প্রয়োজন। এই HAL এর পুরো প্যাকেজের নাম। উদাহরণ:
  • android.hardware.camera (HIDL বা AIDL HAL)
  • GLES (নেটিভ HAL, শুধুমাত্র নাম প্রয়োজন)
compatibility-matrix.hal.version
সংস্করণ রেঞ্জের একটি তালিকা ( HAL ম্যাচগুলি দেখুন) যা সংজ্ঞায়িত করে যে সামঞ্জস্য ম্যাট্রিক্সের (ফ্রেমওয়ার্ক বা ডিভাইস) মালিক কোন সংস্করণগুলি আশা করেন৷

HIDL এবং নেটিভ HAL-এর জন্য, প্রয়োজনীয়, সদৃশ ছাড়াই পুনরাবৃত্তি করতে পারে। বিন্যাস নিম্নলিখিতগুলির মধ্যে একটি:
  • MAJOR . MINOR_MIN - MINOR_MAX
  • MAJOR . MINOR ( MAJOR . MINOR - MINOR )

AIDL HALs-এর জন্য, Android 11 এবং তার নীচের সংস্করণে চলমান ডিভাইসগুলিতে উপস্থিত থাকতে হবে না। পরবর্তী সংস্করণে চলমান ডিভাইসগুলিতে ঐচ্ছিক৷ নির্দিষ্ট করা থাকলে, বিন্যাসটি নিম্নলিখিতগুলির মধ্যে একটি:
  • VERSION_MIN - VERSION_MAX
  • VERSION ( VERSION - VERSION এর সমতুল্য)
যদি অনির্দিষ্ট না থাকে, মানটি ডিফল্ট 1 হয়।
compatibility-matrix.hal.interface
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। এই HAL-এর প্রয়োজনীয় ইন্টারফেসের একটি তালিকা।
compatibility-matrix.hal.interface.name
প্রয়োজন। ইন্টারফেসের নাম।
compatibility-matrix.hal.interface.instance
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। এই ইন্টারফেসের প্রয়োজনীয় উদাহরণগুলির একটি তালিকা।
compatibility-matrix.hal.interface.regex-instance
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। এই ইন্টারফেসে প্রয়োজনীয় উদাহরণ নামের প্যাটার্নের একটি তালিকা। এক্সটেন্ডেড রেগুলার এক্সপ্রেশন ফরম্যাট ব্যবহার করুন।
compatibility-matrix.kernel
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। প্রতিটি কার্নেল সংস্করণে ফ্রেমওয়ার্কের জন্য প্রয়োজনীয় কার্নেল কনফিগারগুলির একটি তালিকা নির্দিষ্ট করুন।
"এবং" সম্পর্ক বোঝাতে একই <version> সহ একাধিক <kernel> থাকতে পারে। প্রতিটি <kernel> হল প্রয়োজনীয়তার একটি "খণ্ড" যা শুধুমাত্র <conditions> পূরণ হলেই সক্রিয় করা হয়।
compatibility-matrix.kernel.version
প্রয়োজন। কার্নেল সংস্করণ। বিন্যাস VERSION . MAJOR_REVISION . MINOR_REVISION সংস্করণ এবং প্রধান সংশোধন হুবহু মিলে যেতে হবে। মাইনর রিভিশন কার্নেলের ন্যূনতম LTS সংস্করণকে সংজ্ঞায়িত করে যা ফ্রেমওয়ার্ক আশা করে।
compatibility-matrix.kernel.condition
ঐচ্ছিক। প্রতিটি সংস্করণের প্রথম <kernel> এর জন্য বিদ্যমান থাকা উচিত নয়। শর্তগুলির একটি তালিকা নির্দিষ্ট করে। শর্ত পূরণ হলে, এই <kernel> ফ্র্যাগমেন্টে উল্লিখিত প্রয়োজনীয়তা সক্রিয় করা হয়।
compatibility-matrix.kernel.config
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। CONFIG আইটেমগুলি তালিকা করে যা এই কার্নেল সংস্করণের জন্য অবশ্যই মেলে। প্রতিটি CONFIG আইটেম একটি কী-মানের জোড়া; কনফিগার আইটেমগুলি কী দ্বারা আলাদা করা হয়।
compatibility-matrix.kernel.config.key
প্রয়োজন। CONFIG আইটেমের মূল নাম। CONFIG_ দিয়ে শুরু হয়।
compatibility-matrix.kernel.config.value
প্রয়োজন। CONFIG আইটেমের মান। বিন্যাস ধরনের উপর নির্ভর করে:
  • string উদ্ধৃতি বাদ দেওয়া হয়.
  • int দশমিক এবং হেক্সাডেসিমেল ( 0x বা 0X) মান গ্রহণ করা হয়। একটি 64-বিট পূর্ণসংখ্যা হিসাবে ব্যাখ্যা করা হয়েছে; ওভারফ্লো ছেঁটে ফেলার ফলে। (পার্সার -2 64 + 1 থেকে 2 64 - 1 পর্যন্ত মানগুলি গ্রহণ করে, 65 তম বিটটি ছোট করা হয়েছে; বিস্তারিত জানার জন্য স্ট্রটউল ম্যান পৃষ্ঠা দেখুন।)
  • range বিন্যাস হল [int]-[int] , যেমন 10-20 । হেক্সাডেসিমেল মান গৃহীত হয় এবং অবশ্যই 0x বা 0X দিয়ে শুরু করতে হবে। দুটি সীমানা অবশ্যই একটি স্বাক্ষরবিহীন 64-বিট পূর্ণসংখ্যা হতে হবে।
  • tristate বৈধ মান হল y , m এবং n
compatibility-matrix.kernel.config.value.type
প্রয়োজন। CONFIG আইটেমের মানের প্রকার, এর মধ্যে একটি:
  • string
  • int
  • range
  • tristate
compatibility-matrix.sepolicy
প্রয়োজন। সমস্ত সেপলিসি-সম্পর্কিত এন্ট্রি রয়েছে। শুধুমাত্র ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স দ্বারা ব্যবহৃত.
compatibility-matrix.sepolicy.sepolicy-version
প্রয়োজন, পুনরাবৃত্তি করতে পারেন. সেপলিসি সংস্করণে প্রয়োজনীয়তা বর্ণনা করে। manifest.sepolicy.version এর সাথে মিলে যায়। একটি উপাদানের প্রতিটি উদাহরণ সেপলিসি সংস্করণের একটি পরিসীমা সংজ্ঞায়িত করে।
compatibility-matrix.sepolicy.kernel-sepolicy-version
প্রয়োজন। যে policydb সংস্করণটি ফ্রেমওয়ার্কের সাথে কাজ করে তা ঘোষণা করে।
compatibility-matrix.avb.vbmeta-version
ঐচ্ছিক; শুধুমাত্র ফ্রেমওয়ার্ক সামঞ্জস্যতা ম্যাট্রিক্স দ্বারা ব্যবহৃত. system.img সাইন করার জন্য ব্যবহৃত AVB সংস্করণ ঘোষণা করে। অ্যান্ড্রয়েড 10-এ অপ্রচলিত।
compatibility-matrix.vendor-ndk
ঐচ্ছিক; শুধুমাত্র ডিভাইস সামঞ্জস্য ম্যাট্রিক্স দ্বারা ব্যবহৃত. VNDK বিক্রেতার স্ন্যাপশটের প্রয়োজনীয়তা ঘোষণা করে। অনুপস্থিত থাকলে, সিস্টেম ইমেজে কোন VNDK প্রয়োজনীয়তা তৈরি করা হয় না।
compatibility-matrix.vendor-ndk.version
প্রয়োজন। একটি ইতিবাচক পূর্ণসংখ্যা যা বিক্রেতার চিত্রের জন্য প্রয়োজনীয় একটি VNDK সংস্করণ ঘোষণা করে৷
compatibility-matrix.vendor-ndk.library
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। বিক্রেতার চিত্রের জন্য প্রয়োজনীয় VNDK লাইব্রেরির একটি সেট ঘোষণা করে। manifest.vendor-ndk.library হিসাবে একই শব্দার্থবিদ্যা।
compatibility-matrix.system-sdk.version
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন; শুধুমাত্র ডিভাইস সামঞ্জস্য ম্যাট্রিক্স দ্বারা ব্যবহৃত. সিস্টেম SDK সংস্করণে বিক্রেতা অ্যাপের প্রয়োজনীয়তা ঘোষণা করে। অনুপস্থিত থাকলে, সিস্টেম ইমেজে কোনো সিস্টেম SDK প্রয়োজনীয়তা তৈরি করা হয় না।