ভিএনডিকে এক্সটেনশনস

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

ড্রপ-ইন প্রতিস্থাপন

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

  • এওএসপি ফাংশন অবশ্যই সরানো হবে না।
  • কাঠামোগুলি অবশ্যই তাদের ব্যবহারকারীর সামনে উন্মুক্ত হলে কাঠামোগুলি পরিবর্তন করা উচিত নয়।
  • ফাংশনের প্রাক-শর্ত অবশ্যই শক্তিশালী করা উচিত নয়।
  • কার্যাদি অবশ্যই সমতুল্য কার্যকারিতা সরবরাহ করে।
  • কার্য-পরবর্তী অবস্থার দুর্বল হওয়া উচিত নয়।

বর্ধিত মডিউল শ্রেণিবদ্ধকরণ

মডিউলগুলি যে কার্যকরীতাগুলি তাদের সংজ্ঞায়িত করে এবং ব্যবহার করে তা শ্রেণিবদ্ধ করুন।

দ্রষ্টব্য : এখানে API / ABI এর পরিবর্তে কার্যকারিতা ব্যবহৃত হয় কারণ কোনও API / ABI পরিবর্তন না করে কার্যকারিতা যুক্ত করা সম্ভব।

মডিউলে সংজ্ঞায়িত কার্যকারিতার উপর নির্ভর করে মডিউলগুলিকে ডিএ-মডিউল এবং ডিএক্স-মডিউল হিসাবে শ্রেণীবদ্ধ করা যেতে পারে:

  • কেবলমাত্র এওএসপি মডিউলগুলি সংজ্ঞায়িত করে (ডিএ-মডিউল) নতুন কার্যকারিতা সংজ্ঞায়িত করে না যা এওএসপি অংশে ছিল না।
    • উদাহরণ ১. একটি অক্ষত অবরুদ্ধ এওএসপি লাইব্রেরি একটি ডিএ-মডিউল।
    • উদাহরণ ২. যদি কোনও বিক্রেতা libcrypto.so নির্দেশাবলী (নতুন ফাংশন যোগ না করে) এর সাথে libcrypto.so ফাংশনগুলি পুনরায় libcrypto.so তবে পরিবর্তিত libcrypto.so একটি ডিএ-মডিউল হবে।
  • সংজ্ঞায়িত-এক্সটেনশন মডিউলগুলি (ডিএক্স-মডিউল) হয় নতুন কার্যকারিতা সংজ্ঞায়িত করে বা একটি এওএসপি সহকর্মী নেই।
    • উদাহরণ ১. যদি কোনও বিক্রেতা কোনও অভ্যন্তরীণ ডেটা অ্যাক্সেস করতে libjpeg.so কোনও সহায়ক ফাংশন যোগ করে, তবে পরিবর্তিত libjpeg.so একটি DX-Lib হবে এবং নতুন যুক্ত ফাংশনটি গ্রন্থাগারের বর্ধিত অংশ হবে।
    • উদাহরণ ২. যদি কোনও বিক্রেতা libfoo.so নামে একটি অ-এওএসপি লাইব্রেরি সংজ্ঞায়িত করে, তবে libfoo.so একটি DX-Lib হবে।

মডিউল দ্বারা ব্যবহৃত কার্যকারিতার উপর নির্ভর করে মডিউলগুলি ইউএ-মডিউল এবং ইউএক্স- মডিউলগুলিতে শ্রেণিবদ্ধ করা যেতে পারে।

  • কেবল-এওএসপি মডিউলগুলি (ইউএ-মডিউল) কেবল তাদের বাস্তবায়নে এওএসপি কার্যকারিতা ব্যবহার করে। তারা কোনও অ-এওএসপি এক্সটেনশনের উপর নির্ভর করে না।
    • উদাহরণ 1. একটি অক্ষত অজস্র এওএসপি লাইব্রেরি একটি ইউএ-মডিউল।
    • উদাহরণ ২. যদি কোনও পরিবর্তিত ভাগ করা লাইব্রেরি libjpeg.so কেবলমাত্র অন্যান্য এওএসপি এপিআই-র উপর নির্ভর করে, তবে এটি ইউএ-মডিউল হবে libjpeg.so
  • ইউজিং-এক্সটেনশন মডিউলগুলি (ইউএক্স-মডিউল) তাদের বাস্তবায়নে কিছু অ-এওএসপি কার্যকারিতার উপর নির্ভর করে।
    • উদাহরণ 1. একটি পরিবর্তিত তাহলে libjpeg.so অন্য অ AOSP নামে গ্রন্থাগার উপর নির্ভর libjpeg_turbo2.so , তারপর মডিফাই libjpeg.so একটি ইউএক্স-মডিউল হবে।
    • উদাহরণ 2. একটি বিক্রেতা তাদের পরিবর্তিত করার জন্য একটি নতুন ফাংশন যোগ করা যদি libexif.so এবং তাদের পরিবর্তিত libjpeg.so থেকে নতুন যোগ ফাংশন ব্যবহার libexif.so , তারপর তাদের পরিবর্তিত libjpeg.so একটি ইউএক্স-মডিউল হবে।

সংজ্ঞা এবং ব্যবহারগুলি একে অপরের থেকে স্বতন্ত্র:

ব্যবহৃত কার্যকারিতা
কেবল এওএসপি (ইউএ) বর্ধিত (ইউএক্স)
সংজ্ঞায়িত কার্যকারিতা কেবল এওএসপি (ডিএ) ডিএইউএ DAUX
বর্ধিত (ডিএক্স) ডিএক্সইউএ DXUX

VNDK সম্প্রসারণ প্রক্রিয়া

বর্ধিত মডিউলগুলি যা বর্ধিত কার্যকারিতার উপর নির্ভর করে সেগুলি কাজ করবে না কারণ একই নামের এওএসপি লাইব্রেরিতে বর্ধিত কার্যকারিতা নেই। যদি বিক্রেতার মডিউলগুলি প্রত্যক্ষ বা অপ্রত্যক্ষভাবে প্রসারিত ক্রিয়াকলাপগুলির উপর নির্ভর করে তবে বিক্রেতাদের DAUX, DXUA এবং DXUX ভাগ করা লাইব্রেরিগুলি বিক্রেতার পার্টিশনে অনুলিপি করা উচিত (বিক্রেতার প্রক্রিয়া সর্বদা বিক্রেতার পার্টিশনে ভাগ করা লাইব্রেরিগুলি সন্ধান করে) তবে, এলএল-এনডিকে পাঠাগারগুলি অবশ্যই অনুলিপি করা উচিত নয়, সুতরাং বিক্রেতাকারী মডিউলগুলি অবশ্যই পরিবর্তিত এলএল-এনডিকে লাইব্রেরি দ্বারা সংজ্ঞায়িত বর্ধিত ক্রিয়াকলাপগুলির উপর নির্ভর করবে না।

জেনেরিক সিস্টেম ইমেজ (জিএসআই) দ্বারা সিস্টেম পার্টিশনটি ওভাররাইট করা হলে সংশ্লিষ্ট এওএসপি লাইব্রেরি একই কার্যকারিতা সরবরাহ করতে পারে এবং বিক্রেতার মডিউলগুলি কাজ চালিয়ে যেতে পারলে ডিএইউএ ভাগ করা লাইব্রেরিগুলি সিস্টেম পার্টিশনে থাকতে পারে।

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