স্কোপড ভেন্ডর লগিং বাস্তবায়ন করা

Android 11 একটি নতুন HAL, IDumpstateDevice (সংস্করণ 1.1) যোগ করেছে। এই HAL নতুন পদ্ধতিগুলিকে আরও শক্তভাবে বিক্রেতা লগগুলিতে উন্মুক্ত করে যা স্ট্যান্ডার্ড বাগ রিপোর্টে অন্তর্ভুক্ত করা হয়, সেইসাথে ব্যবহারকারী বিল্ডগুলিকে বিক্রেতা লগিং চালু এবং বন্ধ করার অনুমতি দেয় (ব্যবহারকারী বিল্ডগুলির জন্য ডিফল্ট বন্ধ থাকে)। এটি বিশেষ ধরনের বাগ রিপোর্টে কী অন্তর্ভুক্ত করা হয় তার উপর OEM-কে আরও নিয়ন্ত্রণ দেয়।

এই বৈশিষ্ট্যটি OEM-কে প্রভাবিত করে যদি তারা এই ঐচ্ছিক HAL বাস্তবায়ন করতে চায়। SoCs প্রভাবিত হতে পারে, OEM এই HAL এর সাথে কী প্রকাশ করতে বেছে নেয় তার উপর নির্ভর করে। বাহকদের জন্য কোন প্রত্যাশিত প্রভাব নেই।

আপনি বাগ রিপোর্টে যা অন্তর্ভুক্ত করেন তা নির্ভর করে আপনি ডিবাগিংয়ের জন্য কোন তথ্য প্রাসঙ্গিক মনে করেন তার উপর, তবে সাধারণত আরও ভারবোস ভাল।

উদাহরণ এবং উৎস

IDumpstateDevice-এর (অপ্রচলিত) 1.0 সংস্করণের একটি ডিফল্ট বাস্তবায়ন রয়েছে যা ডাম্পস্টেট ইউটিল লাইব্রেরি ব্যবহার করার একটি উদাহরণ দেখায়: 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)।

ডাম্পস্টেট HAL বাস্তবায়ন ঐচ্ছিক। অ্যান্ড্রয়েড 11-এর সাথে লঞ্চ হওয়া সমস্ত নতুন ডিভাইসগুলিকে অবশ্যই IDumpstateDevice 1.1 প্রয়োগ করতে হবে যদি তারা Dumpstate HAL প্রয়োগ করে। যে ডিভাইসগুলি ইতিমধ্যেই Android 11-এর আগে IDumpstateDevice 1.0 প্রয়োগ করেছে সেগুলিকে 1.1-এ আপগ্রেড করা তুলনামূলকভাবে সহজ হওয়া উচিত এবং এটি করার জন্য দৃঢ়ভাবে সুপারিশ করা হয়, কারণ এটি বাগ রিপোর্টে অন্তর্ভুক্ত বহিরাগত ব্যক্তিগত তথ্যের পরিমাণকে ব্যাপকভাবে হ্রাস করে।

এই বৈশিষ্ট্যটি frameworks/native/cmds/dumpstate অধীনে অবস্থিত Android 11-এর সাথে অন্তর্ভুক্ত মূল ডাম্পস্টেট পরিবর্তনের উপর নির্ভর করে।

এই HAL বাস্তবায়নের জন্য কিছু নির্দিষ্ট সিস্টেমের বৈশিষ্ট্য, ফাইল, ইত্যাদিতে কিছু SEP-নীতি পরিবর্তনের প্রয়োজন হবে যাতে জিনিসগুলি সম্পূর্ণরূপে কাজ করে, এবং বাগ রিপোর্টে সমস্ত প্রাসঙ্গিক তথ্য ডাম্প করার জন্য বিক্রেতাদের সাথে সমন্বয় প্রয়োজন।

কাস্টমাইজেশন

ডিভাইস ব্যবহারকারী ডেভেলপার সেটিংস ব্যবহার করে ভেন্ডর লগিং অন বা অফ টগল করতে পারেন। এটি বন্ধ হয়ে গেলে, dumpstateBoard_1_1 এখনও OEM দ্বারা নির্ধারিত ন্যূনতম প্রয়োজনীয় তথ্য আউটপুট করতে পারে। বিক্রেতা লগিং বন্ধ করলে IDumpstateDevice::dumpstateBoard একটি বাগ রিপোর্টে শুধুমাত্র প্রয়োজনীয় তথ্য যোগ করে, এটি চালু করার সময় OEM যে তথ্য বেছে নেয় তা অন্তর্ভুক্ত করে।

আপনি dumpstate.cpp পরিবর্তন করতে পারেন (যাকে IDumpstateDevice HAL পদ্ধতি বলা হয়), উদাহরণস্বরূপ, dumpstateBoard সম্পূর্ণ করার জন্য প্রদত্ত সময়সীমা বাড়ানোর জন্য। যাইহোক, dumpstate.cpp এর মূল যুক্তি অপরিবর্তিত থাকা উচিত।

টাইমআউট যে কোনো মান হতে পারে, কিন্তু একটি বাগ রিপোর্ট সম্পূর্ণ হতে যে সময় লাগে তা নাটকীয়ভাবে বাড়ানো উচিত নয়। বিশেষ করে, DumpstateMode::CONNECTIVITY অত্যন্ত সময় সংবেদনশীল এবং সমস্ত প্রাসঙ্গিক মডেম/Wi-Fi/নেটওয়ার্কিং লগ সংগ্রহ করার জন্য যত দ্রুত সম্ভব চালানো প্রয়োজন।

বৈধতা

IDumpstateDevice বাস্তবায়নের জন্য একটি VTS পরীক্ষা আছে এবং সাধারণ BugreportManager কার্যকারিতার জন্য কার্যকরী ইউনিট পরীক্ষা রয়েছে।

প্রস্তাবিত ম্যানুয়াল টেস্ট কেস হল frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java