বিক্রেতা API স্তর

ভেন্ডর এপিআই লেভেল বলতে ভেন্ডর পার্টিশন দ্বারা সমর্থিত ইন্টারফেসের সংস্করণকে বোঝায়। ইন্টারফেসটি দ্বিমুখী; এটি সেই এপিআই-কে বর্ণনা করে যা ভেন্ডর পার্টিশন সিস্টেম পার্টিশনকে প্রদান করে (হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার বা HAL ইন্টারফেস), এবং সেইসাথে সেই এপিআই-কেও বর্ণনা করে যা ভেন্ডর পার্টিশন সিস্টেম পার্টিশনের কাছ থেকে প্রত্যাশা করে (লো-লেভেল নেটিভ ডেভেলপারস কিট বা LLNDK ইন্টারফেস)।

ভেন্ডর এপিআই লেভেল ভেন্ডর সফটওয়্যার রিকোয়ারমেন্টস (ভিএসআর) নির্ধারণ করতেও ব্যবহৃত হয়, যা হলো ফাংশনাল এবং নন-ফাংশনাল রিকোয়ারমেন্টসের একটি সংগ্রহ যা ভেন্ডর পার্টিশনের সফটওয়্যারকে অবশ্যই পূরণ করতে হবে।

এই পৃষ্ঠার বাকি অংশে ব্যাখ্যা করা হয়েছে, কীভাবে আপনার অ্যান্ড্রয়েড সংস্করণের ওপর নির্ভর করে ভেন্ডর এপিআই লেভেল নির্ধারণ করতে সিস্টেম প্রোপার্টি ব্যবহার করা হয়।

বিক্রেতাদের স্থবিরতা

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

ভেন্ডর ফ্রিজ শুধুমাত্র তখনই উপলব্ধ হবে, যদি আপনি একটি অ্যান্ড্রয়েড-সামঞ্জস্যপূর্ণ ডিভাইস তৈরি করেন।

ভেন্ডর এপিআই লেভেল নির্ধারণ করুন (অ্যান্ড্রয়েড ১৪-কিউপিআর৩ এবং পরবর্তী সংস্করণ)

Android 14-QPR3 এবং এর পরবর্তী সংস্করণগুলোর জন্য ভেন্ডর এপিআই লেভেল আলাদাভাবে প্রকাশ করা হয়, যার ফলে এসডিকে এপিআই লেভেল এবং ভেন্ডর এপিআই লেভেলের মধ্যে সামঞ্জস্য থাকে না।

পৃথক রিলিজ শিডিউলের কারণে, Android 14-QPR3 এবং এর পরবর্তী সংস্করণগুলোতে, ভেন্ডর এপিআই লেভেলকে এসডিকে এপিআই লেভেল থেকে সম্পূর্ণরূপে বিচ্ছিন্ন রাখা হয়েছে। এই বিচ্ছিন্নতা যাতে স্পষ্ট হয়, তা নিশ্চিত করার জন্য ভেন্ডর এপিআই লেভেলের ফরম্যাটটি YYYYMM (বছর ও মাস) বিন্যাসে একটি তারিখ হয়, যেখানে এসডিকে লেভেলটি একটি পূর্ণসংখ্যা।

Android 14-QPR3 এবং এর পরবর্তী সংস্করণগুলোতে ভেন্ডর এপিআই লেভেল সম্পর্কিত নিম্নলিখিত সিস্টেম প্রোপার্টিগুলো অন্তর্ভুক্ত রয়েছে:

সিস্টেম সম্পত্তি ফর্ম্যাট বর্ণনা প্রাথমিক সেটিং
ro.board.api_level YYYYMM একটি চিপসেটের সফটওয়্যার যে ভেন্ডর এপিআই লেভেল সমর্থন করে। এই প্রপার্টিটি সমস্ত চিপসেটের জন্য সেট করা থাকে। এটি বিল্ড সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয়।
ro.board.first_api_level YYYYMM যে ভেন্ডর এপিআই লেভেলের সাথে একটি চিপসেটের সফটওয়্যার প্রথম রিলিজ করা হয়েছিল। এই প্রপার্টিটি শুধুমাত্র চিপসেটের উপর নির্ভরশীল এবং যদি এসওসি চিপসেটটি ভেন্ডর ফ্রিজের জন্য যোগ্য হয়, তবে এসওসি ভেন্ডররা এটি সেট করে। প্রাথমিক সেটিংয়ের পরে, এই প্রপার্টিটিকে চূড়ান্ত বলে গণ্য করা উচিত এবং এটি পরিবর্তন করা উচিত নয়। যদিও এটি কঠোরভাবে নিরুৎসাহিত করা হয়, তবে নতুন ভেন্ডর ফ্রিজ যোগ্যতা অর্জনের ক্ষেত্রে বিরল ও ব্যতিক্রমী পরিস্থিতিতে একটি আপডেটের অনুমতি দেওয়া যেতে পারে। SoC ভেন্ডররা BOARD_SHIPPING_API_LEVEL ব্যবহার করে এই সেটিংটি নির্ধারণ করে।
ro.product.first_api_level পূর্ণসংখ্যা ডিভাইসটি প্রাথমিকভাবে যে SDK API লেভেল দিয়ে চালু করা হয়। এই বৈশিষ্ট্যটি OEM দ্বারা সেট করা হয় এবং তারপর OS আপগ্রেডের পরেও এটি আর কখনও আপডেট করা হয় না।
ro.vendor.api_level YYYYMM যে ভেন্ডর এপিআই লেভেলটি ro.product.first_api_level এর সাথে সঙ্গতিপূর্ণ। যখন ro.board.api_level মান ro.board.api_level এর ভেন্ডর এপিআই লেভেলের চেয়ে কম হয়, শুধুমাত্র তখনই আমরা ro.vendor.api_level ro.product.first_api_level এর মানে সেট করি, যদি SoC চিপসেটটি ভেন্ডর ফ্রিজের জন্য যোগ্য হয়। এই সারণীর পরে বর্ণনা করা হয়েছে।
ro.board.api_frozen বুলিয়ান যদি ro.board.api_level দ্বারা নির্দেশিত ভেন্ডর এপিআই লেভেলটি চূড়ান্ত করা হয়, তাহলে এই প্রপার্টিটির মান ' true সেট করা হয়। এই প্রপার্টিটি সেট করা না থাকলে, এর ডিফল্ট মান false
ro.llndk.api_level YYYYMM সিস্টেম পার্টিশনে থাকা বর্তমান LLNDK যে ভেন্ডর এপিআই লেভেলটি (YYYYMM ফরম্যাট) প্রদান করে। LLNDK-টি ব্যাকওয়ার্ড কম্প্যাটিবল, তাই এই এপিআই লেভেলের সমান বা তার চেয়ে কম যেকোনো ভেন্ডর ইমেজ এই সিস্টেম ইমেজ দিয়ে ফ্ল্যাশ করা যাবে। এই প্রপার্টিটি সিস্টেম পার্টিশনে সেট করা আছে।

ro.vendor.api_level প্রপার্টিটি নিম্নলিখিত দুটি উপায়ের যেকোনো একটিতে তৈরি করা হয়:

  • যদি চিপসেটটি ভেন্ডর ফ্রিজের জন্য যোগ্য বিবেচিত হয়:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • যদি চিপসেটটি ভেন্ডর ফ্রিজের আওতায় না থাকে:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

AVendorSupport_getVendorApiLevelOf() মেথডটি একটি SDK API লেভেল থেকে সংশ্লিষ্ট ভেন্ডর API লেভেল নির্ধারণ করে। উদাহরণস্বরূপ, AVendorSupport_getVendorApiLevelOf(35) , যেখানে 35 হলো 2024 সালের প্রধান অ্যান্ড্রয়েড রিলিজের SDK API লেভেল, এটি 202404 রিটার্ন করে, যা হলো অ্যান্ড্রয়েড 14-QPR3-এর একটি আনুমানিক তারিখ যখন বর্তমান ভেন্ডর API লেভেলটি সেট করা হয়েছিল।

ভেন্ডর এপিআই লেভেল নির্ধারণ করুন (অ্যান্ড্রয়েড ১৩)

ভেন্ডর এপিআই লেভেলটি এসডিকে এপিআই লেভেলকে অনুসরণ করে, যা অ্যাপ-ওএস ইন্টারফেসের জন্য ব্যবহৃত হয় এবং প্রতি বছর AOSP-তে নতুন অ্যান্ড্রয়েড প্ল্যাটফর্ম প্রকাশিত হলে এটি আপডেট করা হয়।

অ্যান্ড্রয়েড ১৩-এ ভেন্ডর এপিআই লেভেল সম্পর্কিত নিম্নলিখিত সিস্টেম প্রোপার্টিগুলো রয়েছে:

সিস্টেম সম্পত্তি ফর্ম্যাট বর্ণনা প্রাথমিক সেটিং
ro.board.first_api_level পূর্ণসংখ্যা যে ভেন্ডর এপিআই লেভেলের সাথে একটি চিপসেটের সফটওয়্যার প্রথম রিলিজ করা হয়েছিল। এটি শুধুমাত্র চিপসেটের একটি ফাংশন, এবং SoC ভেন্ডর বা OEM কেউই এটি পরিবর্তন করতে পারে না। এই প্রপার্টিটি শুধুমাত্র সেইসব চিপসেটের জন্য সেট করা হয় যেগুলো ভেন্ডর ফ্রিজের জন্য যোগ্য। device.mk ফাইলে BOARD_SHIPPING_API_LEVEL সেট করার মাধ্যমে মানটি নির্ধারিত হয়।
ro.board.api_level পূর্ণসংখ্যা একটি চিপসেটের সফটওয়্যার যে ভেন্ডর এপিআই লেভেল সমর্থন করে। এই প্রপার্টিটি শুধুমাত্র সেইসব চিপসেটের জন্য সেট করা হয় যেগুলো ভেন্ডর ফ্রিজের জন্য যোগ্য। প্রাথমিকভাবে, বিল্ড সিস্টেম এই প্রপার্টির মান ro.board.first_api_level এর সমান করে দেয়, কিন্তু ভেন্ডর পার্টিশন আপগ্রেড করা হলে এটি আপডেট করা যেতে পারে।
ro.product.first_api_level পূর্ণসংখ্যা ডিভাইসটি প্রাথমিকভাবে যে SDK API লেভেল দিয়ে চালু করা হয়। এই বৈশিষ্ট্যটি OEM দ্বারা সেট করা হয় এবং তারপর OS আপগ্রেডের পরেও এটি আর কখনও আপডেট করা হয় না।
ro.vendor.api_level পূর্ণসংখ্যা পূর্ববর্তী সারণীতে থাকা ভেন্ডর এপিআই লেভেলের বিবরণের অনুরূপ।
ro.vndk.version পূর্ণসংখ্যা VNDK-এর যে সংস্করণের উপর ভিত্তি করে ভেন্ডর পার্টিশনটি তৈরি করা হয়েছে। এই প্রপার্টিটি ভেন্ডর পার্টিশনে সেট করা আছে।
ro.vendor.build.version.sdk পূর্ণসংখ্যা সোর্স ট্রি-এর SDK API লেভেল, যেখানে ভেন্ডর পার্টিশনটি তৈরি করা হয়েছিল।