একটি জেনেরিক সিস্টেম ইমেজ (GSI) হল Android ডিভাইসের জন্য সামঞ্জস্যপূর্ণ কনফিগারেশন সহ একটি সিস্টেম চিত্র। এটিকে অপরিবর্তিত অ্যান্ড্রয়েড ওপেন সোর্স প্রজেক্ট (AOSP) কোড সহ একটি বিশুদ্ধ অ্যান্ড্রয়েড বাস্তবায়ন হিসাবে বিবেচনা করা হয় যা Android 9 বা তার বেশি সংস্করণে চালিত যেকোনো Android ডিভাইস সফলভাবে চলতে পারে।
জিএসআইগুলি ভিটিএস এবং সিটিএস-অন-জিএসআই পরীক্ষা চালানোর জন্য ব্যবহৃত হয়। অ্যান্ড্রয়েড ডিভাইসের সিস্টেম ইমেজ একটি GSI দিয়ে প্রতিস্থাপিত হয় তারপর ভেন্ডর টেস্ট স্যুট (VTS) এবং Compatibility Test Suite (CTS) দিয়ে পরীক্ষা করা হয় যাতে ডিভাইসটি অ্যান্ড্রয়েডের সর্বশেষ সংস্করণের সাথে সঠিকভাবে ভেন্ডর ইন্টারফেস প্রয়োগ করে।
GSI-এর সাথে শুরু করার জন্য, GSI কনফিগারেশন (এবং অনুমোদিত ভিন্নতা) এবং প্রকারের বিশদ বিবরণের জন্য নিম্নলিখিত বিভাগগুলি পর্যালোচনা করুন। আপনি যখন একটি GSI ব্যবহার করার জন্য প্রস্তুত হন, তখন আপনার ডিভাইসের লক্ষ্যের জন্য GSI ডাউনলোড করুন এবং তৈরি করুন , তারপর GSIটিকে একটি Android ডিভাইসে ফ্ল্যাশ করুন ৷
GSI কনফিগারেশন এবং ভিন্নতা
বর্তমান অ্যান্ড্রয়েড জিএসআই-এর নিম্নলিখিত কনফিগারেশন রয়েছে:
- ট্রেবল। GSI-এ AIDL/HIDL-ভিত্তিক স্থাপত্য পরিবর্তনের জন্য পূর্ণ সমর্থন অন্তর্ভুক্ত রয়েছে (এছাড়াও Treble নামে পরিচিত), এআইডিএল ইন্টারফেস এবং এইচআইডিএল ইন্টারফেসের সমর্থন সহ। AIDL/HIDL ভেন্ডর ইন্টারফেস ব্যবহার করে এমন যেকোনো Android ডিভাইসে আপনি GSI ব্যবহার করতে পারেন। (আরো বিস্তারিত জানার জন্য, স্থাপত্য সম্পদ দেখুন।)
- ফাইল সিস্টেম। GSI ext4 ফাইল সিস্টেম ব্যবহার করে।
বর্তমান অ্যান্ড্রয়েড জিএসআই-তে নিম্নলিখিত প্রধান বৈচিত্রগুলি অন্তর্ভুক্ত রয়েছে:
- সিপিইউ আর্কিটেকচার। বিভিন্ন CPU নির্দেশাবলী (ARM, x86, ইত্যাদি) এবং CPU বিটনেস (32 বিট বা 64 বিট) এর জন্য সমর্থন।
ট্রেবল সম্মতি পরীক্ষার জন্য GSI লক্ষ্য
সম্মতি পরীক্ষার জন্য ব্যবহৃত GSI ডিভাইসটি লঞ্চ করা Android সংস্করণ দ্বারা নির্ধারিত হয়।
ডিভাইসের ধরন | লক্ষ্য তৈরি করুন |
---|---|
Android 15 এর সাথে ডিভাইসগুলি চালু হচ্ছে৷ | gsi_$arch-user (স্বাক্ষরিত) |
Android 14 এর সাথে ডিভাইসগুলি চালু হচ্ছে৷ | gsi_$arch-user (স্বাক্ষরিত) |
Android 13 এর সাথে ডিভাইসগুলি চালু হচ্ছে | gsi_$arch-user (স্বাক্ষরিত) |
Android 12L সহ ডিভাইসগুলি চালু হচ্ছে৷ | gsi_$arch-user (স্বাক্ষরিত) |
Android 12 এর সাথে ডিভাইসগুলি চালু হচ্ছে | gsi_$arch-user (স্বাক্ষরিত) |
অ্যান্ড্রয়েড 11 এর সাথে ডিভাইসগুলি চালু হচ্ছে | gsi_$arch-user (স্বাক্ষরিত) |
সমস্ত জিএসআই অ্যান্ড্রয়েড 12 কোডবেস থেকে তৈরি করা হয়েছে এবং প্রতিটি সিপিইউ আর্কিটেকচারের একটি সংশ্লিষ্ট জিএসআই বাইনারি রয়েছে ( বিল্ডিং জিএসআইতে বিল্ড লক্ষ্যগুলির তালিকা দেখুন)।
অ্যান্ড্রয়েড 12 জিএসআই পরিবর্তন
অ্যান্ড্রয়েড 12 এর সাথে লঞ্চ করা বা আপডেট করা ডিভাইসগুলিকে অবশ্যই সম্মতি পরীক্ষার জন্য Android 12 জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:
- টার্গেটের নাম। কমপ্লায়েন্স পরীক্ষার জন্য GSI টার্গেটের নাম পরিবর্তন করে
gsi_$arch
। টার্গেট নামেরaosp_$arch
সহ GSI Android অ্যাপ ডেভেলপারদের জন্য রাখা হয়েছে। বিক্রেতা ইন্টারফেস পরীক্ষা করার জন্যCTS-on-GSI
পরীক্ষা পরিকল্পনাও হ্রাস করা হয়েছে। - উত্তরাধিকার GSI পর্যায়ক্রমে আউট করা হয়. GSI 12 অ্যান্ড্রয়েড 8.0 বা 8.1 ডিভাইসগুলির সাথে সামঞ্জস্যপূর্ণ সমাধানগুলি সরিয়ে দেয় যেগুলি সম্পূর্ণরূপে ট্রেবলাইজড নয়৷
- ইউজারডবাগ এসইপলিসি। GSI
gsi_$arch
userdebug_plat_sepolicy.cil
রয়েছে। OEM-নির্দিষ্টvendor_boot-debug.img
বাboot-debug.img
ফ্ল্যাশ করার সময়,/system/bin/init
GSIsystem.img
থেকেuserdebug_plat_sepolicy.cil
লোড করবে। বিস্তারিত জানার জন্য ডিবাগ রামডিস্কের সাথে VTS টেস্টিং উল্লেখ করুন।
অ্যান্ড্রয়েড 11 জিএসআই পরিবর্তন
অ্যান্ড্রয়েড 11 এর সাথে লঞ্চ করা বা আপডেট করা ডিভাইসগুলিকে অবশ্যই সম্মতি পরীক্ষার জন্য Android 11 জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:
- system_ext বিষয়বস্তু। অ্যান্ড্রয়েড 11 একটি নতুন পার্টিশন
system_ext
সংজ্ঞায়িত করে। GSI ফোল্ডারsystem/system_ext
অধীনে সিস্টেম এক্সটেনশন বিষয়বস্তু রাখে। - APEXes. GSI তে চ্যাপ্টা এবং সংকুচিত APEXs উভয়ই রয়েছে। কোনটি ব্যবহার করতে হবে তা রান টাইমে ভেন্ডর পার্টিশনে সিস্টেম প্রপার্টি
ro.apex.updatable
দ্বারা নির্ধারিত হয়। বিস্তারিত জানার জন্য APEX আপডেট সমর্থন করার জন্য রেফারেন্স কনফিগারিং সিস্টেম ।
অ্যান্ড্রয়েড 10 জিএসআই পরিবর্তন
অ্যান্ড্রয়েড 10 এর সাথে লঞ্চ করা বা আপডেট করা ডিভাইসগুলিকে অবশ্যই সম্মতি পরীক্ষার জন্য Android 10 জিএসআই ব্যবহার করতে হবে। এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:
- ইউজার বিল্ড। জিএসআই-এ অ্যান্ড্রয়েড 10 থেকে ইউজার বিল্ড রয়েছে। অ্যান্ড্রয়েড 10-এ, ইউজার বিল্ড জিএসআই CTS-অন-GSI/VTS কমপ্লায়েন্স টেস্টিং-এ ব্যবহার করা যেতে পারে। বিশদ বিবরণের জন্য ডিবাগ রামডিস্ক সহ ভিটিএস টেস্টিং উল্লেখ করুন।
- অস্পর্সড ফরম্যাট। লক্ষ্য
aosp_$arch
সহ GSI অস্পর্সড বিন্যাস সহ নির্মিত। প্রয়োজনে আপনি একটি অস্পর্সড জিএসআইকে স্পার্স ফরম্যাটে রূপান্তর করতেimg2simg
ব্যবহার করতে পারেন। - সিস্টেম-হিসেবে-রুট।
aosp_$arch_a
নামের উত্তরাধিকারী GSI বিল্ড টার্গেট পর্যায়ক্রমে শেষ করা হয়েছে। Android 8 বা 8.1 থেকে Android 10-এ ramdisk এবং নন-সিস্টেম-এ-রুট সহ আপগ্রেড করা ডিভাইসগুলির জন্য, লিগ্যাসি GSIaosp_$arch_ab
ব্যবহার করুন। ramdisk-এ আপগ্রেড করাinit
সিস্টেম-এ-রুট লেআউট সহ OEM system.img সমর্থন করে। - বুট যাচাই করুন। GSI ব্যবহার করে আপনাকে শুধুমাত্র ডিভাইসটি আনলক করতে হবে। যাচাই বুট নিষ্ক্রিয় করার প্রয়োজন নেই।
অ্যান্ড্রয়েড 9 জিএসআই পরিবর্তন
অ্যান্ড্রয়েড 9 এর সাথে লঞ্চ করা বা আপডেট হওয়া ডিভাইসগুলি অবশ্যই সম্মতি পরীক্ষার জন্য Android 9 জিএসআই ব্যবহার করবে৷ এর মধ্যে পূর্ববর্তী জিএসআই থেকে নিম্নলিখিত প্রধান পরিবর্তনগুলি অন্তর্ভুক্ত রয়েছে:
- GSI এবং এমুলেটর মার্জ করে। জিএসআইগুলি এমুলেটর পণ্যগুলির সিস্টেম চিত্র থেকে তৈরি করা হয়েছে, উদাহরণস্বরূপ,
aosp_arm64
এবংaosp_x86
। - সিস্টেম-হিসেবে-রুট। অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, যে ডিভাইসগুলি A/B আপডেট সমর্থন করে না সেগুলি
/system
ডিরেক্টরির অধীনে সিস্টেম চিত্রটি মাউন্ট করতে পারে। অ্যান্ড্রয়েড 9 এ, সিস্টেম ইমেজের রুটটি ডিভাইসের রুট হিসাবে মাউন্ট করা হয়। - 64-বিট বাইন্ডার ইন্টারফেস। অ্যান্ড্রয়েড 8.x-এ, 32-বিট জিএসআই 32-বিট বাইন্ডার ইন্টারফেস ব্যবহার করে। অ্যান্ড্রয়েড 9 32-বিট বাইন্ডার ইন্টারফেস সমর্থন করে না, তাই 32-বিট জিএসআই এবং 64-বিট জিএসআই উভয়ই 64-বিট বাইন্ডার ইন্টারফেস ব্যবহার করে।
- VNDK এনফোর্সমেন্ট। Android 8.1 এ, VNDK ঐচ্ছিক ছিল। Android 9 থেকে শুরু করে, VNDK বাধ্যতামূলক, তাই
BOARD_VNDK_VERSION
সেট করতে হবে ৷ - সামঞ্জস্যপূর্ণ সিস্টেম সম্পত্তি. Android 9 একটি সামঞ্জস্যপূর্ণ সিস্টেম সম্পত্তির জন্য অ্যাক্সেস চেক সক্ষম করে (
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
)।
Android 9 Keymaster পরিবর্তন
অ্যান্ড্রয়েডের পূর্ববর্তী সংস্করণগুলিতে, কীমাস্টার 3 বা তার নীচের সংস্করণগুলি প্রয়োগকারী ডিভাইসগুলিকে চলমান সিস্টেম দ্বারা রিপোর্ট করা সংস্করণের তথ্য ( ro.build.version.release
এবং ro.build.version.security_patch
) বুটলোডার দ্বারা রিপোর্ট করা সংস্করণের তথ্যের সাথে মিলেছে কিনা তা যাচাই করতে হবে৷ এই ধরনের তথ্য সাধারণত বুট ইমেজ হেডার থেকে প্রাপ্ত হয়.
অ্যান্ড্রয়েড 9 এবং উচ্চতর সংস্করণে, বিক্রেতাদের একটি GSI বুট করতে সক্ষম করতে এই প্রয়োজনীয়তা পরিবর্তিত হয়েছে৷ বিশেষ করে, কীমাস্টারের যাচাইকরণ করা উচিত নয় কারণ GSI দ্বারা রিপোর্ট করা সংস্করণ তথ্য বিক্রেতার বুটলোডার দ্বারা রিপোর্ট করা সংস্করণ তথ্যের সাথে মেলে না। Keymaster 3 বা তার নিচের ডিভাইসগুলির জন্য, ভেন্ডরদের যাচাইকরণ এড়িয়ে যেতে (বা Keymaster 4 এ আপগ্রেড করতে) কীমাস্টার বাস্তবায়ন পরিবর্তন করতে হবে। কীমাস্টার সম্পর্কে বিশদ বিবরণের জন্য, হার্ডওয়্যার-সমর্থিত কীস্টোর দেখুন।
জিএসআই ডাউনলোড করুন
আপনি ci.android.com এ AOSP কন্টিনিউশন ইন্টিগ্রেশন (CI) ওয়েবসাইট থেকে প্রিবিল্ট জিএসআই ডাউনলোড করতে পারেন। আপনার হার্ডওয়্যার প্ল্যাটফর্মের জন্য GSI প্রকার ডাউনলোডের জন্য অনুপলব্ধ হলে, নির্দিষ্ট লক্ষ্যগুলির জন্য GSI তৈরির বিশদ বিবরণের জন্য নিম্নলিখিত বিভাগটি পড়ুন।
জিএসআই তৈরি করুন
অ্যান্ড্রয়েড 9 দিয়ে শুরু করে, প্রতিটি অ্যান্ড্রয়েড সংস্করণে AOSP-এ DESSERT -gsi
নামে একটি GSI শাখা রয়েছে (উদাহরণস্বরূপ, android12-gsi
হল Android 12-এ GSI শাখা)। GSI শাখাগুলিতে সমস্ত নিরাপত্তা প্যাচ এবং GSI প্যাচ প্রয়োগ করা সহ Android এর সামগ্রী অন্তর্ভুক্ত।
একটি GSI তৈরি করতে, একটি GSI শাখা থেকে ডাউনলোড করে এবং একটি GSI বিল্ড টার্গেট বেছে নিয়ে Android সোর্স ট্রি সেট আপ করুন৷ আপনার ডিভাইসের জন্য সঠিক GSI সংস্করণ নির্ধারণ করতে নিচের বিল্ড টার্গেট টেবিল ব্যবহার করুন। বিল্ড সম্পূর্ণ হওয়ার পরে, GSI হল সিস্টেম ইমেজ (অর্থাৎ system.img
) এবং আউটপুট ফোল্ডার out/target/product/ generic_arm64
এ প্রদর্শিত হয়।
উদাহরণস্বরূপ, GSI শাখা android12-gsi
এ GSI বিল্ড টার্গেট gsi_arm64-userdebug
তৈরি করতে, নিম্নলিখিত কমান্ডগুলি চালান।
$ repo init -u https://android.googlesource.com/platform/manifest -b android12-gsi $ repo sync -cq $ source build/envsetup.sh $ lunch gsi_arm64-userdebug $ make -j4
অ্যান্ড্রয়েড জিএসআই বিল্ড টার্গেট
নিম্নলিখিত GSI বিল্ড টার্গেটগুলি Android 9 বা উচ্চতর সংস্করণে লঞ্চ হওয়া ডিভাইসগুলির জন্য।
জিএসআই নাম | CPU খিলান | বাইন্ডার ইন্টারফেস বিটনেস | সিস্টেম-হিসেবে-রুট | লক্ষ্য তৈরি করুন |
---|---|---|---|---|
gsi_arm | এআরএম | 32 | Y | gsi_arm-user gsi_arm-userdebug |
gsi_arm64 | ARM64 | 64 | Y | gsi_arm64-user gsi_arm64-userdebug |
gsi_x86 | x86 | 32 | Y | gsi_x86-user gsi_x86-userdebug |
gsi_x86_64 | x86-64 | 64 | Y | gsi_x86_64-user gsi_x86_64-userdebug |
GSI ফ্ল্যাশ করার জন্য প্রয়োজনীয়তা
অ্যান্ড্রয়েড ডিভাইসগুলির বিভিন্ন ডিজাইন থাকতে পারে, তাই সমস্ত ডিভাইসে প্রয়োগ করার জন্য জিএসআই ফ্ল্যাশ করার জন্য কোনও সাধারণ কমান্ড বা নির্দেশাবলীর সেট নেই৷ স্পষ্ট ফ্ল্যাশিং নির্দেশাবলীর জন্য Android ডিভাইসের প্রস্তুতকারকের সাথে যোগাযোগ করুন। একটি সাধারণ নির্দেশিকা হিসাবে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন:
- ডিভাইসে নিম্নলিখিত আছে তা নিশ্চিত করুন:
- Treblized
- ডিভাইস আনলক করার একটি পদ্ধতি (তাই
fastboot
ব্যবহার করে ফ্ল্যাশ করা যায়) - এটিকে
fastboot
মাধ্যমে ফ্ল্যাশযোগ্য করার জন্য একটি আনলক করা অবস্থা (আপনার কাছেfastboot
সর্বশেষ সংস্করণ রয়েছে তা নিশ্চিত করতে, এটি অ্যান্ড্রয়েড সোর্স ট্রি থেকে তৈরি করুন।)
- বর্তমান সিস্টেম পার্টিশন মুছে ফেলুন, তারপর সিস্টেম পার্টিশনে GSI ফ্ল্যাশ করুন।
- ব্যবহারকারীর ডেটা মুছুন এবং অন্যান্য প্রয়োজনীয় পার্টিশন থেকে ডেটা সাফ করুন (উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা এবং সিস্টেম পার্টিশন)।
- ডিভাইসটি রিবুট করুন।
উদাহরণস্বরূপ, যেকোনো পিক্সেল ডিভাইসে একটি GSI ফ্ল্যাশ করতে:
-
fastboot
মোডে বুট করুন এবং বুটলোডার আনলক করুন । -
fastbootd
সমর্থনকারী ডিভাইসগুলিকেওfastbootd
-এ বুট করতে হবে:$ fastboot reboot fastboot
- সিস্টেম পার্টিশনে GSI মুছুন এবং ফ্ল্যাশ করুন:
$ fastboot erase system $ fastboot flash system system.img
- ব্যবহারকারীর ডেটা মুছুন এবং অন্যান্য প্রয়োজনীয় পার্টিশন থেকে ডেটা সাফ করুন (উদাহরণস্বরূপ, ব্যবহারকারীর ডেটা এবং সিস্টেম পার্টিশন):
$ fastboot -w
- বুটলোডারে পুনরায় বুট করুন:
$ fastboot reboot-bootloader
- প্রদত্ত vbmeta ফ্ল্যাশ করার সময় যাচাইকৃত বুট যাচাইকরণ অক্ষম করুন:
$ fastboot --disable-verification flash vbmeta vbmeta.img
- Reboot:
$ fastboot reboot
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition') fastboot: error: Command failed
$ fastboot delete-logical-partition product_a
_a
সিস্টেম পার্টিশনের স্লট আইডির সাথে মেলে, যেমন এই উদাহরণে system_a
।GSI তে অবদান রাখুন
Android GSI উন্নয়নে আপনার অবদানকে স্বাগত জানায়। আপনি এতে জড়িত হতে পারেন এবং GSI উন্নত করতে সাহায্য করতে পারেন:
- একটি GSI প্যাচ তৈরি করা হচ্ছে।
DESSERT -gsi
একটি উন্নয়ন শাখা নয় এবং AOSP প্রধান শাখা থেকে শুধুমাত্র চেরিপিক গ্রহণ করে, তাই একটি GSI প্যাচ জমা দিতে, আপনাকে অবশ্যই:- AOSP
main
শাখায় প্যাচ জমা দিন। - প্যাচটিকে
DESSERT -gsi
-তে চেরিপিক করুন। - চেরিপিক পর্যালোচনা করার জন্য একটি বাগ ফাইল করুন।
- AOSP
- GSI বাগ রিপোর্ট করা বা অন্যান্য পরামর্শ করা। বাগ রিপোর্টিং -এ নির্দেশাবলী পর্যালোচনা করুন, তারপর GSI বাগগুলি ব্রাউজ করুন বা ফাইল করুন৷
টিপস
অ্যাডবি ব্যবহার করে নেভিগেশন বার মোড পরিবর্তন করুন
GSI দিয়ে বুট করার সময়, নেভিগেশন বার মোড ভেন্ডর ওভাররাইডিং দ্বারা কনফিগার করা হয়। আপনি রানটাইমে নিম্নলিখিত adb কমান্ড চালিয়ে নেভিগেশন বার মোড পরিবর্তন করতে পারেন।
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
যেখানে mode হতে পারে threebutton
, twobutton
, gestural
ইত্যাদি।