SDK এক্সটেনশন

SDK এক্সটেনশন মডিউল ডিভাইসের এক্সটেনশন SDK স্তর নির্ধারণ করে এবং এক্সটেনশন SDK স্তরের অনুসন্ধান করার জন্য অ্যাপগুলির জন্য API প্রদান করে৷ এই মডিউলটি আপডেটযোগ্য, মানে এটি স্বাভাবিক অ্যান্ড্রয়েড রিলিজ চক্রের বাইরে কার্যকারিতার আপডেট পেতে পারে।

SDK এক্সটেনশন এর জন্য দায়ী:

  • ডিভাইসের এক্সটেনশন SDK স্তরের সিদ্ধান্ত নেওয়া।
  • এক্সটেনশন SDK স্তরের অনুসন্ধান করার জন্য অ্যাপগুলির জন্য API প্রদান করা।
  • (Android 12 শুরু হচ্ছে) BOOTCLASSPATH , DEX2OATBOOTCLASSPATH , এবং SYSTEMSERVERCLASSPATH এনভায়রনমেন্ট ভেরিয়েবলের মান নির্ধারণ করা।

মডিউল বিন্যাস

SDK এক্সটেনশন মডিউল ( com.android.sdkext ) APEX ফরম্যাটে এবং Android 11 বা উচ্চতর সংস্করণে চলমান ডিভাইসগুলির জন্য উপলব্ধ৷

প্যাকেজ বিন্যাস

SDK এক্সটেনশন মডিউল ( com.google.android.sdkext ) APEX ফর্ম্যাটে এবং এতে নিম্নলিখিত উপাদানগুলি রয়েছে:

  • (Android 12 শুরু হচ্ছে) bin/derive_classpath : একটি নেটিভ বাইনারি যা ডিভাইস বুট প্রক্রিয়ার প্রথম দিকে চলে। এটি সিস্টেম এবং অন্যান্য মডিউলগুলি থেকে পৃথক ক্লাসপাথ কনফিগার ফাইলগুলি পড়ে, সেগুলিকে একত্রিত করে এবং CLASSPATH এনভায়রনমেন্ট ভেরিয়েবলের সংজ্ঞা নির্ধারণ করে।

  • bin/derive_sdk : একটি নেটিভ বাইনারি যা ডিভাইস বুট প্রক্রিয়ার প্রথম দিকে চলে এবং এক্সটেনশন SDK সম্পর্কিত সিস্টেম বৈশিষ্ট্য সেট করতে অন্যান্য মডিউলের মেটাডেটা পড়ে (উদাহরণস্বরূপ, build.version.extensions.r )।

  • javalib/framework-sdkextension.jar : এই ফাইলটি বুটক্লাসপাথে রয়েছে যা এক্সটেনশন SDK স্তরের অনুসন্ধান করার জন্য এপিআইগুলিকে অ্যাপে প্রকাশ করে।

এক্সটেনশন SDK স্তর আহরণ

derive_sdk প্রোগ্রাম প্রতিটি APEX মডিউলের মধ্যে etc/sdkinfo.binarypb সাবপাথে বাইনারি প্রোটোবাফ ফাইল হিসাবে সংরক্ষিত মেটাডেটা পড়ে। protobuf গঠন সম্পর্কে বিস্তারিত জানার জন্য, protobuf ফাইল পড়ুন.

এক্সটেনশন SDK স্তর পড়ুন

SDK এক্সটেনশন মডিউল android.os.ext প্যাকেজে একটি SdkExtensions জাভা ক্লাস প্রকাশ করে। একটি SDK এক্সটেনশনের সংস্করণ পড়তে getExtensionVersion(int) পদ্ধতি ব্যবহার করুন (উদাহরণস্বরূপ, getExtensionVersion(Build.VERSION_CODES.R) )।

ক্লাসপাথ বের করুন

derive_classpath পরিষেবাটি /system/etc/classpaths/ এবং /apex/*/etc/classpaths/ -এ পৃথক কনফিগারেশন ফাইল পড়ে এবং মার্জ করে। প্রতিটি কনফিগার একটি প্রোটো বাইনারি বিন্যাসে classpaths.proto থেকে protobuf বার্তা সংরক্ষণ করে। সঠিক মার্জিং অ্যালগরিদম যা ক্লাসপাথ এন্ট্রিগুলির ক্রম নির্ধারণ করে তা derive_classpath.cpp এ বর্ণনা করা হয়েছে এবং সময়ের সাথে সাথে পরিবর্তিত হতে পারে।