অ্যান্ড্রয়েড ১১-এ একটি নতুন HAL, IDumpstateDevice (সংস্করণ ১.১) যুক্ত করা হয়েছে। এই HAL-টি সাধারণ বাগ রিপোর্টে অন্তর্ভুক্ত ভেন্ডর লগগুলোকে আরও সুনির্দিষ্টভাবে সীমাবদ্ধ করার জন্য নতুন মেথড নিয়ে এসেছে। এছাড়াও, এটি ইউজার বিল্ডগুলোকে ভেন্ডর লগিং চালু বা বন্ধ করার সুযোগ দেয় (ইউজার বিল্ডের জন্য ডিফল্টভাবে এটি বন্ধ থাকে)। এর ফলে, নির্দিষ্ট ধরনের বাগ রিপোর্টে কী অন্তর্ভুক্ত হবে, সে বিষয়ে OEM-রা আরও বেশি নিয়ন্ত্রণ লাভ করে।
এই ফিচারটি OEM-দের প্রভাবিত করে, যদি তারা এই ঐচ্ছিক HAL-টি প্রয়োগ করার সিদ্ধান্ত নেয়। OEM এই HAL-এর মাধ্যমে কী প্রকাশ করতে চায়, তার উপর নির্ভর করে SoC-গুলোও প্রভাবিত হতে পারে। ক্যারিয়ারদের উপর এর কোনো প্রভাব পড়ার সম্ভাবনা নেই।
বাগ রিপোর্টে আপনি কী অন্তর্ভুক্ত করবেন তা নির্ভর করে ডিবাগিংয়ের জন্য কোন তথ্যগুলো প্রাসঙ্গিক বলে আপনি মনে করেন তার উপর, তবে সাধারণত যত বিশদ হবে ততই ভালো।
উদাহরণ এবং উৎস
IDumpstateDevice-এর (অপ্রচলিত) 1.0 সংস্করণের একটি ডিফল্ট ইমপ্লিমেন্টেশন রয়েছে, যেখানে dumpstate ইউটিল লাইব্রেরি ব্যবহারের একটি উদাহরণ দেখানো হয়েছে: frameworks/native/cmds/dumpstate/DumpstateUtil.h । এছাড়াও 1.1 HAL-এর একটি Cuttlefish ইমপ্লিমেন্টেশন রয়েছে: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* ।
সোর্স কোডটি এখানে অবস্থিত:
- HAL ফাইলগুলো
hardware/interfaces/dumpstate/1.1/অধীনে রয়েছে। - বাগ রিপোর্টের বিষয়বস্তু নিয়ন্ত্রণকারী ডাম্পস্টেট নেটিভ কোডটি
frameworks/native/cmds/dumpstate/অধীনে রয়েছে।
বাস্তবায়ন
এই HAL প্রয়োগ করতে, android.hardware.dumpstate@1.1::IDumpstateDevice HAL ইন্টারফেসটি ইমপ্লিমেন্ট করুন। DumpstateMode অনেক সম্ভাব্য মান রয়েছে, কিন্তু একটিমাত্র ডিভাইস দ্বারা সবগুলো সমর্থিত হওয়ার সম্ভাবনা কম (উদাহরণস্বরূপ, Wear OS নয় এমন ডিভাইসের জন্য WEAR)।
ডাম্পস্টেট এইচএএল (Dumpstate HAL) প্রয়োগ করা ঐচ্ছিক। অ্যান্ড্রয়েড ১১ সহ লঞ্চ হওয়া সমস্ত নতুন ডিভাইসকে অবশ্যই IDumpstateDevice 1.1 প্রয়োগ করতে হবে, যদি তারা ডাম্পস্টেট এইচএএল প্রয়োগ করে থাকে। যে ডিভাইসগুলি অ্যান্ড্রয়েড ১১-এর আগে থেকেই IDumpstateDevice 1.0 প্রয়োগ করেছে, সেগুলিকে 1.1-এ আপগ্রেড করা তুলনামূলকভাবে সহজ হওয়া উচিত এবং এটি করার জন্য দৃঢ়ভাবে সুপারিশ করা হচ্ছে, কারণ এটি বাগ রিপোর্টে অন্তর্ভুক্ত অপ্রয়োজনীয় ব্যক্তিগত তথ্যের পরিমাণ ব্যাপকভাবে হ্রাস করে।
এই ফিচারটি অ্যান্ড্রয়েড ১১-এর সাথে অন্তর্ভুক্ত কোর ডাম্পস্টেট পরিবর্তনের উপর নির্ভরশীল, যা frameworks/native/cmds/dumpstate ফোল্ডারে অবস্থিত।
এই HAL বাস্তবায়নের জন্য সম্ভবত কিছু সিস্টেম প্রোপার্টি, ফাইল ইত্যাদিতে SEPolicy-এর পরিবর্তন আনতে হবে যাতে সবকিছু পুরোপুরি কাজ করে, এবং বাগ রিপোর্টে সমস্ত প্রাসঙ্গিক তথ্য জমা দেওয়ার জন্য ভেন্ডরদের সাথে সমন্বয়ের প্রয়োজন হবে।
কাস্টমাইজেশন
ডিভাইস ব্যবহারকারী ডেভেলপার সেটিংস ব্যবহার করে ভেন্ডর লগিং চালু বা বন্ধ করতে পারেন। এটি বন্ধ করা থাকলে, dumpstateBoard_1_1 তখনও OEM দ্বারা নির্ধারিত ন্যূনতম প্রয়োজনীয় তথ্য আউটপুট করতে পারে। ভেন্ডর লগিং বন্ধ করলে IDumpstateDevice::dumpstateBoard একটি বাগ রিপোর্টে শুধুমাত্র প্রয়োজনীয় তথ্য যোগ করে, আর এটি চালু করলে OEM-এর পছন্দের যেকোনো তথ্য অন্তর্ভুক্ত করে।
উদাহরণস্বরূপ, dumpstateBoard এর কাজ শেষ হওয়ার জন্য দেওয়া টাইমআউট বাড়ানোর জন্য আপনি dumpstate.cpp (যা IDumpstateDevice HAL মেথডগুলোকে কল করে) পরিবর্তন করতে পারেন। তবে, dumpstate.cpp এর মূল লজিক অপরিবর্তিত থাকা উচিত।
টাইমআউটের মান যেকোনো হতে পারে, কিন্তু এর কারণে বাগ রিপোর্ট সম্পূর্ণ হতে লাগা সময় যেন উল্লেখযোগ্যভাবে বেড়ে না যায়। বিশেষ করে, DumpstateMode::CONNECTIVITY অত্যন্ত সময়-সংবেদনশীল এবং সমস্ত প্রাসঙ্গিক মডেম/ওয়াই-ফাই/নেটওয়ার্কিং লগ সংগ্রহ করার জন্য এটিকে যত দ্রুত সম্ভব চালানো প্রয়োজন।
বৈধতা
IDumpstateDevice ইমপ্লিমেন্টেশনের জন্য একটি VTS টেস্ট রয়েছে, এবং BugreportManager সাধারণ কার্যকারিতার জন্য ফাংশনাল ইউনিট টেস্ট রয়েছে।
প্রস্তাবিত ম্যানুয়াল টেস্ট কেসটি হলো frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java ।