Android 16 (या इसके बाद के वर्शन) वाले डिवाइस के बूट होने पर, उसे ट्रेड-इन मोड में डाल दिया जाता है. इस मोड में, adb का इस्तेमाल करके डिवाइस से कनेक्ट किया जा सकता है. साथ ही, डिवाइस के बारे में जानकारी पाने के लिए, किसी कमांड का इस्तेमाल किया जा सकता है. डिवाइस को ट्रेड-इन मोड में चालू करने के लिए, ये शर्तें पूरी होनी चाहिए:
- डिवाइस को फ़ैक्ट्री रीसेट किया जाना चाहिए.
- डिवाइस में मोबाइल डेटा सेवा चालू नहीं होनी चाहिए.
- डिवाइस में इंटरनेट कनेक्शन या कोई खाता नहीं होना चाहिए.
- डिवाइस पर ऐसा बिल्ड चल रहा हो जिसे डीबग नहीं किया जा सकता.
सेटअप विज़र्ड को पूरा करने के बाद, डिवाइस को जांच मोड में रखा जाता है. इस मोड में, adb कमांड की पूरी रेंज इस्तेमाल की जा सकती है और डिवाइस पर अन्य गड़बड़ी की जांच की जा सकती है.
स्वास्थ्य से जुड़ी सामान्य जानकारी इकट्ठा करना
अपने डिवाइस की परफ़ॉर्मेंस से जुड़ी सामान्य जानकारी इकट्ठा करने के लिए, यह तरीका अपनाएं. जैसे, बैटरी, स्टोरेज की परफ़ॉर्मेंस, और इंटरनैशनल मोबाइल इक्विपमेंट आइडेंटिटी (IMEI) नंबर की जानकारी:
पक्का करें कि आपका डिवाइस, ट्रेड-इन मोड की ज़रूरी शर्तें पूरी करता हो.
डिवाइस को वर्कस्टेशन में प्लग करें.
वर्कस्टेशन से, यह कमांड चलाएं:
adb shell tradeinmode getstatus
यह कमांड, डिवाइस की जानकारी वाला JSON ऑब्जेक्ट दिखाता है. Pixel 7 से मिले आउटपुट का उदाहरण यहां दिया गया है:
{ "battery": { "cycle_count": 16, "health": 100, "state": 2, "manufacturing_date": 1653004800, "first_usage_date": 0 }, "storage": { "useful_lifetime_remaining": 99, "capacity_bytes": "128000000000" }, "launch_level": 33, "locks": { "factory_reset_protection": false }, "product": { "brand": "google", "device": "panther", "manufacturer": "Google", "model": "Pixel 7", "name": "panther" }, "imeis": [ "353644930127905", "353644930127913" ], "serial": "26061FDH2000AP" }
अगर
factory_reset_protection
कोtrue
पर सेट किया गया है, तो इसका मतलब है कि डिवाइस सुरक्षित है और उसे रीसेट नहीं किया जा सकता. अगर डिवाइस को रीसेट नहीं किया जा सकता, तो उसका आकलन नहीं किया जा सकता.
Android OS की स्थिति की पहचान करना
Android ऑपरेटिंग सिस्टम की स्थिति के बारे में जानकारी इकट्ठा करने के लिए, यह तरीका अपनाएं: उदाहरण के लिए, यह पता लगाना कि यह मंज़ूरी पा चुका है या नहीं
- डिवाइस को वर्कस्टेशन में प्लग करें.
- पक्का करें कि डिवाइस इंटरनेट से कनेक्ट हो.
वर्कस्टेशन से, यह कमांड चलाएं:
adb shell tradeinmode getstatus --challenge CHALLENGE
CHALLENGE, रैंडम तौर पर जनरेट की गई अक्षर और संख्या वाली स्ट्रिंग होती है, जैसे कि
p4tRsuHjWB
. यह कमांड, JSON फ़ॉर्मैट में जानकारी दिखाता है. इसमें, पुष्टि करने वाला एक फ़ील्ड होता है, जिसमें base64 में पुष्टि करने का रिकॉर्ड होता है.यह कमांड,
getstatus
कमांड से मिली जानकारी में पुष्टि की जानकारी जोड़ता है. पुष्टि करने की जानकारी इस तरह दिखती है:"attestation": { "certificates": "AAAC\/DCCAvgwggKeoAMCAQICAQEwCgYIKoZIzj0EAwIwOTEMMAoGA1UEDAwDVEVFMSkwJwYDVQQF\n EyBmOTIyZTZhOWFkZmRjNjU0NmZiOWU1YmNlNzhiMDUzMzAeFw03MDAxMDEwMDAwMDBaFw00ODAx\n MDEwMDAwMDBaMB8xHTAbBgNVBAMTFEFuZHJvaWQgS2V5c3RvcmUgS2V5MFkwEwYHKoZIzj0CAQYI\n KoZIzj0DAQcDQgAEz9un3HpDJQy\/j7l0bWzw6WnRRMjFjvu6rg7+dCzFW93u+otCPK4VjmSjyYw ... }
Android 16 या इसके बाद के वर्शन के साथ लॉन्च होने वाले डिवाइसों के लिए, पुष्टि करने का रिकॉर्ड बनाने के लिए इंटरनेट कनेक्शन ज़रूरी है. पुष्टि करने के लिए, कनेक्शन कॉन्फ़िगर करने के बाद, जांच करने वाले मोड का इस्तेमाल करें. ऐसा इसलिए, क्योंकि सेटअप विज़र्ड में पुष्टि करने पर, यह काम पूरा नहीं हो पाता.
पुष्टि करने से जुड़ी जानकारी को पार्स करने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
- AOSP को बिल्ड करते समय बनाए गए
parse_tim_attestation
टूल का इस्तेमाल करें. - Android पासकोड की पुष्टि करने वाली लाइब्रेरी का इस्तेमाल करें.
उदाहरण के लिए,
parse_tim_attestation
टूल का इस्तेमाल करने के लिए, यह चलाएं:parse_tim_attestation --challenge CHALLENGE output_file
CHALLENGE वही होना चाहिए जिसका इस्तेमाल आपने पुष्टि की जानकारी पाने के लिए किया था.
अगर आपने दूसरे चरण का आउटपुट किसी output_file में सेव किया है, तो उसका फ़ाइल नाम दिया जा सकता है. ऐसा न करने पर, पुष्टि की जानकारी को स्टैंडर्ड इनपुट (stdin) से पढ़ा जाता है.
Android OS की जानकारी वाला JSON ऑब्जेक्ट दिखाया जाता है:
"record": { "keymaster_version": "400", "keymaster_security_level": "TRUSTED_ENVIRONMENT", "attributes": { "imeis": [ "353644930125669", "353644930125677" ], "vendor_patch_level": 20250305, "serial": "26161FDH2000NV", "os_version": 160000, "source": "hardware", "boot_patch_level": 20250305 }, "bootloader_locked": false, "verified_boot": false, "security_level": "TRUSTED_ENVIRONMENT" }, "certificate": "verified", "trustworthy": "verified boot disabled"
अगर
trustworthy
,yes
के बराबर है, तो ऑपरेटिंग सिस्टम को भरोसेमंद माना जाता है. इसका मतलब है कि बिल्ड पर हस्ताक्षर किया गया है और IMEI नंबर फ़र्ज़ी नहीं है.ध्यान दें कि डिवाइस और होस्ट, दोनों पर पुष्टि करने के लिए इंटरनेट कनेक्शन होना ज़रूरी है.
- AOSP को बिल्ड करते समय बनाए गए
ट्रेड-इन मोड को टेस्ट करना
डेवलपमेंट के दौरान, आपको अपने डिवाइस की जांच करनी चाहिए, ताकि यह पक्का किया जा सके कि आपका डिवाइस, सही तरीके से ट्रेड-इन मोड में जा रहा है और उससे बाहर आ रहा है. अपने डिवाइस पर, ट्रेड-इन मोड में जाने और उससे बाहर निकलने की सुविधा की जांच करने के लिए, यह तरीका अपनाएं:
डिवाइस को वर्कस्टेशन में प्लग करें.
वर्कस्टेशन से, डिवाइस को ट्रेड-इन मोड में रीबूट करें:
adb shell tradeinmode testing start
डिवाइस रीबूट हो जाता है और ट्रेड-इन मोड में चला जाता है. ट्रेड-इन मोड में जाने के बाद,
adb shell tradein
से जुड़े किसी भी निर्देश का इस्तेमाल किया जा सकता है.पक्का करें कि ट्रेड-इन मोड चालू हो:
adb shell tradeinmode testing status
डिवाइस से पता चलता है कि ट्रेड-इन मोड की जांच चालू है.
ट्रेड-इन मोड से बाहर निकलें और adb का पूरा ऐक्सेस वापस पाएं:
adb shell tradeinmode testing stop
कस्टम सेटअप विज़र्ड इंटिग्रेशन
evaluate
कमांड, पसंद के मुताबिक सेटअप विज़र्ड वाले डिवाइसों पर तब तक काम नहीं करेगा, जब तक ब्रॉडकास्ट रिसीवर नहीं जोड़ा जाता. कस्टम सेटअप विज़र्ड ऐप्लिकेशन में ब्रॉडकास्ट रिसीवर जोड़ने के लिए:
ऐप्लिकेशन के मेनिफ़ेस्ट में रिसीवर की जानकारी दें:
<receiver android:name=".EnterEvaluationModeReceiver" android:exported="true" android:permission="android.permission.ENTER_TRADE_IN_MODE"> <intent-filter> <action android:name="com.google.android.setupwizard.ENTER_TRADE_IN_MODE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>
इस तरह का ब्रॉडकास्ट रिसीवर बनाएं:
public class EnterEvaluationModeReceiver extends BroadcastReceiver { private static final String TRADE_IN_MODE_PROPERTY = "persist.adb.tradeinmode"; private static final int TIM_EVALUATION_MODE = 2; @Override public void onReceive(Context context, Intent intent) { if (SystemProperties.getInt(TRADE_IN_MODE_PROPERTY, 0) != TIM_EVALUATION_MODE) { return; } // Check if any factory reset protection is enabled. // Provision the device. // End the setup wizard activity. } }
ईमेल पाने वाले को यह तरीका अपनाना होगा.
- देखें कि
persist.adb.tradeinmode
,2
है. - देखें कि फ़ैक्ट्री रीसेट करने से जुड़ी सुरक्षा या चोरी से बचाने के लिए कोई लॉक तो नहीं लगा है.
- डिवाइस के कॉम्पोनेंट से जुड़े डेटा को सेट करें. पक्का करें कि
Settings.Secure.USER_SETUP_COMPLETE
औरSettings.Global.DEVICE_PROVISIONED
,1
हों. - सेटअप विज़र्ड की गतिविधि को खारिज करें, ताकि डिवाइस होम स्क्रीन पर दिखे.
ट्रेड-इन मोड का रेफ़रंस
इस सेक्शन में, ट्रेड-इन मोड के सभी निर्देशों के बारे में बताया गया है.
आकलन करना
adb shell tradeinmode evaluate
सेटअप विज़र्ड को स्किप करके, जांच मोड में प्रवेश करता है. ऐसा लगता है कि उपयोगकर्ता ने सेटअप की हर स्क्रीन को मैन्युअल तरीके से स्किप किया है.
सेटअप विज़र्ड को स्किप करने के बाद, डिवाइस पर अतिरिक्त ADB निर्देश या फ़ंक्शनल टेस्ट चलाए जा सकते हैं.
जांच मोड से बाहर निकलने के बाद, फ़ैक्ट्री रीसेट होता है. इससे यह पक्का होता है कि टेस्टिंग के दौरान मिले आर्टफ़ैक्ट, गलती से किसी ग्राहक को ट्रांसफ़र न हो जाएं.
getstatus
adb shell tradeinmode getstatus [--challenge CHALLENGE]
डिवाइस के लिए, सिस्टम की जानकारी के साथ एक JSON स्ट्रिंग दिखाता है. इसमें बैटरी और स्टोरेज की परफ़ॉर्मेंस की जानकारी भी शामिल होती है.
पुष्टि करने के लिए एक और फ़ील्ड दिखाने के लिए, --challenge
पैरामीटर के बाद, अनियमित क्रम में जनरेट की गई अक्षरों और अंकों वाली चैलेंज कुंजी शामिल करें. ऑपरेटिंग सिस्टम की मुख्य जानकारी की पहचान करने के लिए, इस जवाब को पार्स करें. जैसे, बूटलोडर की स्थिति (लॉक या अनलॉक) और IMEI सीरियल नंबर की पुष्टि.
poweroff
adb shell tradeinmode poweroff
डिवाइस को बंद कर देता है. जब डिवाइस की जांच या उसका आकलन न किया जा रहा हो, तब बैटरी खर्च होने से रोकने के लिए इस निर्देश का इस्तेमाल करें.
फिर से चालू करो
adb shell tradeinmode reboot
डिवाइस को रीबूट करता है.
टेस्टिंग शुरू करना
adb shell tradeinmode testing start
यह डिवाइस को ट्रेड-इन मोड में रीबूट करता है. यह निर्देश सिर्फ़ सेटअप विज़र्ड में काम करता है. यह निर्देश देने पर, अनुमति को बायपास कर दिया जाता है और सिर्फ़ ट्रैड-इन मोड के निर्देश काम करते हैं.
यह निर्देश सिर्फ़ उन डिवाइसों पर काम करता है जिनमें userdebug
, eng
या user
बिल्ड हैं. user
बिल्ड में ro=debuggable=1
सेट होना चाहिए.
जांच की स्थिति
adb shell tradeinmode testing status
इससे पता चलता है कि ट्रेड-इन मोड की टेस्टिंग चालू है या नहीं.
यह निर्देश सिर्फ़ उन डिवाइसों पर काम करता है जिनमें userdebug
, eng
या user
बिल्ड हैं. user
बिल्ड में ro=debuggable=1
सेट होना चाहिए.
जांच बंद करना
adb shell tradeinmode testing stop
डिवाइस को उस मोड में वापस ले जाता है जिसमें वह adb shell tradeinmode testing start
कमांड देने से पहले था.
यह निर्देश सिर्फ़ उन डिवाइसों पर काम करता है जिनमें userdebug
, eng
या user
बिल्ड हैं. user
बिल्ड में ro=debuggable=1
सेट होना चाहिए.
डिवाइस का डेटा मिटाने की सुविधा
adb shell tradeinmode testing wipe
डिवाइस को फ़ैक्ट्री सेटिंग पर रीसेट करता है.
यह निर्देश सिर्फ़ उन डिवाइसों पर काम करता है जिनमें userdebug
, eng
या user
बिल्ड हैं. user
बिल्ड में ro=debuggable=1
सेट होना चाहिए.
wait-until-ready
adb shell tradeinmode wait-until-ready
सिस्टम की सेवाएं तैयार होने तक इंतज़ार करता है, ताकि ट्रेड-इन मोड पूरी तरह से काम कर सके. अपने ऑटोमेशन में इस निर्देश का इस्तेमाल करके, यह पक्का करें कि ट्रेड-इन मोड के निर्देश काम कर रहे हों.
ट्रेड-इन मोड के अन्य निर्देशों से पहले wait-until-ready
जोड़ा जा सकता है. उदाहरण के लिए, यहां wait-until-ready
को getstatus
से चेन किया गया है:
adb shell tradeinmode wait-until-ready getstatus