SDK এক্সটেনশন

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

এসডিকে এক্সটেনশনস নিম্নলিখিত বিষয়গুলির জন্য দায়ী:

  • ডিভাইসটির এক্সটেনশন এসডিকে লেভেল নির্ধারণ করা।
  • অ্যাপগুলিকে এক্সটেনশন SDK স্তর সম্পর্কে জিজ্ঞাসা করার জন্য API প্রদান করা।
  • (অ্যান্ড্রয়েড ১২ থেকে শুরু) BOOTCLASSPATH , DEX2OATBOOTCLASSPATH এবং SYSTEMSERVERCLASSPATH এনভায়রনমেন্ট ভেরিয়েবলগুলোর মান নির্ধারণ করা।

মডিউল ফরম্যাট

এসডিকে এক্সটেনশন মডিউল ( com.android.sdkext ) APEX ফরম্যাটে রয়েছে এবং এটি অ্যান্ড্রয়েড ১১ বা তার পরবর্তী সংস্করণে চালিত ডিভাইসগুলোর জন্য উপলব্ধ।

প্যাকেজ ফরম্যাট

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

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

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

  • javalib/framework-sdkextension.jar : এই ফাইলটি বুটক্লাসপ্যাথ-এ থাকে, যা অ্যাপগুলোকে এক্সটেনশন SDK লেভেল কোয়েরি করার জন্য API প্রদান করে।

এক্সটেনশন SDK স্তর থেকে উদ্ভূত করুন

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

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

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

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

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