सामान्य सिस्टम छवियाँ

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

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

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

जीएसआई कॉन्फ़िगरेशन और भिन्नताएं

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

वर्तमान 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 GSI system.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 में अपग्रेड किए गए उपकरणों के लिए, लीगेसी GSI aosp_$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

जीएसआई चमकाने के लिए आवश्यकताएँ

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

  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
एंड्रॉइड 10 या नए उपकरणों पर जिनमें छोटे सिस्टम विभाजन हैं, जीएसआई फ्लैश करते समय निम्न त्रुटि संदेश दिखाई दे सकता है:
    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 main शाखा में जमा करें।
    2. चेरी DESSERT -gsi के लिए पैच चुनें।
    3. चेरीपिक की समीक्षा करवाने के लिए बग फ़ाइल करें।
  • जीएसआई बग की रिपोर्ट करना या अन्य सुझाव देना। बग रिपोर्टिंग में दिए गए निर्देशों की समीक्षा करें, फिर GSI बग ब्राउज़ करें या फ़ाइल करें।

सुझावों

एडीबी का उपयोग करके नेविगेशन बार मोड बदलें

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

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

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