जेनेरिक सिस्टम इमेज (जीएसआई) एंड्रॉइड डिवाइस के लिए समायोजित कॉन्फ़िगरेशन वाली एक सिस्टम इमेज है। इसे अनमॉडिफाइड एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) कोड के साथ एक शुद्ध एंड्रॉइड कार्यान्वयन माना जाता है, जिसे एंड्रॉइड 9 या उच्चतर चलाने वाला कोई भी एंड्रॉइड डिवाइस सफलतापूर्वक चला सकता है।
जीएसआई का उपयोग वीटीएस और सीटीएस-ऑन-जीएसआई परीक्षण चलाने के लिए किया जाता है। एंड्रॉइड डिवाइस की सिस्टम छवि को जीएसआई से बदल दिया जाता है, फिर विक्रेता परीक्षण सूट (वीटीएस) और संगतता परीक्षण सूट (सीटीएस) के साथ परीक्षण किया जाता है ताकि यह सुनिश्चित किया जा सके कि डिवाइस एंड्रॉइड के नवीनतम संस्करण के साथ विक्रेता इंटरफेस को सही ढंग से लागू करता है।
जीएसआई के साथ आरंभ करने के लिए, जीएसआई कॉन्फ़िगरेशन (और अनुमत भिन्नताएं) और प्रकारों के विवरण के लिए निम्नलिखित अनुभागों की समीक्षा करें। जब आप जीएसआई का उपयोग करने के लिए तैयार हों, तो अपने डिवाइस लक्ष्य के लिए जीएसआई डाउनलोड करें और बनाएं , फिर जीएसआई को एंड्रॉइड डिवाइस पर फ्लैश करें ।
जीएसआई कॉन्फ़िगरेशन और भिन्नताएं
वर्तमान Android GSI में निम्नलिखित कॉन्फ़िगरेशन है:
- तिगुना. जीएसआई में एआईडीएल/एचआईडीएल-आधारित वास्तुशिल्प परिवर्तनों (जिसे ट्रेबल भी कहा जाता है) के लिए पूर्ण समर्थन शामिल है, जिसमें एआईडीएल इंटरफेस और एचआईडीएल इंटरफेस के लिए समर्थन शामिल है। आप किसी भी एंड्रॉइड डिवाइस पर जीएसआई का उपयोग कर सकते हैं जो एआईडीएल/एचआईडीएल विक्रेता इंटरफेस का उपयोग करता है। (अधिक जानकारी के लिए, आर्किटेक्चर संसाधन देखें।)
- फाइल सिस्टम। GSI ext4 फ़ाइल सिस्टम का उपयोग करता है।
वर्तमान Android GSI में निम्नलिखित प्रमुख भिन्नताएँ शामिल हैं:
- सीपीयू आर्किटेक्चर. विभिन्न सीपीयू निर्देशों (एआरएम, x86, आदि) और सीपीयू बिटनेस (32 बिट या 64 बिट) के लिए समर्थन।
ट्रेबल अनुपालन परीक्षणों के लिए जीएसआई लक्ष्य
अनुपालन परीक्षण के लिए उपयोग किया जाने वाला GSI उस Android संस्करण द्वारा निर्धारित किया जाता है जिसके साथ डिवाइस लॉन्च होता है।
उपकरण का प्रकार | लक्ष्य बनाएं |
---|---|
Android 12 के साथ लॉन्च होने वाले डिवाइस | gsi_$arch-user (हस्ताक्षरित) |
एंड्रॉइड 11 के साथ लॉन्च होने वाले डिवाइस | gsi_$arch-user (हस्ताक्षरित) |
एंड्रॉइड 10 के साथ लॉन्च होने वाले डिवाइस | gsi_$arch-user (हस्ताक्षरित) |
एंड्रॉइड 9 के साथ लॉन्च होने वाले डिवाइस | gsi_$arch-userdebug |
सभी जीएसआई एंड्रॉइड 12 कोडबेस से बनाए गए हैं, और प्रत्येक सीपीयू आर्किटेक्चर में एक संबंधित जीएसआई बाइनरी है ( बिल्डिंग जीएसआई में बिल्ड लक्ष्यों की सूची देखें)।
एंड्रॉइड 12 जीएसआई परिवर्तन
एंड्रॉइड 12 के साथ लॉन्च होने वाले या अपडेट किए गए उपकरणों को अनुपालन परीक्षण के लिए एंड्रॉइड 12 जीएसआई का उपयोग करना होगा। इसमें पहले के जीएसआई से निम्नलिखित प्रमुख परिवर्तन शामिल हैं:
- लक्ष्य का नाम. अनुपालन परीक्षणों के लिए GSI लक्ष्य नाम को
gsi_$arch
में बदल दिया गया है। लक्ष्य नामaosp_$arch
वाला GSI Android ऐप डेवलपर्स के लिए रखा गया है। विक्रेता इंटरफ़ेस के परीक्षण के लिए परीक्षण योजनाCTS-on-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
लोड करेगा। विवरण के लिए डिबग रैमडिस्क के साथ वीटीएस परीक्षण का संदर्भ लें।
एंड्रॉइड 11 जीएसआई में बदलाव
एंड्रॉइड 11 के साथ लॉन्च होने वाले या अपडेट किए गए उपकरणों को अनुपालन परीक्षण के लिए एंड्रॉइड 11 जीएसआई का उपयोग करना होगा। इसमें पहले के जीएसआई से निम्नलिखित प्रमुख परिवर्तन शामिल हैं:
- system_ext सामग्री. एंड्रॉइड 11 एक नए विभाजन
system_ext
परिभाषित करता है। GSI सिस्टम एक्सटेंशन सामग्री कोsystem/system_ext
फ़ोल्डर के अंतर्गत रखता है। - शीर्ष। जीएसआई में चपटे और संपीड़ित दोनों एपेक्स शामिल हैं। किसका उपयोग करना है यह रन टाइम पर विक्रेता विभाजन में सिस्टम प्रॉपर्टी
ro.apex.updatable
द्वारा निर्धारित किया जाता है। विवरण के लिए APEX अपडेट का समर्थन करने के लिए संदर्भ कॉन्फिगरिंग सिस्टम ।
एंड्रॉइड 10 जीएसआई में बदलाव
एंड्रॉइड 10 के साथ लॉन्च होने वाले या अपडेट किए गए उपकरणों को अनुपालन परीक्षण के लिए एंड्रॉइड 10 जीएसआई का उपयोग करना होगा। इसमें पहले के जीएसआई से निम्नलिखित प्रमुख परिवर्तन शामिल हैं:
- उपयोगकर्ता निर्माण. जीएसआई में एंड्रॉइड 10 से यूजर बिल्ड है। एंड्रॉइड 10 में, यूजर बिल्ड जीएसआई का उपयोग सीटीएस-ऑन-जीएसआई/वीटीएस अनुपालन परीक्षण में किया जा सकता है। विवरण के लिए डिबग रैमडिस्क के साथ वीटीएस परीक्षण का संदर्भ लें।
- असंतुलित प्रारूप. लक्ष्य
aosp_$arch
के साथ GSI अनस्पार्स्ड प्रारूप के साथ बनाए गए हैं। यदि आवश्यक हो तो आप अनस्पार्स्ड जीएसआई को स्पार्स फॉर्मेट में बदलने के लिएimg2simg
उपयोग कर सकते हैं। - सिस्टम-एज़-रूट।
aosp_$arch_a
नाम का लीगेसी GSI बिल्ड लक्ष्य चरणबद्ध तरीके से समाप्त कर दिया गया था। रैमडिस्क और नॉन-सिस्टम-एज़-रूट के साथ एंड्रॉइड 8 या 8.1 से एंड्रॉइड 10 में अपग्रेड किए गए उपकरणों के लिए, लीगेसी GSIaosp_$arch_ab
उपयोग करें। रैमडिस्क में उन्नतinit
सिस्टम-एज़-रूट लेआउट के साथ OEM system.img का समर्थन करता है। - बूट सत्यापित करें. जीएसआई का उपयोग करके आपको केवल डिवाइस को अनलॉक करना होगा। सत्यापित बूट को अक्षम करना आवश्यक नहीं है.
एंड्रॉइड 9 जीएसआई परिवर्तन
एंड्रॉइड 9 के साथ लॉन्च होने वाले या अपडेट किए गए उपकरणों को अनुपालन परीक्षण के लिए एंड्रॉइड 9 जीएसआई का उपयोग करना होगा। इसमें पहले के जीएसआई से निम्नलिखित प्रमुख परिवर्तन शामिल हैं:
- जीएसआई और एम्यूलेटर को मर्ज करता है। जीएसआई एमुलेटर उत्पादों की सिस्टम छवियों से निर्मित होते हैं, उदाहरण के लिए,
aosp_arm64
औरaosp_x86
। - सिस्टम-एज़-रूट। एंड्रॉइड के पिछले संस्करणों में, जो डिवाइस ए/बी अपडेट का समर्थन नहीं करते थे, वे सिस्टम छवि को
/system
निर्देशिका के तहत माउंट कर सकते थे। एंड्रॉइड 9 में, सिस्टम इमेज का रूट डिवाइस के रूट के रूप में माउंट किया गया है। - 64-बिट बाइंडर इंटरफ़ेस। एंड्रॉइड 8.x में, 32-बिट जीएसआई ने 32-बिट बाइंडर इंटरफ़ेस का उपयोग किया। एंड्रॉइड 9 32-बिट बाइंडर इंटरफ़ेस का समर्थन नहीं करता है, इसलिए 32-बिट जीएसआई और 64-बिट जीएसआई दोनों 64-बिट बाइंडर इंटरफ़ेस का उपयोग करते हैं।
- वीएनडीके प्रवर्तन। एंड्रॉइड 8.1 में, VNDK वैकल्पिक था। Android 9 से प्रारंभ करते हुए, VNDK अनिवार्य है, इसलिए
BOARD_VNDK_VERSION
सेट होना चाहिए । - संगत सिस्टम संपत्ति. एंड्रॉइड 9 एक संगत सिस्टम प्रॉपर्टी (
PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true
) के लिए एक्सेस जांच सक्षम करता है।
एंड्रॉइड 9 कीमास्टर में बदलाव
एंड्रॉइड के पुराने संस्करणों में, कीमास्टर 3 या उससे कम को लागू करने वाले उपकरणों को यह सत्यापित करने की आवश्यकता थी कि रनिंग सिस्टम द्वारा रिपोर्ट की गई संस्करण जानकारी ( ro.build.version.release
और ro.build.version.security_patch
) बूटलोडर द्वारा रिपोर्ट की गई संस्करण जानकारी से मेल खाती है। ऐसी जानकारी आमतौर पर बूट इमेज हेडर से प्राप्त की जाती थी।
एंड्रॉइड 9 और उच्चतर में, विक्रेताओं को जीएसआई बूट करने में सक्षम बनाने के लिए यह आवश्यकता बदल गई है। विशेष रूप से, कीमास्टर को सत्यापन नहीं करना चाहिए क्योंकि जीएसआई द्वारा रिपोर्ट की गई संस्करण जानकारी विक्रेता के बूटलोडर द्वारा रिपोर्ट की गई संस्करण जानकारी से मेल नहीं खा सकती है। कीमास्टर 3 या उससे कम संस्करण को लागू करने वाले उपकरणों के लिए, विक्रेताओं को सत्यापन को छोड़ने (या कीमास्टर 4 में अपग्रेड करने) के लिए कीमास्टर कार्यान्वयन को संशोधित करना होगा। कीमास्टर पर विवरण के लिए, हार्डवेयर-समर्थित कीस्टोर देखें।
जीएसआई डाउनलोड करें
आप AOSP सतत एकीकरण (CI) वेबसाइट ci.android.com से प्रीबिल्ट GSI डाउनलोड कर सकते हैं। यदि आपके हार्डवेयर प्लेटफ़ॉर्म के लिए जीएसआई प्रकार डाउनलोड के लिए उपलब्ध नहीं है, तो विशिष्ट लक्ष्यों के लिए जीएसआई बनाने के विवरण के लिए निम्नलिखित अनुभाग देखें।
जीएसआई बनाएं
एंड्रॉइड 9 से शुरू होकर, प्रत्येक एंड्रॉइड संस्करण में AOSP पर DESSERT -gsi
नाम की एक GSI शाखा होती है (उदाहरण के लिए, android12-gsi
एंड्रॉइड 12 पर GSI शाखा है)। जीएसआई शाखाओं में सभी सुरक्षा पैच और लागू जीएसआई पैच के साथ एंड्रॉइड की सामग्री शामिल है।
जीएसआई बनाने के लिए, जीएसआई शाखा से डाउनलोड करके और जीएसआई बिल्ड लक्ष्य चुनकर एंड्रॉइड सोर्स ट्री सेट करें। अपने डिवाइस के लिए सही 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 या उच्चतर पर लॉन्च होने वाले उपकरणों के लिए हैं।
जीएसआई नाम | सीपीयू आर्च | बाइंडर इंटरफ़ेस बिटनेस | सिस्टम-एज़-रूट | लक्ष्य बनाएं |
---|---|---|---|---|
gsi_arm | हाथ | 64 | वाई | gsi_arm-user gsi_arm-userdebug |
gsi_arm64 | एआरएम64 | 64 | वाई | gsi_arm64-user gsi_arm64-userdebug |
gsi_x86 | 86 | 64 | वाई | gsi_x86-user gsi_x86-userdebug |
gsi_x86_64 | x86-64 | 64 | वाई | gsi_x86_64-user gsi_x86_64-userdebug |
जीएसआई चमकाने के लिए आवश्यकताएँ
एंड्रॉइड डिवाइस में अलग-अलग डिज़ाइन हो सकते हैं, इसलिए सभी डिवाइस पर लागू करने के लिए जीएसआई फ्लैश करने के लिए कोई सामान्य कमांड या निर्देशों का सेट नहीं है। स्पष्ट फ़्लैशिंग निर्देशों के लिए एंड्रॉइड डिवाइस के निर्माता से संपर्क करें। सामान्य दिशानिर्देश के रूप में निम्नलिखित चरणों का उपयोग करें:
- सुनिश्चित करें कि डिवाइस में निम्नलिखित हैं:
- तिगुना
- उपकरणों को अनलॉक करने की एक विधि (ताकि उन्हें
fastboot
का उपयोग करके फ्लैश किया जा सके) -
fastboot
के माध्यम से इसे फ्लैश करने योग्य बनाने के लिए एक अनलॉक स्थिति (यह सुनिश्चित करने के लिए कि आपके पासfastboot
का नवीनतम संस्करण है, इसे एंड्रॉइड सोर्स ट्री से बनाएं।)
- वर्तमान सिस्टम विभाजन को मिटा दें, फिर GSI को सिस्टम विभाजन पर फ्लैश करें।
- उपयोगकर्ता डेटा मिटाएं और अन्य आवश्यक विभाजनों (उदाहरण के लिए, उपयोगकर्ता डेटा और सिस्टम विभाजन) से डेटा साफ़ करें।
- डिवाइस को रीबूट करें.
उदाहरण के लिए, किसी भी पिक्सेल डिवाइस पर GSI फ़्लैश करने के लिए:
-
fastboot
मोड में बूट करें और बूटलोडर को अनलॉक करें । -
fastbootd
समर्थन करने वाले उपकरणों को भीfastbootd
में बूट करने की आवश्यकता है:$ fastboot reboot fastboot
- GSI को सिस्टम विभाजन में मिटाएँ और फ़्लैश करें:
$ fastboot erase system $ fastboot flash system system.img
- उपयोगकर्ता डेटा मिटाएं और अन्य आवश्यक विभाजनों से डेटा साफ़ करें (उदाहरण के लिए, उपयोगकर्ता डेटा और सिस्टम विभाजन):
$ fastboot -w
- रिबूट:
$ fastboot reboot
Resizing 'system_a' FAILED (remote: 'Not enough space to resize partition') fastboot: error: Command failedउत्पाद विभाजन को हटाने और सिस्टम विभाजन के लिए स्थान खाली करने के लिए निम्न कमांड का उपयोग करें। यह GSI को फ्लैश करने के लिए अतिरिक्त स्थान प्रदान करता है:
$ fastboot delete-logical-partition product_aपोस्टफिक्स
_a
सिस्टम विभाजन की स्लॉट आईडी से मेल खाना चाहिए, जैसे इस उदाहरण में system_a
।जीएसआई में योगदान करें
Android GSI विकास में आपके योगदान का स्वागत करता है। आप इसमें शामिल हो सकते हैं और जीएसआई को बेहतर बनाने में मदद कर सकते हैं:
- GSI पैच बनाना.
DESSERT -gsi
एक विकास शाखा नहीं है और AOSP मुख्य शाखा से केवल चेरीपिक्स स्वीकार करता है, इसलिए GSI पैच सबमिट करने के लिए, आपको यह करना होगा:- पैच को AOSP
main
शाखा में जमा करें। - चेरी
DESSERT -gsi
के लिए पैच चुनें। - चेरीपिक की समीक्षा करवाने के लिए बग फ़ाइल करें।
- पैच को AOSP
- जीएसआई बग की रिपोर्ट करना या अन्य सुझाव देना। बग रिपोर्टिंग में दिए गए निर्देशों की समीक्षा करें, फिर GSI बग ब्राउज़ करें या फ़ाइल करें।
सुझावों
एडीबी का उपयोग करके नेविगेशन बार मोड बदलें
जीएसआई के साथ बूट करते समय, नेविगेशन बार मोड विक्रेता ओवरराइडिंग द्वारा कॉन्फ़िगर किया जाता है। आप रनटाइम में निम्नलिखित एडीबी कमांड चलाकर नेविगेशन बार मोड को बदल सकते हैं।
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
जहां mode threebutton
, twobutton
, gestural
इत्यादि हो सकता है।