我们看到 Android Oreo
StackOverflowError
在 crashlytics 中崩溃,但仅适用于 Android 8 (Oreo) 设备。它用于 Jetpack Compose 中的辅助功能。我无法理解这一点。在堆栈跟踪之后我没有看到任何明显的递归问题。
堆栈跟踪
Fatal Exception: java.lang.StackOverflowError: stack size 8MB
at androidx.core.os.BuildCompat.isAtLeastR(BuildCompat.java:160)
at androidx.core.view.accessibility.AccessibilityNodeInfoCompat.setStateDescription(AccessibilityNodeInfoCompat.java:3007)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.populateAccessibilityNodeInfoProperties(AndroidComposeViewAccessibilityDelegateCompat.java:466)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.java:380)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat.access$createNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.java:117)
at androidx.compose.ui.platform.AndroidComposeViewAccessibilityDelegateCompat$MyNodeProvider.createAccessibilityNodeInfo(AndroidComposeViewAccessibilityDelegateCompat.android.kt:2443)
at android.view.View.populateVirtualStructure(View.java:8083)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.populateVirtualStructure(View.java:8086)
at android.view.View.onProvideVirtualStructure(View.java:7647)
at android.view.View.dispatchProvideStructureForAssistOrAutofill(View.java:8151)
at android.view.View.dispatchProvideStructure(View.java:8098)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3404)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.view.ViewGroup.dispatchProvideStructure(ViewGroup.java:3475)
at android.app.assist.AssistStructure$WindowNode.<init>(AssistStructure.java:512)
at android.app.assist.AssistStructure.<init>(AssistStructure.java:1912)
at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3039)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1829)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
我没有设法复制它。这可能与一些沉重的包裹被保留在堆垛上有关。但是为什么它会抛出
isAtLeastR
方法呢?而且只吃奥利奥?