Android 11 menambahkan HAL baru, yaitu IDumpstateDevice (versi 1.1). HAL ini mengekspos metode baru untuk cakupan log vendor yang lebih ketat yang disertakan dalam laporan bug standar, serta untuk memungkinkan build pengguna mengaktifkan dan menonaktifkan logging vendor (default untuk build pengguna dinonaktifkan). 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. Diperkirakan tidak ada dampak terhadap ekspedisi.
Informasi yang Anda sertakan dalam laporan bug bergantung pada informasi yang Anda anggap relevan untuk proses debug, tetapi umumnya semakin panjang semakin baik.
Contoh dan sumber
Ada implementasi default IDumpstateDevice versi 1.0 (tidak digunakan lagi)
yang menunjukkan contoh penggunaan library utilitas dumpstate:
frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Ada juga implementasi Cuttlefish
HAL 1.1:
device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
Kode sumber terletak di sini:
- File HAL berada di bagian
hardware/interfaces/dumpstate/1.1/
. - Kode native dumpstate yang mengontrol konten laporan bug berada di
frameworks/native/cmds/dumpstate/
.
Implementasi
Untuk mengimplementasikan 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 mengimplementasikan IDumpstateDevice 1.1 jika menerapkan Dumpstate HAL. Perangkat yang telah menerapkan IDumpstateDevice 1.0 sebelum Android 11 seharusnya relatif mudah diupgrade ke 1.1, dan sebaiknya Anda melakukannya, karena hal ini sangat mengurangi jumlah informasi pribadi yang tidak relevan yang disertakan dalam laporan bug.
Fitur ini bergantung pada perubahan core dumpstate yang juga disertakan dengan Android
11, yang terletak di bagian frameworks/native/cmds/dumpstate
.
Mengimplementasikan 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.
Saat dinonaktifkan, dumpstateBoard_1_1
mungkin masih menghasilkan output minimal
informasi penting seperti yang ditentukan oleh OEM. Menonaktifkan logout vendor akan membuat
IDumpstateDevice::dumpstateBoard
hanya menambahkan informasi penting ke laporan
bug, sementara pengaktifannya 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 akan berubah.
Waktu tunggu dapat berupa nilai apa pun, tetapi tidak boleh secara signifikan meningkatkan waktu
yang dibutuhkan laporan bug untuk menyelesaikannya. 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
.