我目前正在使用谷歌地图api开发一个android应用程序,我有时会遇到奇怪的崩溃(在我看来),原因并不明显。这是崩溃日志:
12-02 16:38:57.071 20796-21137/com.appsolute.ParkYoo E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 4623
Process: com.appsolute.ParkYoo, PID: 20796
java.lang.NullPointerException: Attempt to get length of null array
at java.nio.DirectByteBuffer.put(DirectByteBuffer.java:399)
at java.nio.ByteBufferAsShortBuffer.put(ByteBufferAsShortBuffer.java:159)
at com.google.maps.api.android.lib6.gmm6.o.c.a.d.d(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.a.d.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.a.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.b(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.c.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.l.a(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.l.b(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.cw.k(Unknown Source)
at com.google.maps.api.android.lib6.gmm6.o.cw.run(Unknown Source)正如你所看到的,崩溃发生在google api中,但代码已经被混淆了,所以除了前两行之外,我没有更多的信息:
final void put(short[] src, int srcOffset, int shortCount) {
checkIsAccessible();
int byteCount = checkPutBounds(SizeOf.SHORT, src.length, srcOffset, shortCount); // here is the error
this.block.pokeShortArray(offset + position, src, srcOffset, shortCount, order.needsSwap);
position += byteCount;
}
@Override
public ShortBuffer put(short[] src, int srcOffset, int shortCount) {
byteBuffer.limit(limit * SizeOf.SHORT);
byteBuffer.position(position * SizeOf.SHORT);
if (byteBuffer instanceof DirectByteBuffer) {
((DirectByteBuffer) byteBuffer).put(src, srcOffset, shortCount);
} else {
((ByteArrayBuffer) byteBuffer).put(src, srcOffset, shortCount);
}
this.position += shortCount;
return this;
}有没有人已经遇到过这个bug?我做错了什么?如果任何人对这个问题有见解,我很乐意讨论它。
谢谢!
发布于 2015-02-06 07:48:27
您可能正在运行多个map片段。请参阅我关于当前困扰Google Maps库的致命bug的文章,涉及多个地图片段-以及我是如何找到解决办法的。
Google is currently working on the case,并将其优先用于下一版谷歌Play服务!
https://stackoverflow.com/questions/27253524
复制相似问题