Android 12 এ DebugFS ব্যবহার করুন

V5.4-এর থেকে বেশি কার্নেল সংস্করণ ব্যবহার করে Android 12-এর সাথে চালু হওয়া ডিভাইসগুলিকে GKI কার্নেলের সাথে শিপ করতে হবে। যাতে অংশীদাররা GKI কার্নেলে ডেভেলপ করার সময় ইউজারডিবাগ বিল্ডে DebugFS অ্যাক্সেস করতে পারে, কার্নেল কনফিগারেশন CONFIG_DEBUG_FS GKI defconfig-এ সক্রিয় করা আছে। অ্যান্ড্রয়েড 12-এ লঞ্চ হওয়া ডিভাইসগুলির জন্য ব্যবহারকারী বিল্ডে কখনও DebugFS মাউন্ট করবেন না

ইউজার বিল্ডের তুলনায় ইউজারডবাগ বিল্ডের পরীক্ষা কভারেজ ভালো থাকে এবং পুরো বিকাশ চক্র জুড়ে ব্যাপকভাবে পরীক্ষা করা হয়। নিম্নলিখিত পরিকল্পনাটি DebugFS অ্যাক্সেসের ক্ষেত্রে দুটি বিল্ড প্রকারের মধ্যে পার্থক্য কমিয়ে দেয় এবং এই সুবিধাগুলি প্রদান করে:

  • নতুন কার্যকারিতার জন্য DebugFS উপর নির্ভর করে ভুলবশত ব্যবহারকারীর ডিবাগ বিল্ডকে বাধা দেয়
  • নিশ্চিত করে যে ডিবাগএফএস-এর অভাবের কারণে যে কোনও বিদ্যমান কার্যকারিতা ভেঙে গেছে তা বিকাশ চক্রের প্রথম দিকে পরিচিত হয়

Userdebug বিল্ডে Debugfs অ্যাক্সেসগুলি নিম্নরূপ শ্রেণীবদ্ধ করা হয়েছে:

  1. ডিভাইস বুট করার সময় DebugFS ফাইল ইনিশিয়ালাইজেশন, যেমন ডিবাগ ডেটা সংগ্রহ চালু করতে DebugFS এ একটি ফাইলে লেখার অ্যাক্সেস।
  2. Bugreport জেনারেশন: ডাম্পস্টেট এইচএএল DebugFS ফাইল পড়ে যখন dumpstate দ্বারা DumpstateBoard() চালু করা হয়। এই তথ্য বাগ রিপোর্টের অংশ হয়ে ওঠে।
  3. ডিভাইস-নির্দিষ্ট পরীক্ষা এবং বৈধতা.

নিম্নলিখিত সারণী বর্ণনা করে যে এই তিনটি বিভাগের প্রতিটি কীভাবে Android 12-এ সমর্থিত। মনে রাখবেন যে নিম্নলিখিতগুলি শুধুমাত্র userdebug বিল্ডের ক্ষেত্রে প্রযোজ্য কারণ ব্যবহারকারী বিল্ডে DebugFS মাউন্ট করা যায় না।

কেস ব্যবহার করুন অ্যান্ড্রয়েড 12 ইউজারডিবাগ বিল্ড
স্টার্টআপের সময় এক-সময়ের DebugFS ফাইল আরম্ভ । এই অ্যাক্সেস বুট সময় শুধুমাত্র একবার ঘটবে . ডাম্পস্টেট HAL HAL আরম্ভ করার সময় এটি সম্পাদন করে। এটি সক্রিয় করার জন্য, HAL আরম্ভ করার আগে init userdebug বিল্ডে DebugFS মাউন্ট করে। Init ডিভাইসটি বুট করা শেষ হলে DebugFSumount() কল করে।
বাগ রিপোর্ট জেনারেশন : ডাম্পস্টেট HAL DebugFS ফাইলগুলি পড়ে, যা বাগ রিপোর্টের অংশ হয়ে ওঠে। ডাম্পস্টেট ( DumpstateDevice.cpp ) দ্বারা আহ্বান করা হলে DumpstateBoard() এর মধ্যে ডাম্পস্টেট HAL দ্বারা সম্পন্ন হয়। ডাম্পস্টেট টুল (অ্যান্ড্রয়েড ফ্রেমওয়ার্কের অংশ) নিশ্চিত করে যে আহ্বানের সময় DebugFS মাউন্ট হয়।
ডিভাইস-নির্দিষ্ট পরীক্ষা এবং বৈধতা অ্যাডবি রুট এবং শেল। রুট অ্যাক্সেস 1 সহ adb শেল থেকে DebugFS মাউন্ট করুন।

1 রুট অ্যাক্সেস সহ adb shell থেকে DebugFS মাউন্ট করতে, এই কমান্ডটি ব্যবহার করুন:

adb shell mount -t debugfs debugfs /sys/kernel/debug .

প্রয়োজনীয় অংশীদার কর্ম

অংশীদারদের অবশ্যই Android 12 ডিভাইসে এই পরিবর্তনগুলির উপর ভিত্তি করে নিম্নলিখিতগুলি কার্যকর করতে হবে:

  • ডাম্পস্টেট HAL ইনিশিয়ালাইজেশনের সময় DebugFS নোডের সমস্ত বুট টাইম ইনিশিয়ালাইজেশন করুন। এটি কীভাবে করবেন তার একটি উদাহরণের জন্য, DNM দেখুন: DebugFS ফাইলগুলির বুট টাইম আরম্ভ করার উদাহরণ
  • রানটাইম চলাকালীন DebugFS অ্যাক্সেসের অনুমতি দেবেন না। নিম্নলিখিত ব্যতিক্রমগুলি প্রযোজ্য:
    • Bugreport জেনারেশন (ডাম্পস্টেট HAL থেকে আসে)
    • পরীক্ষা এবং বৈধতা ( adb root এবং shell দ্বারা অ্যাক্সেসযোগ্য - নিশ্চিত করুন যে DebugFS প্রথমে মাউন্ট করা হয়েছে)

ইউজারডিবাগ এবং ইং বিল্ডে রিবুট জুড়ে DebugFs মাউন্ট রাখতে বিকাশকারীরা ডিবাগ স্থায়ী সম্পত্তি persist.dbg.keep_debugfs_mounted সেট করতে পারেন।

GTS কমপ্লায়েন্স পরীক্ষা নিশ্চিত করে যে DebugFS ফাইল সিস্টেম ব্যবহারকারী বিল্ডে মাউন্ট করা হয়নি। সেপলিসি neverallow বিবৃতিগুলিকে নিশ্চিত করে না যে Android 12 বা উচ্চতর সংস্করণে লঞ্চ হওয়া ডিভাইসগুলিতে, অননুমোদিত প্রক্রিয়াগুলিকে DebugFs এ অ্যাক্সেস দেওয়া হয় না৷