Mengimplementasikan logging vendor cakupan

Android 11 menambahkan HAL baru, IDumpstateDevice (versi 1.1). HAL ini mengekspos metode baru untuk mempersempit cakupan log vendor yang disertakan dalam laporan bug standar, serta memungkinkan build pengguna mengaktifkan dan menonaktifkan logging vendor (setelan default untuk build pengguna adalah nonaktif). Hal ini memberi OEM kontrol lebih besar atas apa yang disertakan dalam jenis laporan bug tertentu.

Fitur ini memengaruhi OEM jika mereka memilih untuk menerapkan HAL opsional ini. SoC mungkin terpengaruh, bergantung pada apa yang dipilih OEM untuk diekspos dengan HAL ini. Tidak ada dampak yang diharapkan pada operator.

Apa yang Anda sertakan dalam laporan bug bergantung pada informasi yang Anda anggap relevan untuk proses debug, tetapi umumnya semakin detail semakin baik.

Contoh dan sumber

Ada implementasi default dari IDumpstateDevice versi 1.0 (tidak digunakan lagi) yang menunjukkan contoh penggunaan library util dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. Ada juga implementasi Cuttlefish dari HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

Kode sumber terletak di sini:

Penerapan

Untuk menerapkan HAL ini, terapkan antarmuka HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Ada banyak kemungkinan nilai DumpstateMode, tetapi tidak semuanya mungkin didukung oleh satu perangkat (misalnya, WEAR untuk perangkat non-Wear OS).

Penerapan HAL dumpstate bersifat opsional. Semua perangkat baru yang diluncurkan dengan Android 11 HARUS menerapkan IDumpstateDevice 1.1 jika menerapkan HAL Dumpstate. Perangkat yang telah menerapkan IDumpstateDevice 1.0 sebelum Android 11 seharusnya relatif mudah diupgrade ke 1.1, dan sangat direkomendasikan untuk melakukannya, karena hal ini sangat mengurangi jumlah informasi pribadi yang tidak relevan yang disertakan dalam laporan bug.

Fitur ini bergantung pada perubahan dumpstate inti yang juga disertakan dengan Android 11, yang terletak di frameworks/native/cmds/dumpstate.

Penerapan HAL ini kemungkinan akan memerlukan beberapa perubahan SEPolicy pada properti sistem, file, dll. tertentu agar semuanya berfungsi sepenuhnya, dan akan memerlukan koordinasi dengan vendor untuk membuang semua informasi yang relevan ke dalam laporan bug.

Penyesuaian

Pengguna perangkat dapat mengaktifkan atau menonaktifkan logging vendor menggunakan setelan developer. Jika dinonaktifkan, dumpstateBoard_1_1 mungkin masih menampilkan informasi penting minimal seperti yang ditentukan oleh OEM. Menonaktifkan logging vendor akan membuat IDumpstateDevice::dumpstateBoard hanya menambahkan informasi penting ke laporan bug, sedangkan mengaktifkannya akan menyertakan informasi apa pun yang dipilih OEM.

Anda dapat mengubah dumpstate.cpp (yang memanggil metode HAL IDumpstateDevice), misalnya, untuk meningkatkan waktu tunggu yang diberikan agar dumpstateBoard selesai. Namun, logika inti dumpstate.cpp tidak boleh diubah.

Waktu tunggu dapat berupa nilai apa pun, tetapi tidak boleh meningkatkan waktu yang diperlukan laporan bug untuk diselesaikan secara drastis. Secara khusus, DumpstateMode::CONNECTIVITY sangat sensitif terhadap waktu dan harus berjalan secepat mungkin untuk mengumpulkan semua log modem/Wi-Fi/jaringan yang relevan.

Validasi

Ada pengujian VTS untuk implementasi IDumpstateDevice, dan ada pengujian unit fungsional untuk fungsi BugreportManager umum.

Kasus pengujian manual yang direkomendasikan adalah frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.