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

Android 11-এ প্রবর্তিত ইনক্রিমেন্টাল ফাইল সিস্টেম (IncFS) কার্নেল মডিউল Android OS-কে Android Debug Bridge (ADB) এর মাধ্যমে স্ট্রিম করা APK গ্রহণ করতে সক্ষম করে।

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

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

বাস্তবায়ন

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

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

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

কার্নেল ড্রাইভার স্ট্রিম করা 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. CONFIG_INCREMENTAL_FS=y অথবা শুধুমাত্র Android 11- এর জন্য, defconfig ফাইলের নীচে CONFIG_INCREMENTAL_FS=m যোগ করুন। একটি উদাহরণ দেখতে, নীচের লিঙ্কগুলির একটিতে ক্লিক করুন:
  5. কার্নেল তৈরি করুন
  6. অ্যান্ড্রয়েড ডিভাইস ইমেজ বিল্ডে কার্নেল এম্বেড করুন।
  7. আপনার টার্গেট অ্যান্ড্রয়েড ডিভাইসের জন্য, আপনার device.mk ফাইলে নিম্নলিখিত বিক্রেতা-নির্দিষ্ট সিস্টেম-প্রপার্টি লাইনগুলির মধ্যে একটি যুক্ত করুন ( অ্যান্ড্রয়েড 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. Android এমুলেটর এবং Pixel 4 এর জন্য device.mk ফাইলের উদাহরণ দেখুন।
  10. শুধুমাত্র Android 11-এর জন্য : আপনি যদি CONFIG_INCREMENTAL_FS=m ব্যবহার করেন, তাহলে SE Linux নিয়ম যোগ করুন।
  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 লিনাক্স নিয়মগুলি যোগ করুন:

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

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

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

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

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

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

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

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

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

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

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

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

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

বৈধতা এবং পরীক্ষা

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

সিটিএস

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

Android SDK (ADB এবং apksigner) দিয়ে কিভাবে IncFS পরীক্ষা করবেন

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

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