ইনক্রিমেন্টাল ফাইল সিস্টেম

অ্যান্ড্রয়েড ১১-এ প্রবর্তিত ইনক্রিমেন্টাল ফাইল সিস্টেম (IncFS) কার্নেল মডিউল অ্যান্ড্রয়েড অপারেটিং সিস্টেমকে অ্যান্ড্রয়েড ডিবাগ ব্রিজ (ADB) এর মাধ্যমে স্ট্রিম করা APK গ্রহণ করতে সক্ষম করে।

এই স্বয়ংসম্পূর্ণ কার্নেল মডিউলটি একটি নতুন ভার্চুয়াল ফাইল সিস্টেম তৈরি করে যা বিদ্যমান অ্যান্ড্রয়েড ফাইল সিস্টেমের উপরে থাকে। এটি ফ্রেমওয়ার্ক এবং SDK-তে পরিবর্তনের পরিপূরক, যা অ্যাপ এবং গেম ডেভেলপারদের ADB-এর মাধ্যমে Android 11 বা তার উচ্চতর ভার্সনে চলমান ডিভাইসে বৃহৎ APK স্থাপন করতে সক্ষম করে।

কার্নেল পরিবর্তনের ফলে একটি নতুন APK সিগনেচার স্কিম v4 ফর্ম্যাট সক্ষম হয় এবং অ্যান্ড্রয়েড প্যাকেজ ম্যানেজারে অ্যান্ড্রয়েড ফ্রেমওয়ার্ক পরিবর্তন, নতুন সিস্টেম পরিষেবা এবং ADB-তে পরিবর্তন সমর্থন করে।

বাস্তবায়ন

IncFS বাস্তবায়নের জন্য, OEM এবং SoC নির্মাতাদের তাদের অ্যান্ড্রয়েড ডিভাইস বিল্ডে একটি নতুন কার্নেল ড্রাইভার যুক্ত করতে হবে।

শুধুমাত্র অ্যান্ড্রয়েড ১১-এর জন্য , যদি কার্নেল ড্রাইভারটি মডিউল হিসেবে তৈরি করা হয় তবে এটি চাহিদা অনুযায়ী লোড করা হয়। যদি ADB ইনক্রিমেন্টাল ইনস্টলেশনের মাধ্যমে কোনও অ্যাপ ইনস্টল না করা থাকে, তাহলে ডিভাইসটি কার্নেল ড্রাইভার লোড করে না।

অন্যথায়, যখন এটি কার্নেল চিত্রের অংশ হিসেবে তৈরি হয়, তখন ড্রাইভারটি সর্বদা লোড করা থাকে । এই বাস্তবায়নটি Android 12 এবং উচ্চতর সংস্করণের জন্য বৈধ এবং Android 11 এর সাথে ব্যবহার করা যেতে পারে । কার্নেল ড্রাইভারকে Android 12 এ আপগ্রেড করার বিষয়ে তথ্যের জন্য, Kernel ড্রাইভার আপগ্রেড দেখুন।

কার্নেল ড্রাইভার হল একটি বৃহত্তর সিস্টেমের অংশ যা স্ট্রিম করা APK ইনস্টলেশন সক্ষম করে। OEM এবং বিক্রেতাদের নমুনা বাস্তবায়নে প্রদত্ত সঠিক IncFS কোড ব্যবহার করার প্রয়োজন নেই। তবে, ডিভাইস জুড়ে একটি সামঞ্জস্যপূর্ণ অভিজ্ঞতা নিশ্চিত করার জন্য, আপনাকে নিশ্চিত করতে হবে যে API বাস্তবায়নে একটি ফাইল সিস্টেম রয়েছে যার ফাইল-পড়া কার্যকারিতা এবং ডিরেক্টরি পঠন-লেখা কার্যকারিতা রয়েছে যা ইনক্রিমেন্টাল FS ডকুমেন্টেশনের জন্য ইউজারস্পেস ইন্টারফেসে সংজ্ঞায়িত করা হয়েছে।

অতিরিক্তভাবে, বাস্তবায়নগুলিতে মাউন্ট বিকল্প এবং বিশেষ ফাইল থাকতে হবে যা কার্যকরীভাবে IncFS নমুনা বাস্তবায়নের সাথে মেলে।

বাস্তবায়নের জন্য প্রয়োজনীয় পরিবর্তনগুলি নিম্নলিখিত তালিকাভুক্ত করা হয়েছে:

  1. কার্নেল তৈরির জন্য ডেভেলপমেন্ট মেশিন সেট আপ করুন
  2. common-android-mainline শাখা থেকে সাধারণ কার্নেলটিকে লক্ষ্য করুন।
    repo init -u https://android.googlesource.com/kernel/manifest -b common-android-mainline
    repo sync
  3. IncFS-এর জন্য প্রয়োজনীয় নিম্নলিখিত পরিবর্তনগুলি শাখা চেকআউটে আছে কিনা তা যাচাই করুন:
  4. defconfig ফাইলের নীচে CONFIG_INCREMENTAL_FS=y অথবা শুধুমাত্র Android 11 এর জন্য CONFIG_INCREMENTAL_FS=m যোগ করুন। উদাহরণ দেখতে, নীচের যেকোনো একটি লিঙ্কে ক্লিক করুন:
  5. কার্নেল তৈরি করুন
  6. অ্যান্ড্রয়েড ডিভাইস ইমেজ বিল্ডে কার্নেলটি এম্বেড করুন।
  7. আপনার টার্গেট অ্যান্ড্রয়েড ডিভাইসের জন্য, আপনার device.mk ফাইলে নিম্নলিখিত বিক্রেতা-নির্দিষ্ট সিস্টেম-প্রপার্টি লাইনগুলির মধ্যে একটি যুক্ত করুন ( Android 12 এবং উচ্চতর সংস্করণের সাথে চালু হওয়া ডিভাইসগুলিতে ঐচ্ছিক ):
  8. যখন আপনি CONFIG_INCREMENTAL_FS=y ব্যবহার করছেন, তখন ফাইলটিতে নিম্নলিখিতগুলির একটি যুক্ত করুন:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=yes

    যখন আপনি CONFIG_INCREMENTAL_FS=m ব্যবহার করছেন ( শুধুমাত্র Android 11 এর জন্য), তখন ফাইলটিতে নিম্নলিখিতগুলির একটি যুক্ত করুন:

    • PRODUCT_PROPERTY_OVERRIDES += \
    • ro.incremental.enable=module:/vendor/lib/modules/incrementalfs.ko
  9. অ্যান্ড্রয়েড এমুলেটর এবং Pixel 4 এর জন্য device.mk ফাইলের উদাহরণ দেখুন।
  10. শুধুমাত্র Android 11 এর জন্য : আপনি যদি CONFIG_INCREMENTAL_FS=m ব্যবহার করেন, তাহলে SE Linux Rules যোগ করুন।
  11. নিম্নলিখিত বিষয়বস্তু সহ আপনার ডিভাইস /system/sepolicy/vendor ফোল্ডারে একটি vold.te ফাইল তৈরি করুন এবং যোগ করুন:

    • vold.te

    এটিকে ক্রমবর্ধমান ফাইল সিস্টেম ড্রাইভার লোড করার অনুমতি দিন:

    • allow vold self:capability sys_module;
    • allow vold vendor_incremental_module:file r_file_perms;
    • allow vold vendor_incremental_module:system module_load;

    আপনার /system/sepolicy/vendor ফোল্ডারে থাকা বিদ্যমান file.te ফাইলে নিম্নলিখিত SE Linux নিয়মগুলি যুক্ত করুন:

    • file.te ফাইল - উদাহরণস্বরূপ, এই file.te ফাইলটি দেখুন।)
    • বর্ধিত ফাইল সিস্টেম ড্রাইভার
    • type vendor_incremental_module, vendor_file_type, file_type;

    আপনার /system/sepolicy/vendor ফোল্ডারে থাকা বিদ্যমান file_contents ফাইলে নিম্নলিখিত SE Linux নিয়মগুলি যুক্ত করুন:

কার্নেল ড্রাইভার আপগ্রেড

অ্যান্ড্রয়েড ১২-তে আপগ্রেড করা ডিভাইসগুলিতে IncFS ড্রাইভারের একটি পুরানো সংস্করণ থাকতে পারে। এই ডিভাইসগুলির জন্য, AOSP আপনাকে নিম্নলিখিত কারণগুলির জন্য IncFS ড্রাইভারকে বর্তমান সংস্করণে (এই ক্ষেত্রে v2) আপডেট করার পরামর্শ দেয়:

  • অ্যান্ড্রয়েড ১১ এর সাথে প্রকাশিত সংস্করণটি হল IncFS এর প্রাথমিক বাস্তবায়ন, যা শুধুমাত্র ADB ইনস্টলেশন সহায়তার জন্য লক্ষ্যবস্তু।
  • অ্যান্ড্রয়েড ১২ প্লে গেমের স্ট্রিমিং ইনস্টলেশনের জন্য IncFS ড্রাইভার ব্যবহার করে, যার জন্য আরও ভালো ব্যবহারকারীর অভিজ্ঞতার জন্য IncFS v2 এর নতুন বৈশিষ্ট্য এবং অপ্টিমাইজেশন প্রয়োজন।
  • V1 গেম স্ট্রিমিং সমর্থন করে, কিন্তু পারফরম্যান্স জরিমানা এবং v2 এর তুলনায় বেশি ব্যাটারি, CPU এবং RAM ব্যবহারের সাথে এটি করে।
  • V2 স্ট্রিমিংয়ের জন্য উন্নত UX প্রদান করে, মসৃণ অগ্রগতি অ্যানিমেশন, সুনির্দিষ্ট ডিস্ক-স্পেস ব্যবহারের প্রতিবেদন এবং তৃতীয়-পক্ষের অ্যাপ-স্ট্রিমিং হস্তক্ষেপ প্রতিরোধ করে।

আপনার কার্নেলে IncFS ড্রাইভার আপগ্রেড করতে, কার্নেল 4.14 অথবা কার্নেল 4.19 এর জন্য নিম্নলিখিত প্যাচগুলি প্রয়োগ করুন:

অন্যান্য সকল কাস্টম কার্নেল সংস্করণের জন্য অনুগ্রহ করে যেকোনো একটি প্যাচসেট পোর্ট করুন। এগুলি শুধুমাত্র fs/incfs ডিরেক্টরিকে প্রভাবিত করে এবং বিদ্যমান v1 কোডে পরিষ্কারভাবে প্রয়োগ করে।

মূল কিন্তু এখন আপগ্রেড করা Android 11-এর মতোই IncFS ড্রাইভার ব্যবহার চালিয়ে যান, হয় কার্নেল ইমেজের অন্তর্নির্মিত অংশ হিসেবে, অথবা একটি পৃথক মডিউল হিসেবে। সিস্টেম বোর্ড বা সিস্টেম প্রপার্টি কনফিগারেশন পরিবর্তন করবেন না।

GKI কার্নেল ইমেজ ব্যবহারকারী নতুন ডিভাইসগুলি স্বয়ংক্রিয়ভাবে সর্বশেষ (v2) IncFS ড্রাইভার পায়, যা কার্নেল ইমেজের অংশ হিসেবে কনফিগার করা হয়। এর জন্য অতিরিক্ত পদক্ষেপের প্রয়োজন হয় না।

লোডেবল মডিউল কনফিগারেশনটি অ্যান্ড্রয়েড ১২-তে বন্ধ করা হয়েছে এবং নতুন ডিভাইসের জন্য এটি সমর্থিত নয়। এটি শুধুমাত্র আপগ্রেডের জন্য, অথবা মূল কার্নেলে মডিউল হিসেবে তৈরি থাকা অবস্থায় ভেন্ডর ইমেজ ফ্রিজের জন্য অনুমোদিত।

রেফারেন্স বাস্তবায়ন

এই বাস্তবায়নটি হয় একটি কার্নেল চিত্রের অংশ হিসেবে বিবেচনা করা যেতে পারে, অথবা ( শুধুমাত্র Android 11 এর জন্য ) একটি লোডযোগ্য মডিউল হিসেবে বিবেচনা করা যেতে পারে।

লোডযোগ্য মডিউল (পিক্সেল ৪ ডিভাইস) অ্যান্ড্রয়েড এমুলেটর (কার্নেল চিত্রের অংশ হিসেবে)

যাচাইকরণ এবং পরীক্ষা

ফিচার ইউনিট টেস্ট, সিটিএস এবং জিটিএস ব্যবহার করে বাস্তবায়ন যাচাই করুন।

সিটিএস

CtsIncrementalInstallHostTestCases ব্যবহার করুন।

জিটিএস

atest GtsIncrementalInstallTestCases :

/gts-tests/tests/packageinstaller/incremental/src/com/google/android/packageinstaller/incremental/gts/IncrementalInstallerTest.java

IncFS পরীক্ষা করুন

  1. একটি উন্নয়ন পরিবেশ স্থাপন করুন
  2. বাস্তবায়ন বিভাগে বর্ণিত বাস্তবায়নের কাজগুলি সম্পূর্ণ করুন।
  3. নিম্নলিখিত ম্যানুয়াল পরীক্ষাগুলি চালান:
    mmma system/incremental_delivery/incfs/tests
    atest libincfs-test
    atest IncrementalServiceTest
    atest PackageManagerShellCommandTest
    PackageManagerShellCommandIncrementalTest

অ্যান্ড্রয়েড এসডিকে (এডিবি এবং এপিকসাইনার) দিয়ে ইনকএফএস পরীক্ষা করুন

  • একটি উন্নয়ন পরিবেশ স্থাপন করুন
  • বাস্তবায়ন বিভাগে বর্ণিত বাস্তবায়নের কাজগুলি সম্পূর্ণ করুন।
  • একটি টার্গেট ফিজিক্যাল ডিভাইস বা এমুলেটরে বিল্ডটি ফ্ল্যাশ করুন।
  • একটি বিদ্যমান APK তৈরি করুন বা পান।
  • একটি ডিবাগ সাইনিং কী তৈরি করুন।
  • build-tools ফোল্ডার থেকে v4 স্বাক্ষর ফর্ম্যাট দিয়ে APK সাইন করুন
    ./apksigner sign --ks debug.keystore game.apk
  • platform-tools ফোল্ডার থেকে ডিভাইসে APK ইনস্টল করুন
    ./adb install game.apk
ইনস্টলেশনের উদাহরণ
চিত্র ১ : ইনস্টলের উদাহরণ

এই পরীক্ষাগুলি সনাক্ত করুন