ভেন্ডর এপিআই লেভেল বলতে ভেন্ডর পার্টিশন দ্বারা সমর্থিত ইন্টারফেসের সংস্করণকে বোঝায়। ইন্টারফেসটি দ্বিমুখী; এটি ভেন্ডর পার্টিশন সিস্টেম পার্টিশনে (হার্ডওয়্যার অ্যাবস্ট্রাকশন লেয়ার বা HAL ইন্টারফেস) যে API প্রদান করে তা বর্ণনা করে, এবং সিস্টেম পার্টিশন (নিম্ন-স্তরের নেটিভ ডেভেলপার কিট বা LLNDK ইন্টারফেস) থেকে ভেন্ডর পার্টিশনের জন্য প্রয়োজনীয় APIও বর্ণনা করে।
ভেন্ডর সফটওয়্যার রিকোয়ারমেন্টস (VSRs) নির্ধারণের জন্যও ভেন্ডর API লেভেল ব্যবহার করা হয়, যা কার্যকরী এবং অকার্যকর প্রয়োজনীয়তার একটি সংগ্রহ যা ভেন্ডর পার্টিশনের সফটওয়্যারটি অবশ্যই পূরণ করবে।
এই পৃষ্ঠার বাকি অংশে ব্যাখ্যা করা হয়েছে যে আপনার অ্যান্ড্রয়েড সংস্করণের উপর নির্ভর করে, ভেন্ডর API স্তর নির্ধারণের জন্য সিস্টেম বৈশিষ্ট্যগুলি কীভাবে ব্যবহার করা হয়।
বিক্রেতা ফ্রিজ
অ্যান্ড্রয়েড একটি ভেন্ডরকে VSR-এর একটি নির্দিষ্ট সংস্করণে ভেন্ডর পার্টিশন ফ্রিজ করার অনুমতি দেয়। ভেন্ডর পার্টিশন থেকে অ্যান্ড্রয়েড যে বৈশিষ্ট্যগুলি আশা করে তা ভেন্ডর পার্টিশনের সাথে সম্পর্কিত ভেন্ডর API স্তর দ্বারা নির্ধারিত হয়। রানটাইমে, সিস্টেম পার্টিশনে চলমান সফ্টওয়্যারের আচরণ ভেন্ডর পার্টিশনের ভেন্ডর API স্তরের সাথে সামঞ্জস্যপূর্ণ হয়। উদাহরণস্বরূপ, সিস্টেম পার্টিশনের সফ্টওয়্যারটি যদি ভেন্ডর পার্টিশনের API স্তর দ্বারা সমর্থিত না হয় তবে নতুন বৈশিষ্ট্যগুলি ব্যবহার নাও করতে পারে।
আপনি যদি একটি অ্যান্ড্রয়েড-সামঞ্জস্যপূর্ণ ডিভাইস তৈরি করেন তবেই কেবল একটি ভেন্ডর ফ্রিজ পাওয়া যাবে।
ভেন্ডর এপিআই লেভেল নির্ধারণ করুন (অ্যান্ড্রয়েড ১৪-কিউপিআর৩ এবং পরবর্তী সংস্করণ)
অ্যান্ড্রয়েড ১৪-কিউপিআর৩ এবং পরবর্তী সংস্করণের জন্য, ভেন্ডর এপিআই লেভেল আলাদাভাবে প্রকাশিত হয়েছে, যার অর্থ SDK এপিআই লেভেল এবং ভেন্ডর এপিআই লেভেল সিঙ্কের বাইরে।
পৃথক রিলিজ সময়সূচীর কারণে, Android 14-QPR3 এবং পরবর্তী সংস্করণগুলির জন্য, বিক্রেতা API স্তরটি SDK API স্তর থেকে সম্পূর্ণরূপে বিচ্ছিন্ন করা হয়েছে। এই বিচ্ছিন্নতা স্পষ্ট করার জন্য, বিক্রেতা API স্তরের ফর্ম্যাটটি YYYYMM (বছর এবং মাস) হিসাবে ফর্ম্যাট করা একটি তারিখ এবং SDK স্তরটি একটি পূর্ণসংখ্যা।
অ্যান্ড্রয়েড ১৪-কিউপিআর৩ এবং পরবর্তী সংস্করণগুলিতে বিক্রেতা এপিআই স্তরের সাথে সম্পর্কিত নিম্নলিখিত সিস্টেম বৈশিষ্ট্য রয়েছে:
সিস্টেম প্রপার্টি | বিন্যাস | বিবরণ | প্রাথমিক সেটিং |
---|---|---|---|
ro.board.api_level | ইয়াইইইম | একটি চিপসেটের সফ্টওয়্যার যে ভেন্ডর API লেভেল সমর্থন করে। এই বৈশিষ্ট্যটি সমস্ত চিপসেটের জন্য সেট করা আছে। | এটি বিল্ড সিস্টেম দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয়। |
ro.board.first_api_level | ইয়াইইইম | একটি চিপসেটের সফ্টওয়্যারটি প্রথমে যে ভেন্ডর API লেভেলের সাথে প্রকাশ করা হয়েছিল। এই বৈশিষ্ট্যটি শুধুমাত্র চিপসেটের একটি ফাংশন এবং যদি SoC চিপসেটটি ভেন্ডর ফ্রিজের জন্য যোগ্য হয় তবে SoC বিক্রেতারা এটি সেট করে। প্রাথমিক সেটিংয়ের পরে, এই বৈশিষ্ট্যটিকে চূড়ান্ত হিসাবে বিবেচনা করা উচিত এবং এটি পরিবর্তন করা উচিত নয়। যদিও দৃঢ়ভাবে নিরুৎসাহিত করা হয়েছে, বিরল, ব্যতিক্রমী ক্ষেত্রে একটি নতুন ভেন্ডর ফ্রিজ যোগ্যতা সহ একটি আপডেট অনুমোদিত হতে পারে। | SoC বিক্রেতারা BOARD_SHIPPING_API_LEVEL ব্যবহার করে এই সেটিংটি সেট করে। |
ro.product.first_api_level | পূর্ণসংখ্যা | ডিভাইসটি প্রাথমিকভাবে যে SDK API লেভেল দিয়ে চালু করা হয়েছে। | এই বৈশিষ্ট্যটি OEM দ্বারা সেট করা হয় এবং তারপর কখনও আপডেট করা হয় না, এমনকি OS আপগ্রেড করার পরেও। |
ro.vendor.api_level | ইয়াইইইম | ro.product.first_api_level এর সাথে সম্পর্কিত ভেন্ডর API লেভেল। আমরা ro.vendor.api_level ro.board.api_level এর মান নির্ধারণ করি যখন ro.board.api_level ro.product.first_api_level এর ভেন্ডর API লেভেলের চেয়ে কম হয়, শুধুমাত্র তখনই যদি SoC চিপসেট ভেন্ডর ফ্রিজের জন্য যোগ্য হয়। | এই টেবিলের পরে বর্ণিত। |
ro.board.api_frozen | বুলিয়ান | ro.board.api_level যে ভেন্ডর API লেভেল উপস্থাপন করে তা চূড়ান্ত করা হলে এই প্রপার্টিটি true তে সেট করা হয়। | যদি এই বৈশিষ্ট্যটি সেট না করা থাকে, তাহলে এটি ডিফল্টভাবে false তে সেট করা হবে। |
ro.llndk.api_level | ইয়াইইইম | সিস্টেম পার্টিশনের বর্তমান LLNDK যে YYYYMM ফর্ম্যাটের ভেন্ডর API লেভেল প্রদান করে। LLNDK ব্যাকওয়ার্ড সামঞ্জস্যপূর্ণ, তাই এই API লেভেলের চেয়ে কম বা সমান যেকোনো ভেন্ডর ইমেজ এই সিস্টেম ইমেজ দিয়ে ফ্ল্যাশ করা যেতে পারে। | এই বৈশিষ্ট্যটি সিস্টেম পার্টিশনে সেট করা আছে। |
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 সালে প্রধান Android রিলিজের SDK API স্তর, 202404
প্রদান করে, যা বর্তমান বিক্রেতা API স্তর সেট করার সময় Android 14-QPR3 এর জন্য মোটামুটি তারিখ।
ভেন্ডর এপিআই লেভেল নির্ধারণ করুন (অ্যান্ড্রয়েড ১৩)
ভেন্ডর এপিআই লেভেলটি SDK এপিআই লেভেল অনুসরণ করে, যা অ্যাপ-ওএস ইন্টারফেসের জন্য এবং বছরে একবার আপডেট করা হয় যখন নতুন অ্যান্ড্রয়েড প্ল্যাটফর্ম AOSP-তে প্রকাশিত হয়।
অ্যান্ড্রয়েড ১৩-তে ভেন্ডর এপিআই স্তরের সাথে সম্পর্কিত নিম্নলিখিত সিস্টেম বৈশিষ্ট্য রয়েছে:
সিস্টেম প্রপার্টি | বিন্যাস | বিবরণ | প্রাথমিক সেটিং |
---|---|---|---|
ro.board.first_api_level | পূর্ণসংখ্যা | চিপসেটের সফটওয়্যারটি প্রথমে যে ভেন্ডর এপিআই লেভেল দিয়ে প্রকাশ করা হয়েছিল। এটি শুধুমাত্র চিপসেটের একটি ফাংশন, এবং এটি SoC বিক্রেতা বা OEM দ্বারা পরিবর্তন করা যাবে না। এই বৈশিষ্ট্যটি শুধুমাত্র সেই চিপসেটগুলির জন্য সেট করা হয়েছে যা ভেন্ডর ফ্রিজের জন্য যোগ্য। | device.mk ফাইলে BOARD_SHIPPING_API_LEVEL সেট করে মান নির্ধারণ করা হয়। |
ro.board.api_level | পূর্ণসংখ্যা | একটি চিপসেটের সফ্টওয়্যার যে ভেন্ডর API লেভেল সমর্থন করে। এই বৈশিষ্ট্যটি শুধুমাত্র সেইসব চিপসেটের জন্য সেট করা হয় যেগুলো ভেন্ডর ফ্রিজের জন্য যোগ্য। | প্রাথমিকভাবে, এই বৈশিষ্ট্যের মান বিল্ড সিস্টেম দ্বারা ro.board.first_api_level এর মতো একই মানের উপর সেট করা হয়, তবে বিক্রেতা পার্টিশন আপগ্রেড করা হলে এটি আপডেট করা যেতে পারে। |
ro.product.first_api_level | পূর্ণসংখ্যা | ডিভাইসটি প্রাথমিকভাবে যে SDK API লেভেল দিয়ে চালু করা হয়েছে। | এই বৈশিষ্ট্যটি OEM দ্বারা সেট করা হয় এবং তারপর কখনও আপডেট করা হয় না, এমনকি OS আপগ্রেড করার পরেও। |
ro.vendor.api_level | পূর্ণসংখ্যা | পূর্ববর্তী টেবিলে বিক্রেতা API স্তরের বর্ণনার মতোই। | |
ro.vndk.version | পূর্ণসংখ্যা | VNDK এর যে সংস্করণের বিপরীতে বিক্রেতা পার্টিশনটি তৈরি করা হয়েছে। | এই বৈশিষ্ট্যটি বিক্রেতা পার্টিশনে সেট করা আছে। |
ro.vendor.build.version.sdk | পূর্ণসংখ্যা | যে সোর্স ট্রিতে ভেন্ডর পার্টিশনটি তৈরি করা হয়েছিল, তার SDK API লেভেল। |