我们已经将第一批Kotlin产品发布到生产中,我们正在使用这种堆栈跟踪进行崩溃:
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
at kotlin.jvm.internal.ReflectionFactory.renderLambdaToString(ReflectionFactory.java:47)
at kotlin.jvm.internal.Reflection.renderLambdaToString(Reflection.java:80)
at kotlin.jvm.internal.Lambda.toString(Lambda.kt:22)
at java.lang.StringBuilder.append(StringBuilder.java:202)
at kotlinx.coroutines.experimental.DispatchedContinuation.toString(CoroutineDispatcher.kt:192)
at java.lang.StringBuilder.append(StringBuilder.java:202)
at kotlinx.coroutines.experimental.DispatchTask.toString(CoroutineDispatcher.kt:124)
at java.lang.StringBuilder.append(StringBuilder.java:202)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5637)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:960)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
谷歌向我们展示了这种情况在Android 5上发生了100%.Crashlytics / Fabric也显示了Android 4.4的两次崩溃。没有来自较新的Android版本的崩溃。
我不知道如何防止此崩溃或如何复制它。
当前版本:
答案 0 :(得分:1)
这是Kotlin反思中的一个错误。同时,我建议升级到最新版本的kotlinx.coroutines
库(您可以找到最新版本here)。由于版本0.17 DispatchTask.toString
不再尝试将lambda转换为字符串。它的toString
实现现在实际上更有用,并且有更多相关信息用于调试目的。