Android - 数组索引超出范围,但为什么?

时间:2016-12-11 09:48:12

标签: android indexoutofboundsexception

我的一位用户遇到了我的应用程序问题。我收到了他的堆栈跟踪,但它并没有真正指出我的问题。 我所知道的是,有些索引超出界限,但是哪个索引?跟踪不会引导我进入我的代码...

我相信我过去曾经有这个,我可能通过禁用minifyEnabled和shrinkResources解决了这个问题。这些选项再次启用,但在我的Nexus 6P上应用程序正常运行。

这里是堆栈跟踪:

Android的版

Android 4.0.3 - 4.0.4 1 Iconia Tab A501(毕加索)1

java.lang.ArrayIndexOutOfBoundsException: length=7; index=7
    at com.baviloworks.braumeister.f.m(Unknown Source)
at com.baviloworks.braumeister.f$1.onClick(Unknown Source)
at android.view.View.performClick(View.java:3511)
at android.view.View$PerformClick.run(View.java:14110)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(Zygote    Init.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

我希望有人知道这可能是什么。

谢谢!

2 个答案:

答案 0 :(得分:2)

堆栈跟踪是混淆的,所以首先我们必须解码它,以便我们得到抛出异常的实际文件:

启动select(如果您使用的是Linux,则为.sh),选择左侧的Retrace,然后选择您的mapping.txt。

请参阅http://simplyadvanced.net/blog/android-how-to-decode-proguards-obfuscated-code-from-stack-trace/

答案 1 :(得分:0)

数组长度为7表示只有索引6存在于0,因为在java数组索引中以0开头!所以这将一直有效,直到你索引到6

或者换句话说,数组的边界是Array.length -1