一些要点澄清这不是有人建议的重复问题:
- 这是由长日志标签名称引起的“运行时崩溃”。即
okhttp3.mockwebserver.MockWebServer
,这不是 IDE lint 错误。 - 这个崩溃是由第三方依赖引起的,即MockWebServer。并感谢Yuri Schimke提出了一个 bug Fix android logging with MockWebServer。
- 我在回答https://stackoverflow.com/a/63388805/8034839中提供了我的修复。
原始问题:
我正在使用Expresso
and进行 Android Web 服务测试MockWebServer
,但是我遇到以下异常,告诉我日志标记问题:
“okhttp3.mockwebserver.MockWebServer”超过 23 个字符的限制。
详细的堆栈跟踪如下:
2020-08-13 11:31:13.277 16901-17085/com.xxx.app I/okhttp.OkHttpClient: <-- HTTP FAILED: java.net.SocketTimeoutException: timeout
2020-08-13 11:31:13.280 16901-17346/com.xxx.app E/AndroidRuntime: FATAL EXCEPTION: MockWebServer TaskRunner
Process: com.xxx.app, PID: 16901
java.lang.IllegalArgumentException: Log tag "okhttp3.mockwebserver.MockWebServer" exceeds limit of 23 characters
at android.util.Log.isLoggable(Native Method)
at okhttp3.internal.platform.android.AndroidLog.androidLog$okhttp(AndroidLog.kt:66)
at okhttp3.internal.platform.android.AndroidLogHandler.publish(AndroidLog.kt:39)
at java.util.logging.Logger.log(Logger.java:615)
at java.util.logging.Logger.doLog(Logger.java:636)
at java.util.logging.Logger.log(Logger.java:725)
at okhttp3.mockwebserver.MockWebServer$serveConnection$$inlined$execute$1.runOnce(TaskQueue.kt:224)
at okhttp3.internal.concurrent.TaskRunner.runTask(TaskRunner.kt:116)
at okhttp3.internal.concurrent.TaskRunner.access$runTask(TaskRunner.kt:42)
at okhttp3.internal.concurrent.TaskRunner$runnable$1.run(TaskRunner.kt:65)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)
2020-08-13 11:31:13.293 16901-17346/com.xxx.app I/Process: Sending signal. PID: 16901 SIG: 9