【问题标题】:Attempt to get length of null array in google maps V2 android app尝试在谷歌地图 V2 android 应用程序中获取空数组的长度
【发布时间】:2020-01-29 17:28:00
【问题描述】:

我目前正在使用 google maps 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 中,但代码已被混淆,因此除了前 2 行之外,我没有更多相关信息:

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;
    }

有没有人遇到过这个错误?我究竟做错了什么 ?如果有人对此问题有见解,我很乐意讨论。

谢谢!

【问题讨论】:

  • 那么如何在代码中显示您正在执行的操作
  • 您好,感谢您的回答。正如我所说,这不会发生在我的代码中,而是发生在 maps lib 代码中。无论如何,我很想向您展示我的代码,但您想看什么?目前我在选项卡式活动中设置了 2 个 GoogleMaps。
  • 我遇到了同样的崩溃,但以前没有发生过。你在 Lollipop 上运行你的应用程序吗?我认为这与它有关
  • 嗨 wmora。是的,我的应用程序在 Lollipop 上运行,但它也发生在我的 nexus 4 上,它仍然在 KitKat (4.4.4) 上并与 dalvik 运行时一起运行。对我来说仍然是个谜......
  • 在 Crashlytics 中为我在 Vivo 设备上的 5.1 和 6.0.1 应用程序报告了此问题,而且偶尔也会出现此问题。而且我一直无法重现该问题

标签: android google-maps


【解决方案1】:

您可能会运行多个地图片段。请参阅我关于目前困扰谷歌地图库的这个致命错误的文章,涉及多个地图片段 - 以及我如何找到解决方法。

https://medium.com/aphex-cx/the-google-maps-api-is-broken-on-android-5-heres-a-workaround-for-multiple-map-fragments-6a95655c92fd

Google is currently working on the case 并将其优先用于下一版 Google Play 服务!

【讨论】:

  • 是的,实际上我在视图寻呼机上运行了 2 个地图。一开始我以为我没有像我应该的那样初始化我的地图片段。我一定会调查你的解决方法。感谢您的回答。
  • 将近 3 年过去了,仍然没有修复
  • Google 似乎还没有调查过这个问题。 TabLayout , ViewPager 在这种情况下不推荐使用。替换片段应该可以工作。
  • Android 9.0 和 androidx lib 仍然存在
  • Android 10 和 androidx lib 和 kotlin 仍在发生
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 2012-11-27
  • 2013-07-19
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多