বিক্রেতার স্ন্যাপশট তৈরি করুন

Android 11 VNDK স্ন্যাপশট বিল্ড আর্টিফ্যাক্ট এবং বিক্রেতার স্ন্যাপশট সমর্থন করে, যা আপনি উৎস ট্রিতে Android সংস্করণ নির্বিশেষে vendor.img তৈরি করতে ব্যবহার করতে পারেন। এটি ছবিগুলির মিশ্র সংস্করণগুলিকে সক্ষম করে, যেমন একটি পুরানো বিক্রেতা এবং একটি নতুন সিস্টেম চিত্র৷

মিশ্র চিত্র সংস্করণ নিম্নলিখিত জন্য সমর্থিত নয়.

  • Android.mk. যেহেতু Soong বিক্রেতার স্ন্যাপশট তৈরি করে, তাই Android.mk এ সংজ্ঞায়িত মডিউলগুলি একটি বিক্রেতা স্ন্যাপশট হিসাবে ক্যাপচার করা হয় না ( Android.mk এ SoC-মালিকানা মডিউলগুলিও কাজ করার নিশ্চয়তা দেয় না)।

  • স্যানিটাইজার। বিক্রেতা এবং VNDK স্ন্যাপশটগুলি স্যানিটাইজার সমর্থন করে না কারণ স্যানিটাইজার ভেরিয়েন্টগুলি আলাদাভাবে তৈরি করা দরকার৷

বিক্রেতা স্ন্যাপশট সম্পর্কে

একটি বিক্রেতার স্ন্যাপশট হল একটি OEM-মালিকানাধীন স্ন্যাপশট৷ এটি প্রি-বিল্ট সি++ মডিউলের একটি সেট যা /vendor -এ ইনস্টল করা হয়েছে কিন্তু AOSP-তে রক্ষণাবেক্ষণ করা হয়েছে। পূর্ববর্তী অ্যান্ড্রয়েড সংস্করণের একটি বিক্রেতার স্ন্যাপশট ক্যাপচার না করে, একটি নতুন অ্যান্ড্রয়েড সংস্করণে আপগ্রেড করা বিক্রেতা পার্টিশন ভেঙে যেতে পারে কারণ বিক্রেতা স্ন্যাপশট মডিউলগুলি API বা ABI সামঞ্জস্য ছাড়াই সরানো বা পরিবর্তন করা যেতে পারে।

একটি বিক্রেতার স্ন্যাপশটে AOSP-তে নিম্নলিখিত মডিউল রয়েছে।

  • vendor: true বা vendor_available: true
  • vendor_available: true
  • vendor: true বা vendor_available: true

নিম্নলিখিত ডিরেক্টরিগুলির অধীনে মডিউলগুলিকে SoC-মালিকানাধীন হার্ডওয়্যার কোড হিসাবে বিবেচনা করা হয় এবং উপেক্ষা করা হয়।

  • device/
  • vendor/
  • hardware/ , ছাড়া
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

SoC-মালিকানাধীন হার্ডওয়্যার কোড অন্যান্য ডিরেক্টরিতেও থাকতে পারে। এই সময়ে, বিক্রেতার স্ন্যাপশট এই ধরনের কনফিগারেশন সমর্থন করে না।

বিক্রেতার স্ন্যাপশট তৈরি করুন

নিম্নলিখিত কমান্ডগুলি ব্যবহার করে একটি বিক্রেতার স্ন্যাপশট তৈরি করুন।

. build/envsetup.sh
lunch target
m dist vendor-snapshot

এই কমান্ডগুলি $DIST_DIR এ একটি vendor-$(TARGET_DEVICE).zip ফাইল তৈরি করে। নিম্নলিখিত উদাহরণটি একটি বিক্রেতা স্ন্যাপশট জিপ ফাইল দেখায়:

vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│   ├── binary         -> binary files, *.json files
│   ├── header         -> *.json files
│   ├── object         -> *.o files, *.json files
│   ├── shared         -> *.so files, *.json files
│   └── static         -> *.a files, *.json files
├── arch-arm-armv8-a   -> (arch-arm64-armv8-a)
├── configs            -> *.rc files, *.xml files
├── include            -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES       -> license txt files
  • JSON ফাইলগুলিতে মডিউল নাম, রপ্তানি করা ডিরেক্টরি, init_rc ফাইল এবং vintf_fragments ফাইলের মতো পতাকা থাকে।
  • configs ডিরেক্টরিতে ফ্ল্যাগ init_rc এবং vintf_fragments থেকে .rc এবং .xml ফাইল রয়েছে।

বিক্রেতা স্ন্যাপশট ইনস্টল করুন

একটি ভেন্ডর স্ন্যাপশট ইনস্টল করতে, গন্তব্য ডিরেক্টরিতে নেভিগেট করুন এবং নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন।

python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
    vendor/vendor name/vendor_snapshot VER

এই কমান্ড /vendor/ vendor name /vendor_snapshot/v VER /$(TARGET_ARCH)/Android.bp তৈরি করে। নিম্নলিখিত উদাহরণটি একটি বিক্রেতার স্ন্যাপশটের ডিরেক্টরি কাঠামো দেখায়:

vendor/vendor name/vendor_snapshot/
├── v30
│   ├── arm64
│   │   ├── arch-arm64-armv8-a
│   │   │   ├── binary         -> (prebuilt libs)
│   │   │   ├── object         -> (prebuilt libs)
│   │   │   ├── shared         -> (prebuilt libs)
│   │   │   └── static         -> (prebuilt libs)
│   │   ├── arch-arm-armv8-a   -> (same as above)
│   │   ├── configs            -> (config files)
│   │   ├── include            -> (exported header files)
│   │   ├── NOTICE_FILES       -> (license files)
│   │   └── Android.bp         -> (snapshot modules)
│   ├── arm                    -> (same as above)
│   ├── x86_64                 -> (same as above)
│   └── x86                    -> (same as above)
└── (other vendor versions)    -> (same as above)

বিক্রেতার ছবি তৈরি করুন

VNDK স্ন্যাপশট বিল্ড আর্টিফ্যাক্ট এবং একটি বিক্রেতার স্ন্যাপশট ব্যবহার করে, আপনি সোর্স ট্রিতে অ্যান্ড্রয়েড সংস্করণ নির্বিশেষে vendor.img তৈরি করতে পারেন, এটি ছবির মিশ্র সংস্করণ তৈরি করা সম্ভব করে তোলে। VNDK স্ন্যাপশট এবং বিক্রেতার স্ন্যাপশট উভয়ই ইনস্টল করার পরে, বিক্রেতার সংস্করণে BOARD_VNDK_VERSION সেট করুন৷ যেমন:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

যখন BOARD_VNDK_VERSION current ব্যতীত অন্য একটি মান সেট করা হয়, বিল্ড সিস্টেম:

  • BOARD_VNDK_VERSION এর VNDK স্ন্যাপশট মডিউল এবং বিক্রেতা স্ন্যাপশট মডিউলগুলিকে সক্ষম করে৷ প্রতিটি স্ন্যাপশট মডিউল একই নামের একটি C++ সোর্স মডিউলকে ওভাররাইড করে।
  • ro.vndk.version BOARD_VNDK_VERSION এ সেট করে।
  • system_extBOARD_VNDK_VERSION এর VNDK স্ন্যাপশট মডিউল ইনস্টল করে।