सामान्य सिस्टम इमेज

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

जीएसआई का इस्तेमाल वीटीएस और सीटीएस-ऑन-जीएसआई टेस्ट करने के लिए किया जाता है. इसकी सिस्टम इमेज Android डिवाइस को जीएसआई से बदला जाता है. इसके बाद, विक्रेता टेस्ट सुइट (वीटीएस) और यह पक्का करने के लिए कि कंपैटबिलिटी टेस्ट सुइट (सीटीएस) का इस्तेमाल किया जा रहा हो कि डिवाइस सबसे नए वर्शन के साथ वेंडर इंटरफ़ेस को सही तरीके से लागू करता हो Android के लिए.

जीएसआई का इस्तेमाल शुरू करने के बारे में जानने के लिए, नीचे दिए गए सेक्शन देखें जीएसआई कॉन्फ़िगरेशन (और इनकी अनुमति है वैरिएंस) और टाइप होते हैं. जब आप जीएसआई का इस्तेमाल करने के लिए तैयार हों, अपने डिवाइस के लिए, जीएसआई डाउनलोड करें और बनाएं टारगेट के तौर पर सेट करें, इसके बाद Android के लिए जीएसआई को फ़्लैश करें डिवाइस.

जीएसआई कॉन्फ़िगरेशन और वैरियंस

मौजूदा Android जीएसआई का कॉन्फ़िगरेशन यह है:

मौजूदा Android जीएसआई में ये मुख्य बदलाव शामिल हैं:

  • सीपीयू आर्किटेक्चर. अलग-अलग सीपीयू निर्देशों के साथ काम करता है (ARM, x86 वगैरह) और सीपीयू बिटनेस (32 बिट या 64 बिट).

ट्रेबल के अनुपालन से जुड़ी जांचों के लिए जीएसआई का टारगेट

अनुपालन की जांच के लिए इस्तेमाल किया जाने वाला जीएसआई, उस Android वर्शन के हिसाब से तय किया जाता है जो डिवाइस इससे लॉन्च होता है.

डिवाइस किस तरह का है टारगेट बनाएं
Android 14 के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षर किया गया)
Android 13 के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षर किया गया)
Android 12L के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षर किया गया)
Android 12 के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षर किया गया)
Android 11 के साथ लॉन्च होने वाले डिवाइस gsi_$arch-user (हस्ताक्षर किया गया)

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

Android 12 वाले जीएसआई में हुए बदलाव

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

  • टारगेट का नाम. अनुपालन के लिए जीएसआई टारगेट का नाम टेस्ट को gsi_$arch में बदला गया. टारगेट के नाम वाला जीएसआई aosp_$arch, Android ऐप्लिकेशन डेवलपर के लिए रखा जाता है. जांच का प्लान वेंडर इंटरफ़ेस की जांच करने के लिए, CTS-on-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. रेफ़रंस VTS की मदद से टेस्टिंग करना ज़्यादा जानकारी के लिए, Ramdisk को डीबग करें.

Android 11 जीएसआई में हुए बदलाव

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

Android 10 जीएसआई में हुए बदलाव

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

  • उपयोगकर्ता का बनाया हुआ. जीएसआई में Android से उपयोगकर्ता का बिल्ड मौजूद है 10. Android 10 में, उपयोगकर्ता बिल्ड जीएसआई का इस्तेमाल CTS-on-GSI/VTS के अनुपालन की जांच में किया जा सकता है. रेफ़रंस डीबग रैम डिस्क के साथ वीटीएस की जांच देखें.
  • स्पार्स नहीं किया गया फ़ॉर्मैट. टारगेट के साथ जीएसआई aosp_$arch को स्पार्स नहीं किए गए फ़ॉर्मैट में बनाया गया है. Google Analytics 4 पर माइग्रेट करने के लिए, किसी पार्स न किए गए जीएसआई को स्पार्स फ़ॉर्मैट में बदलने के लिए img2simg ज़रूरी है.
  • सिस्टम के तौर पर रूट देखें. लेगसी जीएसआई बिल्ड टारगेट का नाम aosp_$arch_a को हटा दिया गया था. अपग्रेड किए गए डिवाइसों के लिए Android 8 या 8.1 से लेकर Android 10 तक, जिसमें रैम डिस्क और नॉन-system-as-root के लिए, लेगसी जीएसआई aosp_$arch_ab का इस्तेमाल करें. रैम डिस्क में अपग्रेड किया गया init, OEM system.img के साथ काम करता है रूट लेआउट के साथ काम करता है.
  • बूट की पुष्टि करें. जीएसआई का इस्तेमाल करने पर, आपको सिर्फ़ डिवाइस अनलॉक करना होगा. 'बूट की पुष्टि करें' को बंद करना ज़रूरी नहीं है.

Android 9 वाले जीएसआई में हुए बदलाव

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

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

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

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

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

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

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

जीएसआई बनाएं

Android 9 और इसके बाद के वर्शन में, हर Android वर्शन में एओएसपी पर DESSERT-gsi नाम की जीएसआई ब्रांच (उदाहरण के लिए, Android पर android12-gsi, जीएसआई की ब्रांच है 12). जीएसआई की ब्रांच में, Android का कॉन्टेंट सभी सिक्योरिटी पैच और जीएसआई पैच लागू किए गए.

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

उदाहरण के लिए, जीएसआई बिल्ड टारगेट बनाने के लिए जीएसआई ब्रांच android12-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 जीएसआई बिल्ड टारगेट

यहां दिए गए जीएसआई बिल्ड टारगेट, Android पर लॉन्च होने वाले डिवाइसों के लिए हैं 9 या उससे ज़्यादा.

GSI का नाम सीपीयू आर्क बाइंडर इंटरफ़ेस बिटनेस रूट के रूप में सिस्टम टारगेट बनाएं
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

फ़्लैशिंग जीएसआई के लिए ज़रूरी शर्तें

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

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

उदाहरण के लिए, किसी भी Pixel डिवाइस पर जीएसआई फ़्लैश करने के लिए:

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

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

सलाह

adb का इस्तेमाल करके नेविगेशन बार का मोड बदलना

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

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

जहां mode, threebutton, twobutton, gestural वगैरह.