जेनेरिक सिस्टम इमेज

जेनेरिक सिस्टम इमेज (GSI) Android डिवाइस के लिए एडजस्ट किए गए कॉन्फ़िगरेशन वाली एक सिस्टम इमेज है। इसे अनमॉडिफाइड एंड्रॉइड ओपन सोर्स प्रोजेक्ट (एओएसपी) कोड के साथ एक शुद्ध एंड्रॉइड कार्यान्वयन माना जाता है कि एंड्रॉइड 9 या उच्चतर चलाने वाला कोई भी एंड्रॉइड डिवाइस सफलतापूर्वक चल सकता है।

GSI का उपयोग VTS और CTS-on-GSI परीक्षण चलाने के लिए किया जाता है। एंड्रॉइड डिवाइस की सिस्टम छवि को जीएसआई के साथ बदल दिया जाता है, फिर विक्रेता टेस्ट सूट (वीटीएस) और संगतता परीक्षण सूट (सीटीएस) के साथ परीक्षण किया जाता है ताकि यह सुनिश्चित हो सके कि डिवाइस एंड्रॉइड के नवीनतम संस्करण के साथ विक्रेता इंटरफेस को सही ढंग से लागू करता है।

GSI के साथ आरंभ करने के लिए, GSI कॉन्फ़िगरेशन (और अनुमत संस्करण) और प्रकारों के विवरण के लिए निम्नलिखित अनुभागों की समीक्षा करें। जब आप जीएसआई का उपयोग करने के लिए तैयार हों, तो अपने डिवाइस लक्ष्य के लिए जीएसआई डाउनलोड करें और बनाएं , फिर जीएसआई को एंड्रॉइड डिवाइस पर फ्लैश करें

GSI कॉन्फ़िगरेशन और वेरिएंस

वर्तमान Android GSI में निम्न कॉन्फ़िगरेशन है:

वर्तमान Android GSI में निम्नलिखित प्रमुख संस्करण शामिल हैं:

  • सीपीयू वास्तुकला। विभिन्न CPU निर्देशों (ARM, x86, आदि) और CPU बिटनेस (32 बिट या 64 बिट) के लिए समर्थन।

ट्रेबल अनुपालन परीक्षणों के लिए जीएसआई लक्ष्य

अनुपालन परीक्षण के लिए उपयोग किया जाने वाला GSI उस Android संस्करण द्वारा निर्धारित किया जाता है जिसके साथ डिवाइस लॉन्च होता है।

उपकरण का प्रकार लक्ष्य बनाएं
Android 12 . के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षरित)
Android 11 के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षरित)
Android 10 . के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षरित)
Android 9 . के साथ लॉन्च होने वाले डिवाइस gsi_$arch-userdebug

सभी जीएसआई एंड्रॉइड 12 कोडबेस से बनाए गए हैं, और प्रत्येक सीपीयू आर्किटेक्चर में एक संबंधित जीएसआई बाइनरी है ( बिल्डिंग जीएसआई में बिल्ड लक्ष्यों की सूची देखें)।

Android 12 GSI में बदलाव

Android 12 के साथ लॉन्च या अपडेट किए गए डिवाइस को अनुपालन परीक्षण के लिए Android 12 GSI का उपयोग करना चाहिए। इसमें पहले के जीएसआई से निम्नलिखित बड़े बदलाव शामिल हैं:

  • लक्ष्य का नाम। अनुपालन परीक्षणों के लिए GSI लक्ष्य नाम बदलकर gsi_$arch कर दिया गया है। लक्ष्य नाम aosp_$arch के साथ GSI को Android ऐप डेवलपर्स के लिए रखा गया है। परीक्षण योजना CTS-on-GSI को विक्रेता इंटरफ़ेस के परीक्षण के लिए भी कम किया गया है।
  • लीगेसी GSI को चरणबद्ध तरीके से समाप्त कर दिया गया है। GSI 12 उन Android 8.0 या 8.1 उपकरणों को समायोजित करने वाले वर्कअराउंड को हटा देता है जो पूरी तरह से ट्रेब्लाइज़्ड नहीं हैं।
  • उपयोगकर्ता डिबग SEpolicy. GSI gsi_$arch में userdebug_plat_sepolicy.cil शामिल है। OEM-विशिष्ट vendor_boot-debug.img या boot-debug.img को फ्लैश करते समय, /system/bin/init GSI system.img से userdebug_plat_sepolicy.cil को लोड करेगा। विवरण के लिए डिबग रैमडिस्क के साथ वीटीएस परीक्षण का संदर्भ लें।

Android 11 GSI में बदलाव

Android 11 के साथ लॉन्च या अपडेट किए गए डिवाइस को अनुपालन परीक्षण के लिए Android 11 GSI का उपयोग करना चाहिए। इसमें पहले के जीएसआई से निम्नलिखित बड़े बदलाव शामिल हैं:

  • system_ext सामग्री। Android 11 एक नए विभाजन को परिभाषित करता है system_ext । GSI सिस्टम एक्सटेंशन की सामग्री को system/system_ext फ़ोल्डर के अंतर्गत रखता है।
  • शीर्ष। जीएसआई में चपटे और संकुचित दोनों शीर्ष शामिल हैं। कौन सा उपयोग करना है यह सिस्टम प्रॉपर्टी ro.apex.updatable द्वारा रन टाइम पर विक्रेता विभाजन में निर्धारित किया जाता है। विवरण के लिए एपेक्स अपडेट का समर्थन करने के लिए संदर्भ विन्यास प्रणाली

Android 10 GSI में बदलाव

Android 10 के साथ लॉन्च या अपडेट किए गए डिवाइस को अनुपालन परीक्षण के लिए Android 10 GSI का उपयोग करना चाहिए। इसमें पहले के जीएसआई से निम्नलिखित बड़े बदलाव शामिल हैं:

  • उपयोगकर्ता निर्माण। जीएसआई में एंड्रॉइड 10 से यूजर बिल्ड है। एंड्रॉइड 10 में, यूजर बिल्ड जीएसआई का उपयोग सीटीएस-ऑन-जीएसआई / वीटीएस अनुपालन परीक्षण में किया जा सकता है। विवरण के लिए डीबग रैमडिस्क के साथ वीटीएस परीक्षण का संदर्भ लें।
  • अप्रकाशित प्रारूप। लक्ष्य के साथ GSI aosp_$arch को अनपेक्षित प्रारूप के साथ बनाया गया है। यदि आवश्यक हो तो आप एक अनपेक्षित GSI को विरल प्रारूप में बदलने के लिए img2simg का उपयोग कर सकते हैं।
  • सिस्टम-जैसा-रूट। aosp_$arch_a नामक लीगेसी GSI बिल्ड लक्ष्य को चरणबद्ध तरीके से समाप्त कर दिया गया था। रैमडिस्क और गैर-सिस्टम-एज़-रूट के साथ एंड्रॉइड 8 या 8.1 से एंड्रॉइड 10 में अपग्रेड किए गए उपकरणों के लिए, विरासत जीएसआई aosp_$arch_ab का उपयोग करें। रैमडिस्क में अपग्रेड किया गया init सिस्टम के रूप में रूट लेआउट के साथ ओईएम सिस्टम.आईएमजी को सपोर्ट करता है।
  • बूट सत्यापित करें। GSI का उपयोग करके आपको केवल डिवाइस को अनलॉक करने की आवश्यकता है। सत्यापित बूट को अक्षम करना आवश्यक नहीं है।

एंड्रॉइड 9 जीएसआई परिवर्तन

Android 9 के साथ लॉन्च या अपडेट किए गए डिवाइस को अनुपालन परीक्षण के लिए Android 9 GSI का उपयोग करना चाहिए। इसमें पहले के जीएसआई से निम्नलिखित बड़े बदलाव शामिल हैं:

  • GSI और एमुलेटर को मिलाता है। GSI को एमुलेटर उत्पादों की सिस्टम इमेज से बनाया गया है, उदाहरण के लिए, aosp_arm64 और aosp_x86
  • सिस्टम-जैसा-रूट। Android के पिछले संस्करणों में, जो डिवाइस A/B अपडेट का समर्थन नहीं करते थे, वे सिस्टम छवि को /system निर्देशिका के अंतर्गत माउंट कर सकते थे। एंड्रॉइड 9 में, सिस्टम इमेज के रूट को डिवाइस के रूट के रूप में माउंट किया जाता है।
  • 64-बिट बाइंडर इंटरफ़ेस। Android 8.x में, 32-बिट GSI ने 32-बिट बाइंडर इंटरफ़ेस का उपयोग किया। एंड्रॉइड 9 32-बिट बाइंडर इंटरफ़ेस का समर्थन नहीं करता है, इसलिए 32-बिट जीएसआई और 64-बिट जीएसआई दोनों 64-बिट बाइंडर इंटरफ़ेस का उपयोग करते हैं।
  • वीएनडीके प्रवर्तन। Android 8.1 में, VNDK वैकल्पिक था। Android 9 से प्रारंभ होकर, VNDK अनिवार्य है, इसलिए BOARD_VNDK_VERSION अवश्य सेट किया जाना चाहिए।
  • संगत प्रणाली संपत्ति। एंड्रॉइड 9 एक संगत सिस्टम प्रॉपर्टी ( PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true ) के लिए एक्सेस चेक को सक्षम करता है।

Android 9 कीमास्टर में बदलाव

Android के पुराने संस्करणों में, Keymaster 3 या उसके बाद के संस्करण को लागू करने वाले उपकरणों को यह सत्यापित करने की आवश्यकता थी कि चल रहे सिस्टम द्वारा रिपोर्ट की गई संस्करण जानकारी ( ro.build.version.release और ro.build.version.security_patch ) बूटलोडर द्वारा रिपोर्ट की गई संस्करण जानकारी से मेल खाती है। ऐसी जानकारी आमतौर पर बूट इमेज हेडर से प्राप्त की गई थी।

Android 9 और उच्चतर में, विक्रेताओं को GSI बूट करने में सक्षम बनाने के लिए यह आवश्यकता बदल गई है। विशेष रूप से, कीमास्टर को सत्यापन नहीं करना चाहिए क्योंकि जीएसआई द्वारा रिपोर्ट की गई संस्करण जानकारी विक्रेता के बूटलोडर द्वारा रिपोर्ट की गई संस्करण जानकारी से मेल नहीं खा सकती है। कीमास्टर 3 या उससे कम के उपकरणों को लागू करने वाले उपकरणों के लिए, विक्रेताओं को सत्यापन छोड़ने के लिए (या कीमास्टर 4 में अपग्रेड) करने के लिए कीमास्टर कार्यान्वयन को संशोधित करना होगा। कीमास्टर के विवरण के लिए, हार्डवेयर-समर्थित कीस्टोर देखें।

जीएसआई डाउनलोड करना

आप एओएसपी कंटीन्यूअस इंटीग्रेशन (सीआई) वेबसाइट ci.android.com से प्रीबिल्ट जीएसआई डाउनलोड कर सकते हैं। यदि आपके हार्डवेयर प्लेटफॉर्म के लिए GSI प्रकार डाउनलोड के लिए उपलब्ध नहीं है, तो विशिष्ट लक्ष्यों के लिए GSI के निर्माण के विवरण के लिए निम्न अनुभाग देखें।

जीएसआई का निर्माण

Android 9 से शुरू होकर, प्रत्येक Android संस्करण में AOSP पर DESSERT -gsi नाम की एक GSI शाखा होती है (उदाहरण के लिए, android12-gsi Android 12 पर GSI शाखा है)। जीएसआई शाखाओं में सभी सुरक्षा पैच और लागू जीएसआई पैच के साथ एंड्रॉइड की सामग्री शामिल है।

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

Android GSI बिल्ड लक्ष्य

निम्नलिखित 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

GSI को चमकाने के लिए आवश्यकताएँ

Android उपकरणों में अलग-अलग डिज़ाइन हो सकते हैं, इसलिए सभी उपकरणों पर लागू करने के लिए GSI फ्लैश करने के लिए कोई सामान्य आदेश या निर्देशों का सेट नहीं है। स्पष्ट फ़्लैशिंग निर्देशों के लिए Android डिवाइस के निर्माता से संपर्क करें। एक सामान्य दिशानिर्देश के रूप में निम्नलिखित चरणों का प्रयोग करें:

  1. सुनिश्चित करें कि डिवाइस में निम्नलिखित हैं:
    • तिहरा
    • उपकरणों को अनलॉक करने की एक विधि (ताकि उन्हें fastboot का उपयोग करके फ्लैश किया जा सके)
    • fastboot के माध्यम से इसे फ्लैश करने योग्य बनाने के लिए एक अनलॉक स्थिति (यह सुनिश्चित करने के लिए कि आपके पास fastboot का नवीनतम संस्करण है, इसे एंड्रॉइड स्रोत पेड़ से बनाएं।)
  2. मौजूदा सिस्टम विभाजन मिटाएं, फिर GSI को सिस्टम विभाजन में फ्लैश करें।
  3. उपयोगकर्ता डेटा को वाइप करें और अन्य आवश्यक विभाजनों से डेटा साफ़ करें (उदाहरण के लिए, उपयोगकर्ता डेटा और सिस्टम विभाजन)।
  4. डिवाइस को रिबूट करें।

उदाहरण के लिए, किसी पिक्सेल डिवाइस पर GSI फ्लैश करने के लिए:

  1. fastboot मोड में बूट करें और बूटलोडर को अनलॉक करें
  2. fastbootd का समर्थन करने वाले उपकरणों को भी fastbootd में बूट करने की आवश्यकता है:
    $ fastboot reboot fastboot
  3. सिस्टम विभाजन में GSI को मिटाएं और फ्लैश करें:
    $ fastboot erase system
    $ fastboot flash system system.img
    
  4. उपयोगकर्ता डेटा को वाइप करें और अन्य आवश्यक विभाजनों से डेटा साफ़ करें (उदाहरण के लिए, उपयोगकर्ता डेटा और सिस्टम विभाजन):
    $ fastboot -w
  5. रिबूट:
    $ fastboot reboot
Android 10 या छोटे सिस्टम विभाजन वाले नए उपकरणों पर, GSI को फ्लैश करते समय निम्न त्रुटि संदेश दिखाई दे सकता है:
    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 पैच सबमिट करने के लिए, आपको यह करना होगा:
    1. पैच को AOSP master शाखा में जमा करें।
    2. चेरी पैच को DESSERT -gsi पर चुनें।
    3. चेरीपिक की समीक्षा करवाने के लिए एक बग फाइल करें।
  • GSI बग की रिपोर्ट करना या अन्य सुझाव देना। रिपोर्टिंग बग्स में दिए गए निर्देशों की समीक्षा करें, फिर GSI बग्स को ब्राउज़ करें या फाइल करें।

टिप्स

adb . का उपयोग करके नेविगेशन बार मोड को बदलना

GSI के साथ बूट करते समय, नेविगेशन बार मोड को वेंडर ओवरराइडिंग द्वारा कॉन्फ़िगर किया जाता है। आप निम्न adb कमांड को रनटाइम में चलाकर नेविगेशन बार मोड को बदल सकते हैं।

adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode

जहां mode threebutton , twobutton , gestural आदि हो सकता है।