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", "cameras": [ { "num_physical": 3, "lens_facing": "back" }, { "num_physical": 2, "lens_facing": "front" } ], "uiccs": [ { "eid": "89033023427100000000007982221521", "removable": false, "physical_slot_index": 0 }, { "removable": true, "physical_slot_index": 1 } ] }factory_reset_protection-এর মানtrue-এ সেট করা থাকলে, ডিভাইস সুরক্ষিত থাকে এবং রিসেট করা যায় না। ডিভাইস রিসেট করা না গেলে, সেটি মূল্যায়ন করা যাবে না।camerasএবংuiccsফিল্ড Android 17 বা এর পরের যেকোনও ভার্সনে উপলভ্য।
Android OS স্টেট শনাক্ত করা
Android অপারেটিং সিস্টেমের অবস্থা সম্পর্কে তথ্য সংগ্রহ করতে, যেমন এটি অনুমোদিত বিল্ড কিনা, এইসব ধাপ অনুসরণ করুন:
- ওয়ার্কস্টেশনে ডিভাইসটি প্লাগ করুন।
- ডিভাইসে ইন্টারনেট কানেকশন আছে কিনা তা নিশ্চিত করুন।
ওয়ার্কস্টেশন থেকে, নিম্নলিখিত কমান্ড রান করুন:
adb shell tradeinmode getstatus --challenge CHALLENGECHALLENGE হল র্যান্ডম উপায়ে তৈরি বর্ণসাংখ্যিক স্ট্রিং, যেমন
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_fileCHALLENGE অবশ্যই সেই একই চ্যালেঞ্জ হতে হবে যেটি আপনি অ্যাটেস্টেশন সংক্রান্ত তথ্য পাওয়ার জন্য ব্যবহার করেছেন।
আপনি যদি ২ নম্বর ধাপের আউটপুট 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 সিরিয়াল নম্বরের
বৈধতার মতো মূল অপারেটিং সিস্টেমের তথ্য
শনাক্ত করুন।
পাওয়ার বন্ধ করা
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 যোগ করতে পারবেন। যেমন, এখানে getstatus-এর সাথে wait-until-ready চেইন করা আছে:
adb shell tradeinmode wait-until-ready getstatus