ম্যানিফেস্ট

VINTF অবজেক্ট ডিভাইস ম্যানিফেস্ট এবং ফ্রেমওয়ার্ক ম্যানিফেস্ট ফাইল (XML) থেকে ডেটা একত্রিত করে। দুটি ম্যানিফেস্টই একটি ফর্ম্যাট শেয়ার করে, যদিও সব এলিমেন্ট দুটির ক্ষেত্রেই প্রযোজ্য নয় (স্কিমা সম্পর্কে বিস্তারিত জানতে, ম্যানিফেস্ট ফাইল স্কিমা দেখুন)।

ডিভাইস ম্যানিফেস্ট

ডিভাইস ম্যানিফেস্টে (ডিভাইসের দেওয়া) ভেন্ডর ম্যানিফেস্ট ও ODM ম্যানিফেস্ট থাকে।

  • ভেন্ডর ম্যানিফেস্ট HAL, SELinux পলিসি ভার্সন ইত্যাদি উল্লেখ করে যা SoC-এর ক্ষেত্রে সাধারণ। এটি Android সোর্স ট্রিতে device/VENDOR/DEVICE/manifest.xml-এ রাখার সাজেশন দেওয়া হয়, তবে একাধিক ফ্র্যাগমেন্ট ফাইল ব্যবহার করা যেতে পারে। বিস্তারিত জানতে, ম্যানিফেস্ট ফ্র্যাগমেন্ট এবং ফ্র্যাগমেন্ট থেকে DM জেনারেট করুন দেখুন।
  • ODM ম্যানিফেস্টে, প্রোডাক্টের জন্য নির্দিষ্ট HAL-এর তালিকা ODM পার্টিশন-এ দেওয়া থাকে। VINTF অবজেক্ট এই ক্রমে ODM ম্যানিফেস্ট লোড করে:
    1. SKU সংজ্ঞায়িত করা থাকলে (যেখানে SKU হল প্রপার্টি ro.boot.product.hardware.sku-এর ভ্যালু), /odm/etc/vintf/manifest_SKU.xml
    2. /odm/etc/vintf/manifest.xml
    3. SKU নির্দিষ্ট করা থাকলে, /odm/etc/manifest_SKU.xml
    4. /odm/etc/manifest.xml
  • ভেন্ডর ম্যানিফেস্টে ভেন্ডর পার্টিশনে থাকা প্রোডাক্টের জন্য নির্দিষ্ট HAL-এর তালিকা থাকে। VINTF অবজেক্ট এই ক্রমে ভেন্ডর ম্যানিফেস্ট লোড করে:
    1. যদি SKU সংজ্ঞায়িত করা হয় (যেখানে SKU হল ro.boot.product.vendor.sku প্রপার্টির ভ্যালু), /vendor/etc/vintf/manifest_SKU.xml
    2. /vendor/etc/vintf/manifest.xml
  • VINTF অবজেক্ট এই ক্রমে ডিভাইস ম্যানিফেস্ট লোড করে:
    1. ভেন্ডর ম্যানিফেস্ট থাকলে, নিম্নলিখিত বিষয়গুলি একত্রিত করুন:
      1. ভেন্ডর ম্যানিফেস্ট
      2. ঐচ্ছিক ভেন্ডর ম্যানিফেস্ট ফ্র্যাগমেন্ট
      3. ঐচ্ছিক ODM ম্যানিফেস্ট
      4. ঐচ্ছিক ODM ম্যানিফেস্ট ফ্র্যাগমেন্ট
    2. অন্যথায়, ODM ম্যানিফেস্ট থাকলে, ঐচ্ছিক ODM ম্যানিফেস্ট ফ্র্যাগমেন্টের সাথে ODM ম্যানিফেস্টকে একত্রিত করুন।
    3. /vendor/manifest.xml (পুরনো, কোনও ফ্র্যাগমেন্ট নেই)
    4. সবশেষে, যেকোনও ভেন্ডর APEX থেকে ম্যানিফেস্ট ফ্র্যাগমেন্ট একত্রিত করুন। ম্যানিফেস্ট ফ্র্যাগমেন্ট etc/vintf প্রতিটি APEX ডিরেক্টরি থেকে লোড করা হয় (যেমন, /apex/<apex name>/etc/vintf)।

    মনে রাখবেন:

    • পুরনো ডিভাইসে, পুরনো ভেন্ডর ম্যানিফেস্ট এবং ODM ম্যানিফেস্ট ব্যবহার করা হয়। ODM ম্যানিফেস্ট, লিগ্যাসি ভেন্ডর ম্যানিফেস্টকে সম্পূর্ণভাবে ওভাররাইড করতে পারে।
    • Android 9-এর সাথে লঞ্চ করা ডিভাইসে, ODM ম্যানিফেস্টকে ভেন্ডর ম্যানিফেস্টের সাথে একত্রিত করা হয়।
    • ম্যানিফেস্টের তালিকা একত্রিত করার সময়, তালিকায় পরে দেখানো ম্যানিফেস্ট, তালিকায় আগে দেখানো ম্যানিফেস্টের ট্যাগকে ওভাররাইড করতে পারে, যদি পরে দেখানো ম্যানিফেস্টের ট্যাগ override="true" অ্যাট্রিবিউট থাকে। যেমন, ODM ম্যানিফেস্ট ভেন্ডর ম্যানিফেস্ট থেকে কিছু <hal> ট্যাগ ওভাররাইড করতে পারে। নিচে অ্যাট্রিবিউট override সম্পর্কিত ডকুমেন্টেশন দেখুন।

এই সেট-আপ একই বোর্ড সহ একাধিক প্রোডাক্টকে একই ভেন্ডর ইমেজ (যা সাধারণ HAL প্রদান করে) শেয়ার করতে দেয়, তবে আলাদা আলাদা ODM ইমেজ (যা প্রোডাক্ট-নির্দিষ্ট HAL নির্দিষ্ট করে) থাকে।

এখানে ভেন্ডর ম্যানিফেস্টের একটি উদাহরণ দেওয়া হল।

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<manifest version="2.0" type="device" target-level="1">
    <hal>
        <name>android.hardware.camera</name>
        <transport>hwbinder</transport>
        <version>3.4</version>
        <interface>
            <name>ICameraProvider</name>
            <instance>legacy/0</instance>
            <instance>proprietary/0</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hardware.nfc</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <version>2.0</version>
        <interface>
            <name>INfc</name>
            <instance>nfc_nci</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hardware.nfc</name>
        <transport>hwbinder</transport>
        <fqname>@2.0::INfc/default</fqname>
    </hal>
    <hal>
        <name>android.hardware.drm</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>ICryptoFactory</name>
            <instance>default</instance>
        </interface>
        <interface>
            <name>IDrmFactory</name>
            <instance>default</instance>
        </interface>
        <fqname>@1.1::ICryptoFactory/clearkey</fqname>
        <fqname>@1.1::IDrmFactory/clearkey</fqname>
    </hal>
    <hal format="aidl">
        <name>android.hardware.light</name>
        <version>1</version>
        <fqname>ILights/default</fqname>
    </hal>
    <hal format="aidl">
        <name>android.hardware.power</name>
        <version>2</version>
        <interface>
            <name>IPower</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal format="native">
        <name>EGL</name>
        <version>1.1</version>
    </hal>
    <hal format="native">
        <name>GLES</name>
        <version>1.1</version>
        <version>2.0</version>
        <version>3.0</version>
    </hal>
    <sepolicy>
        <version>25.0</version>
    </sepolicy>
</manifest>

এখানে ODM ম্যানিফেস্টের একটি উদাহরণ দেওয়া হল।

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<manifest version="1.0" type="device">
    <!-- camera 3.4 in vendor manifest is ignored -->
    <hal override="true">
        <name>android.hardware.camera</name>
        <transport>hwbinder</transport>
        <version>3.5</version>
        <interface>
            <name>ICameraProvider</name>
            <instance>legacy/0</instance>
        </interface>
    </hal>
    <!-- NFC is declared to be disabled -->
    <hal override="true">
        <name>android.hardware.nfc</name>
        <transport>hwbinder</transport>
    </hal>
    <hal>
        <name>android.hardware.power</name>
        <transport>hwbinder</transport>
        <version>1.1</version>
        <interface>
            <name>IPower</name>
            <instance>default</instance>
        </interface>
    </hal>
</manifest>

OTA প্যাকেজে ডিভাইস ম্যানিফেস্টের একটি উদাহরণ এখানে দেওয়া হল।

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<manifest version="1.0" type="device" target-level="1">
    <!-- hals ommited -->
    <kernel version="4.4.176">
        <config>
            <key>CONFIG_ANDROID</key>
            <value>y</value>
        </config>
        <config>
            <key>CONFIG_ARM64</key>
            <value>y</value>
        </config>
    <!-- other configs ommited -->
    </kernel>
</manifest>

আরও বিবরণের জন্য, ডিভাইস ম্যানিফেস্ট ডেভেলপমেন্ট দেখুন।

ফ্রেমওয়ার্ক ম্যানিফেস্ট

ফ্রেমওয়ার্ক ম্যানিফেস্ট ফাইলে সিস্টেম ম্যানিফেস্ট, প্রোডাক্ট ম্যানিফেস্ট ও system_ext ম্যানিফেস্ট থাকে।

  • সিস্টেম ম্যানিফেস্ট (Google-এর দেওয়া) ম্যানুয়ালি তৈরি করা হয় এবং Android সোর্স ট্রি-তে /system/libhidl/manifest.xml-এ থাকে।
  • প্রোডাক্ট ম্যানিফেস্ট (ডিভাইস দ্বারা প্রদান করা) প্রোডাক্ট পার্টিশনে ইনস্টল করা মডিউল দ্বারা পরিবেশিত HAL-এর তালিকা করে।
  • system_ext ম্যানিফেস্ট (ডিভাইসের মাধ্যমে প্রদান করা) নিম্নলিখিত বিষয়গুলি তালিকাভুক্ত করে:
    • system_ext পার্টিশনে ইনস্টল করা মডিউল দ্বারা পরিবেশিত HAL;
    • VNDK ভার্সন;
    • সিস্টেম SDK ভার্সন।

ডিভাইস ম্যানিফেস্টের মতো, একাধিক ফ্র্যাগমেন্ট ফাইল ব্যবহার করা যেতে পারে। আরও বিবরণের জন্য, মেনিফেস্ট ফ্র্যাগমেন্ট দেখুন।

এখানে ফ্রেমওয়ার্ক ম্যানিফেস্টের একটি উদাহরণ দেওয়া হল।

<?xml version="1.0" encoding="UTF-8"?>
<!-- Comments, Legal notices, etc. here -->
<manifest version="1.0" type="framework">
    <hal>
        <name>android.hidl.allocator</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IAllocator</name>
            <instance>ashmem</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hidl.memory</name>
        <transport arch="32+64">passthrough</transport>
        <version>1.0</version>
        <interface>
            <name>IMapper</name>
            <instance>ashmem</instance>
        </interface>
    </hal>
    <hal>
        <name>android.hidl.manager</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IServiceManager</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal>
        <name>android.frameworks.sensorservice</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>ISensorManager</name>
            <instance>default</instance>
        </interface>
    </hal>
    <hal max-level="5">
        <name>android.frameworks.schedulerservice</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>ISchedulingPolicyService</name>
            <instance>default</instance>
        </interface>
    </hal>
    <vendor-ndk>
        <version>27</version>
    </vendor-ndk>
    <system-sdk>
        <version>27</version>
    </system-sdk>
</manifest>

ম্যানিফেস্ট ফ্র্যাগমেন্ট

Android 10 ও তার পরের যেকোনও ভার্সনে, আপনি বিল্ড সিস্টেমে HAL মডিউলের সাথে ম্যানিফেস্ট এন্ট্রি অ্যাসোসিয়েট করতে পারবেন। এর ফলে বিল্ড সিস্টেমে শর্তসাপেক্ষে HAL মডিউল অন্তর্ভুক্ত করা আরও সহজ হয়।

উদাহরণ

আপনার Android.bp বা Android.mk ফাইলে, ডিভাইসে স্পষ্টভাবে ইনস্টল করা যেকোনও মডিউলে vintf_fragments যোগ করুন যেমন cc_binary বা rust_binary। যেমন, আপনি নিজের HAL প্রয়োগের মাধ্যমে মডিউল পরিবর্তন করতে পারবেন (my.package.foo@1.0-service-bar)।

... {
    ...
    vintf_fragments: ["manifest_foo.xml"],
    ...
}
LOCAL_MODULE := ...
LOCAL_VINTF_FRAGMENTS := manifest_foo.xml

manifest_foo.xml নামের একটি ফাইলে, এই মডিউলের জন্য ম্যানিফেস্ট তৈরি করুন। বিল্ড করার সময়, এই ম্যানিফেস্ট ডিভাইসে যোগ করা হয়। এখানে কোনও এন্ট্রি যোগ করা মানে ডিভাইসের মূল ম্যানিফেস্টে এন্ট্রি যোগ করা। এটি ক্লায়েন্টদের ইন্টারফেস ব্যবহার করার অনুমতি দেয় এবং ডিভাইসে কোন HAL ইমপ্লিমেন্টেশন আছে তা VTS-কে শনাক্ত করতে দেয়। সাধারণ ম্যানিফেস্ট যা করে, এই ম্যানিফেস্টও তাই করে।

নিচের উদাহরণে android.hardware.foo@1.0::IFoo/default প্রয়োগ করা হয়েছে, যা vendor বা odm পার্টিশনে ইনস্টল করা আছে। এটি যদি system, product বা system_ext পার্টিশনে ইনস্টল করা থাকে, তাহলে type device-এর পরিবর্তে type framework ব্যবহার করুন।

<manifest version="1.0" type="device">
    <hal format="hidl">
        <name>android.hardware.foo</name>
        <transport>hwbinder</transport>
        <fqname>@1.0::IFoo/default</fqname>
    </hal>
</manifest>

কোনও HAL মডিউল ভেন্ডর APEX-এ প্যাকেজ করা থাকলে, prebuilt_etc হিসেবে একই APEX-এর মধ্যে এর সাথে যুক্ত VINTF ফ্র্যাগমেন্ট প্যাকেজ করুন VINTF ফ্র্যাগমেন্ট-এ ব্যাখ্যা করা হয়েছে।

ম্যানিফেস্ট ফাইলের স্কিমা

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

?xml
ঐচ্ছিক। শুধুমাত্র XML পার্সারকে তথ্য প্রদান করে।
manifest.version
আবশ্যক। এই ম্যানিফেস্টের মেটা-ভার্সন। ম্যানিফেস্টে প্রত্যাশিত এলিমেন্টগুলির বিবরণ দেয়। XML ভার্সনের সাথে সম্পর্কিত নয়।
manifest.type
প্রয়োজনীয়। এই ম্যানিফেস্টের ধরন। ডিভাইস ম্যানিফেস্ট ফাইলের জন্য এটির ভ্যালু device এবং ফ্রেমওয়ার্ক ম্যানিফেস্ট ফাইলের জন্য framework।
manifest.target-level
ডিভাইস ম্যানিফেস্টের জন্য প্রয়োজন। এই ডিভাইস ম্যানিফেস্ট যে ফ্রেমওয়ার্কের সাথে মানানসই হওয়ার জন্য টার্গেট করা হয়েছে, সেটির মানানসই হওয়ার ম্যাট্রিক্স (FCM) ভার্সন উল্লেখ করে। এটি ডিভাইসের শিপিং FCM ভার্সন নামেও পরিচিত।
manifest.hal
ঐচ্ছিক, একাধিকবার বলা যেতে পারে। format অ্যাট্রিবিউটের
উপর নির্ভর করে একটি HAL (HIDL বা নেটিভ, যেমন GL)।
manifest.hal.format
ঐচ্ছিক। ভ্যালু এগুলির মধ্যে একটি হতে পারে:
  • hidl: HIDL HAL. এটি ডিফল্ট বিকল্প।
  • aidl: AIDL HALs. শুধুমাত্র ম্যানিফেস্ট মেটা-ভার্সন ২.০ এবং তার পরবর্তী ভার্সনে বৈধ।
  • native: নেটিভ HAL.
manifest.hal.max-level
ঐচ্ছিক। শুধুমাত্র ফ্রেমওয়ার্ক ম্যানিফেস্টের ক্ষেত্রে প্রযোজ্য। সেট করা থাকলে, ফ্রেমওয়ার্ক ম্যানিফেস্টে টার্গেট FCM ভার্সনের থেকে কম সর্বোচ্চ লেভেল সহ HAL বন্ধ করা থাকে।
manifest.hal.override
ঐচ্ছিক। ভ্যালু এগুলির মধ্যে যেকোনও একটি হতে পারে:
  • true: একই <name> ও মেজর ভার্সন সহ অন্যান্য <hal> এলিমেন্ট ওভাররাইড করুন। এই <hal> এলিমেন্টে <version> বা <fqname> না থাকলে, <hal> এলিমেন্ট এই HAL-কে বন্ধ করা হয়েছে বলে ঘোষণা করে।
  • false: একই <name> এবং মেজর ভার্সন সহ অন্যান্য <hal> এলিমেন্ট ওভাররাইড করবেন না।
manifest.hal.name
প্রয়োজনীয়। HAL-এর সম্পূর্ণভাবে উপযুক্ত প্যাকেজের নাম। একাধিক HAL এন্ট্রিতে একই নাম ব্যবহার করা যেতে পারে। উদাহরণ:
  • android.hardware.camera (HIDL বা AIDL HAL)
  • GLES (নেটিভ HAL, শুধু নাম প্রয়োজন)
manifest.hal.transport
এক্ষেত্রে প্রয়োজন manifest.hal.format == "hidl"। অন্যথায় উপস্থিত থাকা চলবে না। এই প্যাকেজ থেকে কোনও ইন্টারফেসের ব্যাপারে সার্ভিস ম্যানেজারকে কোয়েরি করা হলে কোন ট্রান্সপোর্ট ব্যবহার করা হয় তা উল্লেখ করে। ভ্যালু এগুলির মধ্যে যেকোনও একটি হতে পারে:
  • hwbinder: বাইন্ডারাইজড মোড
  • passthrough: পাসথ্রু মোড
manifest.hal.format == "aidl" হলে ঐচ্ছিক। অন্যথায়, এটি উপস্থিত থাকলে চলবে না। কোনও ইন্টারফেস রিমোটলি পরিবেশন করা হলে কোন ট্রান্সপোর্ট ব্যবহার করা হয় তা উল্লেখ করে । মান অবশ্যই:
    হতে হবে
  • inet: Inet সকেট
Inet কানেকশন সংক্রান্ত তথ্য আরও নির্দিষ্ট করে বলতে manifest.hal.transport.ip ও manifest.hal.transport.port অবশ্যই ব্যবহার করতে হবে।
manifest.hal.transport.arch
passthrough-এর জন্য
প্রয়োজনীয় এবং hwbinder-এর জন্য থাকতে পারবে না। প্রদান করা পাসথ্রু পরিষেবার বিটনেস সম্পর্কে বর্ণনা করে। ভ্যালু এগুলির মধ্যে একটি হতে পারে:
  • 32: ৩২-বিট মোড
  • 64: ৬৪-বিট মোড
  • 32+64: দুটিই
manifest.hal.transport.ip
inet-এর জন্য প্রয়োজন এবং অন্যথায় এটি থাকা চলবে না। যে IP অ্যাড্রেস থেকে রিমোট ইন্টারফেস পরিবেশন করা হচ্ছে তার বিবরণ দেয়।
manifest.hal.transport.port
inet-এর জন্য প্রয়োজন এবং অন্য কোনও ক্ষেত্রে এটি থাকলে চলবে না। যে পোর্ট থেকে রিমোট ইন্টারফেস পরিবেশন করা হচ্ছে সেটির বিবরণ দেয়।
manifest.hal.version
ঐচ্ছিক, একাধিকবার বলা যেতে পারে। ম্যানিফেস্টে hal ট্যাগের জন্য একটি ভার্সন।

HIDL ও নেটিভ HAL-এর জন্য ফর্ম্যাট হল MAJOR.MINOR। যেমন, hardware/interfaces, vendor/${VENDOR}/interfaces, frameworks/hardware/interfaces বা system/hardware/interfaces দেখুন।

HIDL ও নেটিভ HAL একাধিক ভার্সন ফিল্ড ব্যবহার করতে পারে, তবে সেগুলি যেন আলাদা মেজর ভার্সন হয় এবং প্রতিটি মেজর ভার্সনের জন্য একটি করে মাইনর ভার্সন প্রদান করা হয়। যেমন, 3.1 ও 3.2 একসাথে থাকতে পারে না, কিন্তু 1.0 ও 3.4 থাকতে পারে। এটি একই নামের সব hal এলিমেন্টের ক্ষেত্রে প্রযোজ্য, যদি না override="true"। <version>-এর ভ্যালু <fqname>-এর সাথে যুক্ত নয় কারণ <fqname>-এর একটি ভার্সন আছে।

AIDL HAL-এর জন্য, Android 11 এবং তার আগের যেকোনও ভার্সনে চলা ডিভাইসে <version> থাকলে চলবে না। Android 12 ও এর পরের যেকোনও ভার্সনে চলে এমন ডিভাইসে <version> একটি সিঙ্গেল পূর্ণসংখ্যা হতে হবে। প্রতিটি (package, interface, instance) টিপল-এর জন্য সর্বাধিক একটি <version> থাকতে হবে। উপস্থিত না থাকলে, ডিফল্ট হিসেবে 1। <version>-এর ভ্যালু একই <hal>-এর সব <fqname>-এর সাথে সম্পর্কিত কারণ <fqname>-এর কোনও ভার্সন নেই।
manifest.hal.interface
প্রয়োজনীয়, ডুপ্লিকেট ছাড়া একাধিকবার ব্যবহার করা যাবে। ইনস্ট্যান্স নাম আছে এমন প্যাকেজে একটি ইন্টারফেস উল্লেখ করুন। <hal>-এ একাধিক <interface> এলিমেন্ট থাকতে পারে; নাম আলাদা হতে হবে।
manifest.hal.interface.name
প্রয়োজনীয়। ইন্টারফেসের নাম।
manifest.hal.interface.instance
প্রয়োজনীয়, একাধিকবার ব্যবহার করা যায়। ইন্টারফেসের ইনস্ট্যান্সের নাম। একটি ইন্টারফেসের জন্য একাধিক ইনস্ট্যান্স থাকতে পারে, তবে কোনও ডুপ্লিকেট <instance> এলিমেন্ট থাকতে পারবে না।
manifest.hal.fqname
ঐচ্ছিক, একাধিকবার বলা যেতে পারে। manifest.hal.name নামের HAL-এর জন্য ইনস্ট্যান্স নির্দিষ্ট করার একটি বিকল্প উপায়।
  • HIDL HAL-এর জন্য, ফর্ম্যাট হল @MAJOR.MINOR::INTERFACE/INSTANCE।
  • AIDL HAL-এর জন্য, ফর্ম্যাট হল INTERFACE/INSTANCE।
manifest.sepolicy
প্রয়োজনীয়। sepolicy সম্পর্কিত সব এন্ট্রি রয়েছে।
manifest.sepolicy.version
ডিভাইস ম্যানিফেস্টের জন্য প্রয়োজন। SELinux ভার্সন ঘোষণা করে। এটি SDK_INT.PLAT_INT ফর্ম্যাটে আছে।
manifest.vendor-ndk
প্রয়োজনীয়, একাধিকবার ব্যবহার করা যায়; ফ্রেমওয়ার্ক ম্যানিফেস্টের জন্য প্রয়োজনীয়। ডিভাইস ম্যানিফেস্টে থাকলে চলবে না। একাধিক <vendor-ndk> এন্ট্রিতে অবশ্যই আলাদা <version> থাকতে হবে। ফ্রেমওয়ার্কের মাধ্যমে প্রদান করা VNDK স্ন্যাপশটের একটি সেট বর্ণনা করে।
manifest.vendor-ndk.version
প্রয়োজনীয়। এটি একটি পজিটিভ পূর্ণসংখ্যা যা VNDK স্ন্যাপশটের ভার্সন বোঝায়।
manifest.vendor-ndk.library
ঐচ্ছিক, একাধিকবার ব্যবহার করা যাবে, ডুপ্লিকেট হলে চলবে না। এই VNDK ভেন্ডর স্ন্যাপশটের জন্য ফ্রেমওয়ার্কের মাধ্যমে প্রদান করা VNDK লাইব্রেরির সেট বর্ণনা করে। ভ্যালু হল লাইব্রেরির নাম, যেমন, libjpeg.so, এর মধ্যে প্রিফিক্স lib ও সাফিক্স .so অন্তর্ভুক্ত। পাথ কম্পোনেন্ট ব্যবহার করা যাবে না।
manifest.system-sdk.version
ঐচ্ছিক, একাধিকবার ব্যবহার করা যায়, ডুপ্লিকেট করা যায় না; শুধু ফ্রেমওয়ার্ক মেনিফেস্ট ব্যবহার করে। ফ্রেমওয়ার্কের মাধ্যমে ভেন্ডর অ্যাপকে দেওয়া সিস্টেম SDK ভার্সনের সেটকে বোঝায়।
manifest.kernel
ঐচ্ছিক। কার্নেল সম্পর্কে স্ট্যাটিক তথ্য বর্ণনা করে।
manifest.kernel.target-level
ঐচ্ছিক। কার্নেল ব্রাঞ্চের বর্ণনা দেয়। উপস্থিত না থাকলে এর ভ্যালু ডিফল্ট হিসেবে manifest.target-level হয়। manifest.target-level-এর চেয়ে বড় বা তার সমান হতে হবে। বিবরণের জন্য কার্নেল ম্যাচ করার নিয়ম দেখুন।