誰かが示唆したように、これが重複した質問ではないことを明確にするためのいくつかのポイント:
- これは、長いログ タグ名が原因で発生する「ランタイム クラッシュ」です。つまり
okhttp3.mockwebserver.MockWebServer
、これはIDE lint エラーではありません。 - このクラッシュは、MockWebServer などのサード パーティの依存関係によって発生します。また、MockWebServer でAndroid のログを修正するバグを 報告してくれたYuri Schimkeに感謝します。
- 回答https://stackoverflow.com/a/63388805/8034839で修正を提供しました。
元の質問:
Expresso
と を使用して 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