अडजस्ट किए गए कॉन्फ़िगरेशन वाली सामान्य सिस्टम इमेज (जीएसआई) Android डिवाइसों के लिए. यह पूरी तरह से Android लागू करने का तरीका माना जाता है किसी भी Android वर्शन में, Android 9 या इसके बाद वाले वर्शन पर चलने वाला डिवाइस सही से काम कर सकता है.
जीएसआई का इस्तेमाल वीटीएस और सीटीएस-ऑन-जीएसआई टेस्ट करने के लिए किया जाता है. इसकी सिस्टम इमेज Android डिवाइस को जीएसआई से बदला जाता है. इसके बाद, विक्रेता टेस्ट सुइट (वीटीएस) और यह पक्का करने के लिए कि कंपैटबिलिटी टेस्ट सुइट (सीटीएस) का इस्तेमाल किया जा रहा हो कि डिवाइस सबसे नए वर्शन के साथ वेंडर इंटरफ़ेस को सही तरीके से लागू करता हो Android के लिए.
जीएसआई का इस्तेमाल शुरू करने के बारे में जानने के लिए, नीचे दिए गए सेक्शन देखें जीएसआई कॉन्फ़िगरेशन (और इनकी अनुमति है वैरिएंस) और टाइप होते हैं. जब आप जीएसआई का इस्तेमाल करने के लिए तैयार हों, अपने डिवाइस के लिए, जीएसआई डाउनलोड करें और बनाएं टारगेट के तौर पर सेट करें, इसके बाद Android के लिए जीएसआई को फ़्लैश करें डिवाइस.
जीएसआई कॉन्फ़िगरेशन और वैरियंस
मौजूदा Android जीएसआई का कॉन्फ़िगरेशन यह है:
- ट्रेबल. जीएसआई, AIDL/HIDL पर आधारित आर्किटेक्चर में हुए बदलाव (इसे ट्रेबल के नाम से भी जाना जाता है), जिसमें एआईडीएल इंटरफ़ेस और HIDL इंटरफ़ेस. जीएसआई का इस्तेमाल इन पर किया जा सकता है AIDL/HIDL वेंडर इंटरफ़ेस का इस्तेमाल करने वाला कोई भी Android डिवाइस. (ज़्यादा जानकारी के लिए, स्ट्रक्चर के संसाधन.)
- फ़ाइल सिस्टम. जीएसआई, ext4 फ़ाइल सिस्टम का इस्तेमाल करता है.
मौजूदा 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 अनुपालन जांच के लिए जीएसआई. इसमें ये चीज़ें शामिल हैं पुराने जीएसआई में हुए बड़े बदलाव:
- system_ext कॉन्टेंट. Android पर
11 नए विभाजन
system_ext
के बारे में बताता है. जीएसआई, सिस्टम एक्सटेंशन के कॉन्टेंट को फ़ोल्डर में सेव करता हैsystem/system_ext
. - अपेक्स. जीएसआई में फ़्लैटन और कंप्रेस किए हुए, दोनों तरह के APEXs शामिल होते हैं.
किस खाते का इस्तेमाल करना है, यह सिस्टम प्रॉपर्टी
ro.apex.updatable
के हिसाब से तय होती है . रेफ़रंस ज़्यादा जानकारी के लिए, सिस्टम को APEX अपडेट की सुविधा देने के लिए कॉन्फ़िगर करना.
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 डिवाइस निर्माता को इंस्टॉल किया है. सामान्य दिशा-निर्देशों के तौर पर, यहां दिया गया तरीका अपनाएं:
- पक्का करें कि डिवाइस में ये चीज़ें मौजूद हों:
- ट्रेब्लाइज्ड
- डिवाइसों को अनलॉक करने का तरीका, ताकि उनका इस्तेमाल करके उन्हें फ़्लैश किया जा सके
fastboot
) - अनलॉक की गई स्थिति, ताकि उसे
fastboot
के ज़रिए फ़्लैश किया जा सके (यह पक्का करने के लिए कि आपके पासfastboot
का सबसे नया वर्शन है, बिल्ड जिसे Android सोर्स ट्री से इकट्ठा किया जाता है.)
- सिस्टम के मौजूदा पार्टीशन को मिटाएं. इसके बाद, जीएसआई को सिस्टम में फ़्लैश करें विभाजन.
- उपयोगकर्ता का डेटा मिटाएं और अन्य ज़रूरी हिस्सों से डेटा मिटाएं (इसके लिए उदाहरण के लिए, उपयोगकर्ता का डेटा और सिस्टम के पार्टीशन).
- डिवाइस को फिर से चालू करें.
उदाहरण के लिए, किसी भी Pixel डिवाइस पर जीएसआई फ़्लैश करने के लिए:
- इस पर बूट करें
fastboot
मोड और इसे अनलॉक करें बूटलोडर. - इन सुविधाओं के साथ काम करने वाले डिवाइस
fastbootd
इसके लिएfastbootd
में चालू करने की ज़रूरत भी होती है:$ fastboot reboot fastboot
- जीएसआई को मिटाएं और सिस्टम पार्टीशन में फ़्लैश करें:
$ 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
$ fastboot delete-logical-partition product_a
_a
को सिस्टम पार्टीशन के स्लॉट आईडी से मेल खाना चाहिए,
जैसे कि इस उदाहरण में system_a
.
जीएसआई में योगदान दें
Android, जीएसआई डेवलपमेंट में आपके योगदान का स्वागत करता है. आप शामिल हो सकते हैं और इसके ज़रिए जीएसआई को बेहतर बनाने में मदद करेंगे:
- जीएसआई पैच बनाना.
DESSERT-gsi
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है की डेवलपमेंट ब्रांच नहीं है और सिर्फ़ चेरीपिक एओएसपी की मुख्य ब्रांच, इसलिए जीएसआई पैच सबमिट करने के लिए, आपको:- पैच को
एओएसपी
main
ब्रांच. DESSERT-gsi
को पैच चुनें.- चेरीपिक की समीक्षा करवाने के लिए, गड़बड़ी की शिकायत करें.
- पैच को
एओएसपी
- जीएसआई की गड़बड़ियों की शिकायत करना या दूसरे सुझाव देना. जानकारी देखें में निर्देश देखें गड़बड़ियों की शिकायत करना. ब्राउज़ करें या फ़ाइल करें जीएसआई गड़बड़ियां शामिल हैं.
सलाह
adb का इस्तेमाल करके नेविगेशन बार का मोड बदलना
जीएसआई की मदद से चालू करने पर, नेविगेशन बार मोड को वेंडर ओवरराइड करने के ज़रिए कॉन्फ़िगर किया जाता है. आप रनटाइम में नीचे दिए गए adb कमांड चलाकर, नेविगेशन बार मोड को बदला जा सकता है.
adb exec-out cmd overlay enable-exclusive com.android.internal.systemui.navbar.mode
जहां mode, threebutton
, twobutton
,
gestural
वगैरह.