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

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

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

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

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

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

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

वर्तमान 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

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

Android 12 GSI में बदलाव

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

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

Android 11 GSI में बदलाव

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

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

Android 10 GSI में बदलाव

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

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

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

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

  • GSI और एमुलेटर को मिलाता है। GSIS एमुलेटर उत्पादों की प्रणाली छवियों, उदाहरण के लिए, से बनाया जाता है aosp_arm64 और aosp_x86
  • सिस्टम-जैसा-रूट। एंड्रॉयड, उपकरणों के पिछले संस्करणों कि एक का समर्थन नहीं किया में / बी के अपडेट के तहत सिस्टम छवि माउंट सकता है /system निर्देशिका। एंड्रॉइड 9 में, सिस्टम इमेज के रूट को डिवाइस के रूट के रूप में माउंट किया जाता है।
  • 64-बिट बाइंडर इंटरफ़ेस। Android 8.x में, 32-बिट GSI ने 32-बिट बाइंडर इंटरफ़ेस का उपयोग किया। एंड्रॉइड 9 32-बिट बाइंडर इंटरफ़ेस का समर्थन नहीं करता है, इसलिए 32-बिट जीएसआई और 64-बिट जीएसआई दोनों 64-बिट बाइंडर इंटरफ़ेस का उपयोग करते हैं।
  • वीएनडीके प्रवर्तन। Android 8.1 में, VNDK वैकल्पिक था। एंड्रॉयड 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 में अपग्रेड) करने के लिए कीमास्टर कार्यान्वयन को संशोधित करना होगा। Keymaster पर जानकारी के लिए, का उल्लेख हार्डवेयर समर्थित KeyStore

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

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

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

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

एक जीएसआई का निर्माण करने के द्वारा एंड्रॉयड स्रोत पेड़ की स्थापना को डाउनलोड एक जीएसआई शाखा से और एक जीएसआई का निर्माण लक्ष्य चुनने । अपने डिवाइस के लिए सही GSI संस्करण निर्धारित करने के लिए नीचे दी गई लक्ष्य तालिका बनाएं का उपयोग करें। निर्माण पूर्ण होने के बाद, जीएसआई सिस्टम छवि है (यह है कि, system.img ) और आउटपुट में प्रकट होता है फ़ोल्डर out/target/product/ generic_arm64

उदाहरण के लिए, जीएसआई का निर्माण लक्ष्य के निर्माण के लिए gsi_arm64-userdebug जीएसआई शाखा पर android12-gsi , निम्न कमांड चलाते हैं।

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

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

  1. करने के लिए बूट fastboot मोड और बूटलोडर अनलॉक
  2. उपकरणों का समर्थन fastbootd भी में बूट करने की जरूरत है fastbootd : द्वारा
    $ fastboot reboot fastboot
  3. मिटाएं और सिस्टम विभाजन के लिए जीएसआई फ्लैश:
    $ 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
उपयोग निम्न आदेश उत्पाद विभाजन हटा सकते हैं और प्रणाली विभाजन के लिए स्थान खाली करने के। : इस फ़्लैश जीएसआई अतिरिक्त जगह उपलब्ध कराता है
$ fastboot delete-logical-partition product_a
पोस्टफ़िक्स _a जैसे सिस्टम भाग, के स्लॉट आईडी से मेल खाना चाहिए system_a इस उदाहरण में।

जीएसआई में योगदान

Android GSI विकास में आपके योगदान का स्वागत करता है। आप इसमें शामिल हो सकते हैं और जीएसआई को बेहतर बनाने में मदद कर सकते हैं:

  • GSI पैच बनाना। DESSERT -gsi एक विकास शाखा नहीं है और इसलिए एक जीएसआई पैच प्रस्तुत करने के लिए AOSP मास्टर शाखा से केवल cherrypicks स्वीकार करता है, आपको:
    1. करने के लिए पैच जमा करें AOSP master शाखा।
    2. करने के लिए पैच Cherrypick DESSERT -gsi
    3. चेरीपिक की समीक्षा करवाने के लिए एक बग फाइल करें।
  • जीएसआई कीड़े रिपोर्टिंग या अन्य सुझाव बना। में निर्देशों की समीक्षा करें बग्स रिपोर्टिंग , तो ब्राउज़ करें या फ़ाइल जीएसआई कीड़े

टिप्स

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

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

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

कहाँ mode हो सकता है threebutton , twobutton , gestural , और इतने पर।