প্রকাশ করে

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

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

ডিভাইস ম্যানিফেস্ট (ডিভাইস দ্বারা প্রদত্ত) ভেন্ডর ম্যানিফেস্ট এবং ODM ম্যানিফেস্ট নিয়ে গঠিত।

  • বিক্রেতা ম্যানিফেস্ট HALs, SELinux পলিসি সংস্করণ, ইত্যাদি নির্দিষ্ট করে যা একটি SoC-এর জন্য সাধারণ। device/ VENDOR / DEVICE /manifest.xml এ Android সোর্স ট্রিতে স্থাপন করার পরামর্শ দেওয়া হয়, তবে একাধিক খণ্ড ফাইল ব্যবহার করা যেতে পারে। বিস্তারিত জানার জন্য, ম্যানিফেস্ট ফ্র্যাগমেন্ট দেখুন এবং টুকরো থেকে DM তৈরি করুন
  • 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
  • ভেন্ডর ম্যানিফেস্ট বিক্রেতা পার্টিশনে পণ্যের জন্য নির্দিষ্ট এইচএএল তালিকা করে। 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 (উত্তরাধিকার, কোন টুকরো নেই)

    মনে রাখবেন যে:

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

এই সেটআপটি একই বোর্ডের সাথে একাধিক পণ্যকে একই বিক্রেতার চিত্র (যা সাধারণ HAL প্রদান করে) ভাগ করতে সক্ষম করে তবে ভিন্ন ODM চিত্র রয়েছে (যা পণ্য-নির্দিষ্ট HALs নির্দিষ্ট করে)।

এখানে একটি উদাহরণ বিক্রেতা ম্যানিফেস্ট.

<?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 দ্বারা সরবরাহ করা) ম্যানুয়ালি তৈরি করা হয় এবং /system/libhidl/manifest.xml এ Android সোর্স ট্রিতে থাকে।
  • প্রোডাক্ট ম্যানিফেস্ট (ডিভাইস দ্বারা প্রদত্ত) প্রোডাক্ট পার্টিশনে ইনস্টল করা মডিউল দ্বারা পরিসেবা করা HAL গুলির তালিকা করে।
  • system_ext ম্যানিফেস্ট (ডিভাইস দ্বারা প্রদত্ত) নিম্নলিখিতগুলি তালিকাভুক্ত করে:
    • system_ext পার্টিশনে ইনস্টল করা মডিউল দ্বারা পরিসেবা করা HALs;
    • 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 যোগ করুন। উদাহরণস্বরূপ, আপনি আপনার HAL ( my.package.foo@1.0-service-bar ) বাস্তবায়নের সাথে মডিউলটি পরিবর্তন করতে পারেন।

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

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

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

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

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

?xml
ঐচ্ছিক। শুধুমাত্র XML পার্সারকে তথ্য প্রদান করে।
manifest.version
প্রয়োজন। এই ম্যানিফেস্টের মেটা-সংস্করণ। ম্যানিফেস্টে প্রত্যাশিত উপাদানগুলি বর্ণনা করে৷ XML সংস্করণের সাথে সম্পর্কহীন।
manifest.type
প্রয়োজন। এই ম্যানিফেস্টের ধরন। এতে ডিভাইস ম্যানিফেস্ট ফাইলের মান ডিভাইস এবং ফ্রেমওয়ার্ক ম্যানিফেস্ট ফাইলের জন্য device framework
manifest.target-level
ডিভাইস ম্যানিফেস্টের জন্য প্রয়োজনীয়। ফ্রেমওয়ার্ক কম্প্যাটিবিলিটি ম্যাট্রিক্স (FCM) সংস্করণ নির্দিষ্ট করে যেটির সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য এই ডিভাইস ম্যানিফেস্টকে লক্ষ্য করা হয়েছে৷ এটিকে ডিভাইসের শিপিং FCM সংস্করণও বলা হয়।
manifest.hal
ঐচ্ছিক, পুনরাবৃত্তি করতে পারেন। একটি একক HAL (HIDL বা নেটিভ, যেমন GL), format বৈশিষ্ট্যের উপর নির্ভর করে।
manifest.hal.format
ঐচ্ছিক। মান একটি হতে পারে:
  • hidl : HIDL HALs। এটি ডিফল্ট।
  • aidl : AIDL HALs । শুধুমাত্র ম্যানিফেস্ট মেটা-সংস্করণ 2.0 এবং তার উপরে বৈধ।
  • native : নেটিভ HALs।
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 সকেট
manifest.hal.transport.ip এবং manifest.hal.transport.port অবশ্যই Inet সংযোগ তথ্য আরও নির্দিষ্ট করতে ব্যবহার করতে হবে।
manifest.hal.transport.arch
passthrough এর জন্য প্রয়োজনীয় এবং hwbinder এর জন্য উপস্থিত থাকা উচিত নয়। প্রদান করা পাসথ্রু পরিষেবার বিটনেস বর্ণনা করে। মান একটি হতে পারে:
  • 32 : 32-বিট মোড
  • 64 : 64-বিট মোড
  • 32+64 : উভয়ই
manifest.hal.transport.ip
inet এর জন্য প্রয়োজনীয় এবং অন্যথায় উপস্থিত থাকা উচিত নয়। আইপি ঠিকানা বর্ণনা করে যেখান থেকে রিমোট ইন্টারফেস পরিবেশন করা হচ্ছে।
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 HALs-এর জন্য, বিন্যাসটি হল INTERFACE / INSTANCE
manifest.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 এর থেকে বড় বা সমান হতে হবে। বিস্তারিত জানার জন্য কার্নেল মিলের নিয়ম দেখুন।