ডিরেক্টরি, নিয়ম, এবং সেপলিসি

এই পৃষ্ঠাটি Android 8.0 এবং উচ্চতর সংস্করণে চালিত ডিভাইসগুলির জন্য ডিরেক্টরি বিন্যাস, VNDK নিয়ম এবং সংশ্লিষ্ট সেপলিসি বর্ণনা করে৷

ডিরেক্টরি বিন্যাস

ডিজেনারেটেড ডিরেক্টরি লেআউট নিম্নলিখিত ডিরেক্টরিগুলি নিয়ে গঠিত:

  • /system/lib[64] এ LL-NDK, VNDK, এবং ফ্রেমওয়ার্ক-অনলি লাইব্রেরি সহ সমস্ত ফ্রেমওয়ার্ক শেয়ার্ড লাইব্রেরি রয়েছে (এলএল-এনডিকে-প্রাইভেট এবং কিছু লাইব্রেরি যার নাম VNDK-SP-তে রয়েছে)।
  • /system/lib[64]/vndk-sp একই-প্রক্রিয়া HAL-এর জন্য VNDK-SP লাইব্রেরি রয়েছে।
  • /vendor/lib[64] বিক্রেতা দ্বারা প্রসারিত VNDK লাইব্রেরি রয়েছে (হয় DXUA বা DXUX VNDK লাইব্রেরি), একই-প্রক্রিয়া HAL বাস্তবায়ন, এবং অন্যান্য বিক্রেতা শেয়ার করা লাইব্রেরি।
  • /vendor/lib[64]/vndk-sp বিক্রেতা দ্বারা প্রসারিত VNDK-SP লাইব্রেরি থাকতে পারে।

ভেন্ডর মডিউলগুলি /system/lib[64] থেকে VNDK লাইব্রেরি লোড করে।

VNDK নিয়ম

এই বিভাগটি VNDK নিয়মগুলির একটি বিস্তৃত তালিকা প্রদান করে:

  • ফ্রেমওয়ার্ক প্রক্রিয়াগুলি অবশ্যই বিক্রেতা পার্টিশন থেকে নন-SP-HAL শেয়ার্ড লাইব্রেরি লোড করবে না (Android 8.1 থেকে শুরু করে কঠোরভাবে প্রয়োগ করা হয়েছে)।
  • ভেন্ডর প্রসেসগুলিকে সিস্টেম পার্টিশন থেকে নন-LL-NDK, নন-VNDK-SP, এবং নন-VNDK লাইব্রেরিগুলি লোড করা উচিত নয়৷ (Android O তে কঠোরভাবে প্রয়োগ করা হয়নি তবে ভবিষ্যতে প্রকাশে হবে)।
  • ইনস্টল করা VNDK লাইব্রেরিগুলি অবশ্যই Google-সংজ্ঞায়িত যোগ্য VNDK লাইব্রেরির একটি উপসেট হতে হবে৷
  • SP-HAL এবং SP-HAL-Dep-এর বাইরের নির্ভরতা অবশ্যই LL-NDK বা Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরিতে সীমাবদ্ধ থাকতে হবে।
    • একটি SP-HAL ভাগ করা লাইব্রেরির নির্ভরতা অবশ্যই LL-NDK লাইব্রেরি, Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরি, অন্যান্য SP-HAL লাইব্রেরি এবং/অথবা অন্যান্য বিক্রেতার শেয়ার করা লাইব্রেরিতে সীমাবদ্ধ থাকতে হবে যেগুলিকে SP-HAL-Dep লাইব্রেরি হিসাবে লেবেল করা যেতে পারে .
    • একটি বিক্রেতার ভাগ করা লাইব্রেরিকে শুধুমাত্র SP-HAL-Dep লাইব্রেরি হিসাবে লেবেল করা যেতে পারে যদি এটি একটি AOSP লাইব্রেরি না হয় এবং এর নির্ভরতা LL-NDK লাইব্রেরি, Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরি, SP-HAL লাইব্রেরি এবং/অথবা সীমাবদ্ধ থাকে অন্যান্য SP-HAL-Dep লাইব্রেরি।
  • VNDK-SP অবশ্যই স্বয়ংসম্পূর্ণ হতে হবে। libRS_internal.so এন্ড্রয়েড 8.0-এ বিশেষ ট্রিটমেন্ট পায়, কিন্তু ভবিষ্যতে রিলিজে আবার দেখা হবে।
  • বাইন্ডার, সকেট, শেয়ার করা স্মৃতি, ফাইল ইত্যাদি সহ (তবে সীমাবদ্ধ নয়) নন-এইচআইডিএল ইন্টারফেসের মাধ্যমে ফ্রেমওয়ার্ক-বিক্রেতার যোগাযোগ নেই।
  • সিস্টেম পার্টিশনের আকার অবশ্যই যথেষ্ট বড় হতে হবে যাতে সমস্ত যোগ্য VNDK লাইব্রেরির দুটি কপি এবং অযোগ্য ফ্রেমওয়ার্ক শেয়ার করা লাইব্রেরির একটি অনুলিপি থাকে।

সেপলিসি

এই বিভাগে বর্ণিত ফ্রেমওয়ার্ক প্রক্রিয়াগুলি সেপলিসিগুলিতে coredomain সাথে মিলে যায় যখন বিক্রেতা প্রক্রিয়াগুলি non-coredomain সাথে মিলে যায়৷ উদাহরণস্বরূপ, /dev/binder শুধুমাত্র coredomain এ অ্যাক্সেস করা যেতে পারে এবং /dev/vndbinder শুধুমাত্র নন- coredomain অ্যাক্সেস করা যেতে পারে।

অনুরূপ নীতিগুলি সিস্টেম এবং বিক্রেতা পার্টিশনে ভাগ করা লাইব্রেরিতে অ্যাক্সেস সীমাবদ্ধ করে। নিম্নলিখিত সারণী বিভিন্ন বিভাগের শেয়ার করা লাইব্রেরি অ্যাক্সেস করার অধিকার দেখায়:

শ্রেণী বিভাজন থেকে অ্যাক্সেসযোগ্য
কোরডোমেন
থেকে অ্যাক্সেসযোগ্য
নন-কোরডোমেন
এলএল-এনডিকে পদ্ধতি Y Y
এলএল-এনডিকে-প্রাইভেট পদ্ধতি Y Y
VNDK-SP/VNDK-SP-প্রাইভেট পদ্ধতি Y Y
VNDK-SP-এক্সট বিক্রেতা Y Y
ভিএনডিকে পদ্ধতি Y Y
VNDK-এক্সট বিক্রেতা এন Y
FWK-শুধুমাত্র পদ্ধতি Y এন
FWK-শুধু-RS পদ্ধতি Y এন
এসপি-এইচএএল বিক্রেতা Y Y
SP-HAL-Dep বিক্রেতা Y Y
VND-শুধুমাত্র বিক্রেতা এন Y

LL-NDK-Private এবং VNDK-SP-Private অবশ্যই উভয় ডোমেন থেকে অ্যাক্সেসযোগ্য হতে হবে কারণ নন- coredomain পরোক্ষভাবে তাদের অ্যাক্সেস করবে। একইভাবে, SP-HAL-Dep অবশ্যই coredomain থেকে অ্যাক্সেসযোগ্য হতে হবে কারণ SP-HAL এটির উপর নির্ভর করে।

same_process_hal_file লেবেল

নিম্নলিখিত লাইব্রেরিগুলি ভেন্ডর পার্টিশনে বিদ্যমান। coredomain এবং নন- coredomain উভয় থেকে এই লাইব্রেরিগুলিকে অ্যাক্সেসযোগ্য করুন৷

  • VNDK-SP-Ext in /vendor/lib[64]/vndk-sp
  • SP-HAL in /vendor/lib[64] অথবা /vendor/lib[64]/hw
  • SP-HAL-Dep in /vendor/lib[64] অথবা /vendor/lib[64]/hw

স্পষ্টভাবে এই ফাইলগুলিকে same_process_hal_file হিসাবে লেবেল করুন, কারণ vendor পার্টিশনে যেকোনো কিছু ডিফল্টরূপে coredomain এ অ্যাক্সেসযোগ্য নয়। বিক্রেতা-নির্দিষ্ট file_contexts ফাইলে নিম্নলিখিত অনুরূপ লাইন যোগ করুন।

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0
,

এই পৃষ্ঠাটি Android 8.0 এবং উচ্চতর সংস্করণে চালিত ডিভাইসগুলির জন্য ডিরেক্টরি বিন্যাস, VNDK নিয়ম এবং সংশ্লিষ্ট সেপলিসি বর্ণনা করে৷

ডিরেক্টরি বিন্যাস

ডিজেনারেটেড ডিরেক্টরি লেআউট নিম্নলিখিত ডিরেক্টরিগুলি নিয়ে গঠিত:

  • /system/lib[64] এ LL-NDK, VNDK, এবং ফ্রেমওয়ার্ক-অনলি লাইব্রেরি সহ সমস্ত ফ্রেমওয়ার্ক শেয়ার্ড লাইব্রেরি রয়েছে (এলএল-এনডিকে-প্রাইভেট এবং কিছু লাইব্রেরি যার নাম VNDK-SP-তে রয়েছে)।
  • /system/lib[64]/vndk-sp একই-প্রক্রিয়া HAL-এর জন্য VNDK-SP লাইব্রেরি রয়েছে।
  • /vendor/lib[64] বিক্রেতা দ্বারা প্রসারিত VNDK লাইব্রেরি রয়েছে (হয় DXUA বা DXUX VNDK লাইব্রেরি), একই-প্রক্রিয়া HAL বাস্তবায়ন, এবং অন্যান্য বিক্রেতা শেয়ার করা লাইব্রেরি।
  • /vendor/lib[64]/vndk-sp বিক্রেতা দ্বারা প্রসারিত VNDK-SP লাইব্রেরি থাকতে পারে।

ভেন্ডর মডিউলগুলি /system/lib[64] থেকে VNDK লাইব্রেরি লোড করে।

VNDK নিয়ম

এই বিভাগটি VNDK নিয়মগুলির একটি বিস্তৃত তালিকা প্রদান করে:

  • ফ্রেমওয়ার্ক প্রক্রিয়াগুলি অবশ্যই বিক্রেতা পার্টিশন থেকে নন-SP-HAL শেয়ার্ড লাইব্রেরি লোড করবে না (Android 8.1 থেকে শুরু করে কঠোরভাবে প্রয়োগ করা হয়েছে)।
  • ভেন্ডর প্রসেসগুলিকে সিস্টেম পার্টিশন থেকে নন-LL-NDK, নন-VNDK-SP, এবং নন-VNDK লাইব্রেরিগুলি লোড করা উচিত নয়৷ (Android O তে কঠোরভাবে প্রয়োগ করা হয়নি তবে ভবিষ্যতে প্রকাশে হবে)।
  • ইনস্টল করা VNDK লাইব্রেরিগুলি অবশ্যই Google-সংজ্ঞায়িত যোগ্য VNDK লাইব্রেরির একটি উপসেট হতে হবে৷
  • SP-HAL এবং SP-HAL-Dep-এর বাইরের নির্ভরতা অবশ্যই LL-NDK বা Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরিতে সীমাবদ্ধ থাকতে হবে।
    • একটি SP-HAL ভাগ করা লাইব্রেরির নির্ভরতা অবশ্যই LL-NDK লাইব্রেরি, Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরি, অন্যান্য SP-HAL লাইব্রেরি এবং/অথবা অন্যান্য বিক্রেতার শেয়ার করা লাইব্রেরিতে সীমাবদ্ধ থাকতে হবে যেগুলিকে SP-HAL-Dep লাইব্রেরি হিসাবে লেবেল করা যেতে পারে .
    • একটি বিক্রেতার ভাগ করা লাইব্রেরিকে শুধুমাত্র SP-HAL-Dep লাইব্রেরি হিসাবে লেবেল করা যেতে পারে যদি এটি একটি AOSP লাইব্রেরি না হয় এবং এর নির্ভরতা LL-NDK লাইব্রেরি, Google-সংজ্ঞায়িত VNDK-SP লাইব্রেরি, SP-HAL লাইব্রেরি এবং/অথবা সীমাবদ্ধ থাকে অন্যান্য SP-HAL-Dep লাইব্রেরি।
  • VNDK-SP অবশ্যই স্বয়ংসম্পূর্ণ হতে হবে। libRS_internal.so এন্ড্রয়েড 8.0-এ বিশেষ ট্রিটমেন্ট পায়, কিন্তু ভবিষ্যতে রিলিজে আবার দেখা হবে।
  • বাইন্ডার, সকেট, শেয়ার করা স্মৃতি, ফাইল ইত্যাদি সহ (তবে সীমাবদ্ধ নয়) নন-এইচআইডিএল ইন্টারফেসের মাধ্যমে ফ্রেমওয়ার্ক-বিক্রেতার যোগাযোগ নেই।
  • সিস্টেম পার্টিশনের আকার অবশ্যই যথেষ্ট বড় হতে হবে যাতে সমস্ত যোগ্য VNDK লাইব্রেরির দুটি কপি এবং অযোগ্য ফ্রেমওয়ার্ক শেয়ার করা লাইব্রেরির একটি অনুলিপি থাকে।

সেপলিসি

এই বিভাগে বর্ণিত ফ্রেমওয়ার্ক প্রক্রিয়াগুলি সেপলিসিগুলিতে coredomain সাথে মিলে যায় যখন বিক্রেতা প্রক্রিয়াগুলি non-coredomain সাথে মিলে যায়৷ উদাহরণস্বরূপ, /dev/binder শুধুমাত্র coredomain এ অ্যাক্সেস করা যেতে পারে এবং /dev/vndbinder শুধুমাত্র নন- coredomain অ্যাক্সেস করা যেতে পারে।

অনুরূপ নীতিগুলি সিস্টেম এবং বিক্রেতা পার্টিশনে ভাগ করা লাইব্রেরিতে অ্যাক্সেস সীমাবদ্ধ করে। নিম্নলিখিত সারণী বিভিন্ন বিভাগের শেয়ার করা লাইব্রেরি অ্যাক্সেস করার অধিকার দেখায়:

শ্রেণী বিভাজন থেকে অ্যাক্সেসযোগ্য
কোরডোমেন
থেকে অ্যাক্সেসযোগ্য
নন-কোরডোমেন
এলএল-এনডিকে পদ্ধতি Y Y
এলএল-এনডিকে-প্রাইভেট পদ্ধতি Y Y
VNDK-SP/VNDK-SP-প্রাইভেট পদ্ধতি Y Y
VNDK-SP-এক্সট বিক্রেতা Y Y
ভিএনডিকে পদ্ধতি Y Y
VNDK-এক্সট বিক্রেতা এন Y
FWK-শুধুমাত্র পদ্ধতি Y এন
FWK-শুধু-RS পদ্ধতি Y এন
এসপি-এইচএএল বিক্রেতা Y Y
SP-HAL-Dep বিক্রেতা Y Y
VND-শুধুমাত্র বিক্রেতা এন Y

LL-NDK-Private এবং VNDK-SP-Private অবশ্যই উভয় ডোমেন থেকে অ্যাক্সেসযোগ্য হতে হবে কারণ নন- coredomain পরোক্ষভাবে তাদের অ্যাক্সেস করবে। একইভাবে, SP-HAL-Dep অবশ্যই coredomain থেকে অ্যাক্সেসযোগ্য হতে হবে কারণ SP-HAL এটির উপর নির্ভর করে।

same_process_hal_file লেবেল

নিম্নলিখিত লাইব্রেরিগুলি ভেন্ডর পার্টিশনে বিদ্যমান। coredomain এবং নন- coredomain উভয় থেকে এই লাইব্রেরিগুলিকে অ্যাক্সেসযোগ্য করুন৷

  • VNDK-SP-Ext in /vendor/lib[64]/vndk-sp
  • SP-HAL in /vendor/lib[64] অথবা /vendor/lib[64]/hw
  • SP-HAL-Dep in /vendor/lib[64] অথবা /vendor/lib[64]/hw

স্পষ্টভাবে এই ফাইলগুলিকে same_process_hal_file হিসাবে লেবেল করুন, কারণ vendor পার্টিশনে যেকোনো কিছু ডিফল্টরূপে coredomain এ অ্যাক্সেসযোগ্য নয়। বিক্রেতা-নির্দিষ্ট file_contexts ফাইলে নিম্নলিখিত অনুরূপ লাইন যোগ করুন।

/vendor/lib(64)?/hw/libMySpHal\.so        u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/vndk-sp/libBase\.so      u:object_r:same_process_hal_file:s0
/vendor/lib(64)?/libBaseInternal\.so      u:object_r:same_process_hal_file:s0