Android 10 के बाद से,
चलाने के लिए इस्तेमाल की जाने वाली जेनरिक सिस्टम इमेज (जीएसआई)
सीटीएस-ऑन-जीएसआई/वीटीएस अनुपालन टेस्टिंग में बदलाव किया गया
रिलीज़ साइन किए जाने के लिए, userdebug से उपयोगकर्ता बिल्ड टाइप तक. यह है
वीटीएस टेस्टिंग के लिए समस्या, क्योंकि वीटीएस की ज़रूरत है
दौड़ना adb root
है, लेकिन
उपयोगकर्ता के बिल्ड डिवाइस पर adb root
उपलब्ध नहीं है.
डीबग रैमडिस्क (या डीबग बूट इमेज) की शुरुआत की गई है, ताकि adb root
को
उपयोगकर्ता का बनाया हुआ डिवाइस जिसका बूटलोडर है
अनलॉक किया गया है. इससे टेस्टिंग आसान हो जाती है
सीटीएस-ऑन-जीएसआई के लिए उसी उपयोगकर्ता बिल्ड जीएसआई system.img
का इस्तेमाल करके फ़्लो और
जीएसआई पर वीटीएस. एसटीएस सेटअप करने के लिए, अब भी किसी दूसरे userdebug OEM system.img
का इस्तेमाल करना ज़रूरी है.
नीचे दी गई टेबल में, नियमों का पालन करने से जुड़ी जांच के लिए, इमेज और बिल्ड टाइप में बदलाव किए गए हैं Android 10.
टेस्ट सुइट | इनसे जांचें | बनाएं | डीबग करने के लिए ramdisk | adb root? | Android 9 -> बिल्ड के 10 वैरिएंट में बदलाव |
---|---|---|---|---|---|
CTS | OEM का सिस्टम | उपयोगकर्ता | नहीं | नहीं | कोई बदलाव नहीं |
CTS-on-GSI | जीएसआई | उपयोगकर्ता | नहीं | नहीं | userdebug -> user GSI रिलीज़ हस्ताक्षर किया गया |
STS | OEM का सिस्टम | userdebug | नहीं | Y | Q में नई सुविधाएं |
VTS | जीएसआई | उपयोगकर्ता | Y | Y | userdebug -> user GSI रिलीज़ हस्ताक्षर किया गया |
खास जानकारी
ये अतिरिक्त इमेज फ़ाइलें, बिल्ड फ़ोल्डर (${ANDROID_PRODUCT_OUT}
) में जनरेट होती हैं:
boot-debug.img
vendor_boot-debug.img
जब डिवाइस के boot
पार्टिशन पर boot-debug.img
फ़्लैश किया जाता है, तो
सिस्टम सेनीति फ़ाइल का उपयोगकर्ता डीबग वर्शन और एक अतिरिक्त प्रॉपर्टी फ़ाइल,
adb_debug.prop
लोड हो गए हैं. इससे यूज़र बिल्ड के साथ adb root
का इस्तेमाल किया जा सकता है
system.img
(जीएसआई या OEM का).
vendor_boot
सेगमेंट वाले डिवाइसों पर Generic Kernel Image (GKI) का इस्तेमाल करने के लिए, boot-debug.img
को फ़्लैश नहीं किया जाना चाहिए. ऐसा इसलिए, क्योंकि boot
सेगमेंट को सर्टिफ़ाइड GKI इमेज से फ़्लैश किया जाना चाहिए.
इसके बजाय, vendor_boot-debug.img
को vendor_boot
partition पर फ़्लैश किया जाना चाहिए, ताकि ramdisk को डीबग किया जा सके.
डीबग रैमडिस्क का इस्तेमाल करने से जुड़ी ज़रूरी शर्तें
डीबग रैमडिस्क, OEM उपलब्ध कराता है जो अनुपालन की जांच कर रहा है. यह रिलीज़ को साइन नहीं किया जाना चाहिए. इसका इस्तेमाल सिर्फ़ डिवाइस के अनलॉक होने पर ही किया जा सकता है.
डिबग रैमडिस्क को जनरेट नहीं किया जाएगा या इन डिवाइसों को अपग्रेड करने के लिए इस्तेमाल नहीं किया जाएगा:
BOARD_BUILD_SYSTEM_ROOT_IMAGE
trueskip_initramfs
को kernel कमांड लाइन में
Android 12 जीएसआई
Android 12 जीएसआई के साथ डीबग रॅमडिस्क का इस्तेमाल करने के लिए, किसी अन्य निर्देश की ज़रूरत नहीं है.
29/09/2021 से, डीबग रैमडिस्क को अब repack_bootimg
टूल की मदद से अपडेट करने की ज़रूरत नहीं है. SGR1.210929.001 (7777720)
के बाद का Android 12 GSI बिल्ड, अपने system.img
में अप-टू-डेट userdebug_plat_sepolicy.cil
फ़ाइल को शामिल करता है और डीबग रैमडिस्क से userdebug_plat_sepolicy.cil
को अनदेखा करता है. देखें
इसके लिए CLs
विवरण.
Android 11 GSI
boot-debug.img
या vendor_boot-debug.img
का इस्तेमाल करने पर, boot-debug.img
या vendor_boot-debug.img
के डीबग
रैमडिस्क में मौजूद userdebug_plat_sepolicy.cil
फ़ाइल से, सिस्टम की सेक्योरिटी नीति लोड हो जाती है. GSI इमेज को बूट करने के लिए, कृपया android11-gsi
शाखा से, sepolicy में किए गए अप-टू-डेट बदलावों को हमेशा शामिल करें. इससे, boot-debug.img
या vendor_boot-debug.img
को फिर से बनाया जा सकेगा.
इसके अलावा, repack_bootimg
टूल का इस्तेमाल करके, अपडेट की गई जीएसआई सेपॉलिसी के साथ boot-debug.img
या vendor_boot-debug.img
को फिर से बनाया जा सकता है.
डीबग करने के लिए इस्तेमाल होने वाले रैम डिस्क को फिर से पैक करना
boot-debug.img
को फिर से बनाने के लिए, sepolicy में बदलाव करने के बजाय, पार्टनर repack_bootimg
का इस्तेमाल करके, जीएसआई की sepolicy फ़ाइल को boot-debug.img
(या अगर डिवाइस GKI का इस्तेमाल करता है, तो vendor_boot-debug.img
) में अपडेट कर सकते हैं.
इसका तरीका यहां बताया गया है:
otatools.zip
से डाउनलोड करें https://ci.android.com. हमारा सुझाव है कि आपaosp_arm64-userdebug
के बिल्ड आर्टफ़ैक्ट से डाउनलोड करेंaosp-main
को.repack_bootimg
के लिए, प्रोसेस करने का एनवायरमेंट सेट अप करें:unzip otatools.zip -d otatools
export PATH="${PWD}/otatools/bin:${PATH}"
repack_bootimg --help
userdebug_plat_sepolicy.cil
डाउनलोड करें या आपको जीएसआई बिल्ड सेboot-with-debug-ramdisk-${KERNEL_VERSION}.img
मिला है का उपयोग करके. उदाहरण के लिए, अगरRJR1.211020.001 (7840830)
से arm64 GSI का इस्तेमाल किया जा रहा है, तो https://ci.android.com/builds/submitted/7840830/aosp_arm64-user/latest से डाउनलोड करें.boot-debug.img
याvendor_boot-debug.img
डिवाइस को इससे अपडेट करें:userdebug_plat_sepolicy.cil
:repack_bootimg --local --dst_bootimg boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
# If using GKI
repack_bootimg --local --dst_bootimg vendor_boot-debug.img \ --ramdisk_add userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
boot-with-debug-ramdisk-${KERNEL_VERSION}.img
के साथ:repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
# If using GKI
repack_bootimg --src_bootimg boot-with-debug-ramdisk-5.4.img \ --dst_bootimg vendor_boot-debug.img \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil \ --ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
डिवाइस के कॉन्फ़िगरेशन के हिसाब से,
--ramdisk_add
के आर्ग्युमेंट में बदलाव किया जा सकता है. ज़्यादा जानकारी के लिए, अगला सेक्शन देखें.
उपयोगकर्ता डीबग sepolicy का पाथ
ऊपर दी गई repack_bootimg
फ़ाइल, userdebug_plat_sepolicy.cil
--src_bootimg
की रैम डिस्क और --dst_bootimg
की रैम डिस्क. हालांकि, अलग-अलग Android वर्शन में, डीबग रैमडिस्क में मौजूद पाथ अलग-अलग हो सकता है. Android 10 और 11 में, kernel कमांड लाइन में androidboot.force_normal_boot=1
वाले डिवाइसों के लिए पाथ first_stage_ramdisk/userdebug_plat_sepolicy.cil
होता है. इसके अलावा, पाथ userdebug_plat_sepolicy.cil
हो सकता है.
यह देखने के लिए कि androidboot.force_normal_boot
है या नहीं, यहां दिया गया कमांड चलाएं
कर्नेल कमांड लाइन में:
adb root
adb shell cat /proc/cmdline | grep force_normal_boot
Android 12 और उसके बाद के वर्शन में, डीबग का पाथ
ramdisk हमेशा userdebug_plat_sepolicy.cil
होती है, भले ही वह मौजूद हो
androidboot.force_normal_boot=1
कर्नेल कमांड लाइन में. नीचे दिए गए
टेबल में, Android के अलग-अलग वर्शन के डीबग रैम डिस्क के पाथ दिखाए गए हैं.
डीबग इमेज | Android 10 | Android 11 | Android 12 |
---|---|---|---|
जीकेआई बूट-विद-debug-ramdisk-${KERNEL_VERSION}.img | लागू नहीं | first_stage_ramdisk/userdebug_plat_sepolicy.cil |
userdebug_plat_sepolicy.cil |
डिवाइस के लिए बूट-debug.img | यह force_normal_boot पर निर्भर करता है | यह force_normal_boot पर निर्भर करता है | userdebug_plat_sepolicy.cil |
डिवाइस के हिसाब से vendor_boot-debug.img | लागू नहीं | यह force_normal_boot पर निर्भर करता है | userdebug_plat_sepolicy.cil |
--ramdisk_add
का इस्तेमाल करके, अलग-अलग पाथ से फ़ाइलों को कॉपी किया जा सकता है.
src_path:dst_path
जोड़े की सूची. उदाहरण के लिए, यह कमांड, Android 11 boot-with-debug-ramdisk-5.4.img
से फ़ाइल first_stage_ramdisk/userdebug_plat_sepolicy.cil
को कॉपी करके, Android 11 vendor_boot-debug.img
में first_stage_ramdisk/userdebug_plat_sepolicy.cil
में चिपकाता है.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:first_stage_ramdisk/userdebug_plat_sepolicy.cil
अगर कर्नेल कमांड लाइन में कोई androidboot.force_normal_boot=1
नहीं है, तो
तो गंतव्य पथ को बदलने के लिए कमांड को नीचे दिए गए तरीके से समायोजित करना होगा
userdebug_plat_sepolicy.cil
.
repack_bootimg \
--src_bootimg boot-with-debug-ramdisk-5.4.img \
--dst_bootimg vendor_boot-debug.img \
--ramdisk_add first_stage_ramdisk/userdebug_plat_sepolicy.cil:userdebug_plat_sepolicy.cil
AVB फ़ुटर जोड़ना
अगर --dst_bootimg
को पास की गई इमेज को AVB-चेन वाले सेगमेंट के तौर पर कॉन्फ़िगर किया गया है, तो repack_bootimg
कमांड चलाने के बाद AVB फ़ुटर जोड़ना होगा.
उदाहरण के लिए, repack_bootimg
को चलाने से पहले, यह पता करने के लिए नीचे दिया गया निर्देश चलाएं कि vendor_boot-debug.img
में चेन किया गया AVB फ़ुटर है या नहीं.
avbtool info_image --image vendor_boot-debug.img
अगर इसमें मूल रूप से चेन वाला एवीबी फ़ुटर है, तो repack_bootimg
कमांड चलाने के बाद एवीबी फ़ुटर जोड़ना होगा. vendor_boot-debug.img
पर हस्ताक्षर करने के लिए, किसी भी टेस्ट पासकोड का इस्तेमाल किया जा सकता है. ऐसा इसलिए है, क्योंकि डिबग रैमडिस्क का इस्तेमाल सिर्फ़ तब किया जा सकता है, जब डिवाइस अनलॉक हो. इससे boot
या vendor_boot
पार्टीशन पर, रिलीज़ पासकोड से हस्ताक्षर की गई इमेज का इस्तेमाल किया जा सकता है.
avbtool add_hash_footer --partition_name vendor_boot \
--partition_size 100663296 \
--algorithm SHA256_RSA4096 \
--key otatools/external/avb/test/data/testkey_rsa4096.pem \
--image vendor_boot-debug.img