抑制 UsbRequestJNI / ALOGD 日志消息

Suppress UsbRequestJNI / ALOGD log messages

我正在开发一个 Android 应用程序,它从一些自定义硬件流式传输串行数据。我正在使用 mik3y 的 usb-serial-for-android 库在 OTG 模式下通过 USB 获取串行数据,经过一些调整后工作正常。

但是,对于通过 USB 接口进行的每个交易,UsbRequestJNI 都会记录一条 initclose 消息。这是淹没 LogCat 每秒数千条日志消息(注意时间戳):

02-17 09:30:21.590    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.590    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.594    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.594    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.598    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.598    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.602    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.602    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.606    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.606    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.610    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.610    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init
02-17 09:30:21.614    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ close
02-17 09:30:21.614    2332-2349/com.dummydomain.app D/UsbRequestJNI﹕ init

我知道我可以在 IDE 中过滤它们,但我想阻止它们,这样它们就不会占用调试器带宽。

据我所知,UsbRequestJNI 是操作系统提供的 JNI 库,所以我不能只编辑源代码。那么我如何告诉它停止记录这些调试消息,同时仍然是 运行 调试版本,以便我可以看到其他相关的调试信息?

谷歌搜索仅产生 this,这基本上是相同的问题,但没有适用于此处的解决方案。

(我的开发设备是 运行 Android 4.3,我正在 Android Studio 1.0.1 上开发)

UPDATE:UsbRequest 仅 found the source,相关行是 ALOGD 语句(第 45 和 71 行)。所以我想问题变成了:如何抑制 ALOGD 消息?

更新 2:我已按照 this answer 尝试 setprop log.tag.UsbRequestJNI SUPPRESS,但令人沮丧的是它对我的设备没有影响。

自己用 mik3y 的 usb-serial-for-android 包来解决这个问题。我能够通过禁用异步读取来解决它。更改此行:

mEnableAsyncReads = (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1);

阅读:

mEnableAsyncReads = false;

此时有许多针对 mik3y 代码的公开拉取请求,也许这些已在 fork 中得到修复?参见 https://github.com/mik3y/usb-serial-for-android/network

对于子孙后代来说,这些消息似乎来自 UsbRequest initialize() 和 close() 方法,因此通过重用 UsbRequest 对象而不是创建新对象主要解决了这个问题,并且可能还略微提高了性能。