是否有针对这些Google Maps v2 StackOverflowError崩溃的解决方法/修复程序?

时间:2018-06-05 01:59:46

标签: android google-maps

在我的制作应用中看到与Google Maps v2相关的多次崩溃,每天数百次。

我甚至可以在Lyft,Yelp,Ritual应用程序上重复这个问题。

Repro Steps

  1. 添加com.google.android.gms:play-services-maps 11.8.0或更高版本(也是 在15.0.0崩溃到app
  2. 获取Google Play服务12.6.85(040400-197041431)
  3. 添加SupportMapFragment
  4. 在美国加利福尼亚州旧金山的“Mission District”打开应用程序,中心地图
  5. 尝试快速放大或缩小,或上下滚动,但始终将Missin区保持在中心
  6. 预期

    1. 没有崩溃
    2. 实际

      1. 崩溃
      2. 作为一个聚合,崩溃击中了多个操作系统:5,6,7,8。单独地,我看到的崩溃目标是1-2 OS的最大值,例如5 + 6,7,7 + 8。

        堆栈跟踪似乎都涉及com.google.maps.api.android.lib6.gmm6.indoor.*个包。

        这是我在AOSP Issue Tracker上看到的最接近的问题。有关不同堆栈跟踪的类似问题,请查看该问题的重复项。

        以下是我看到的一些堆栈跟踪的片段(还有很多):

        Fatal Exception: java.lang.StackOverflowError: stack size 1038KB
               at java.util.HashMap.getEntry(HashMap.java:393)
               at java.util.HashMap.get(HashMap.java:348)
               at com.google.maps.api.android.lib6.gmm6.util.e.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685021@12.6.85 (040306-197041431):7)
               at com.google.maps.api.android.lib6.gmm6.indoor.o.c(:com.google.android.gms.dynamite_dynamitemodulesb@12685021@12.6.85 (040306-197041431):193)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
              at java.util.HashMap.createEntry(HashMap.java:826)
              at java.util.HashMap.addEntry(HashMap.java:813)
              at java.util.HashMap.put(HashMap.java:436)
              at com.google.maps.api.android.lib6.gmm6.util.e.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685025@12.6.85 (040408-197041431):17)
              at com.google.maps.api.android.lib6.gmm6.indoor.o.c(:com.google.android.gms.dynamite_dynamitemodulesb@12685025@12.6.85 (040408-197041431):193)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 8MB
            at java.util.HashMap.get(HashMap.java:556)
            at com.google.maps.api.android.lib6.gmm6.util.e.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685025@12.6.85 (040408-197041431):7)
            at com.google.maps.api.android.lib6.gmm6.indoor.o.c(:com.google.android.gms.dynamite_dynamitemodulesb@12685025@12.6.85 (040408-197041431):193)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
            at java.util.ArrayList.<init>(ArrayList.java:191)
            at com.google.maps.api.android.lib6.common.i.<init>(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):9)
            at com.google.maps.api.android.lib6.gmm6.indoor.o.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):159)
            at com.google.maps.api.android.lib6.gmm6.indoor.o.c(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):161)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
            at com.google.maps.api.android.lib6.gmm6.util.e.a(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):5)
            at com.google.maps.api.android.lib6.gmm6.util.e.d(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):33)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
               at com.google.maps.api.android.lib6.common.i.<init>(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):9)
               at com.google.maps.api.android.lib6.gmm6.indoor.o.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):159)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
              at java.util.HashMap.putVal(HashMap.java:630)
              at java.util.HashMap.put(HashMap.java:611)
              at com.google.maps.api.android.lib6.gmm6.util.e.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):17)
              at com.google.maps.api.android.lib6.gmm6.indoor.o.c(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):193)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
             at java.util.HashMap.remove(HashMap.java:798)
             at com.google.maps.api.android.lib6.gmm6.util.e.d(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):29)
             at com.google.maps.api.android.lib6.gmm6.util.e.a(:com.google.android.gms.dynamite_dynamitemodulesb@12685023@12.6.85 (040400-197041431):37)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1036KB
            at java.util.HashMap.get(HashMap.java:300)
            at com.google.maps.api.android.lib6.gmm6.util.e.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685009@12.6.85 (020308-197041431):20)
            at com.google.maps.api.android.lib6.gmm6.store.cache.s.a(:com.google.android.gms.dynamite_dynamitemodulesb@12685009@12.6.85 (020308-197041431):8)
        
        Fatal Exception: java.lang.StackOverflowError: stack size 1038KB
               at java.util.ArrayList.toArray(ArrayList.java:364)
               at java.util.ArrayList.<init>(ArrayList.java:171)
               at com.google.maps.api.android.lib6.common.i.<init>(:com.google.android.gms.dynamite_dynamitemodulesb@12685021@12.6.85 (040306-197041431):9)
               at com.google.maps.api.android.lib6.gmm6.indoor.o.b(:com.google.android.gms.dynamite_dynamitemodulesb@12685021@12.6.85 (040306-197041431):159)
        

1 个答案:

答案 0 :(得分:18)

尝试多项操作后,如果您不需要室内映射,以下是适用于我的解决方法。

// Kotlin
googleMap.isIndoorEnabled = false

// Java
googleMap.setIndoorEnabled(false);

我看到的所有碰撞都与室内包装有关,所以这是有道理的。希望很快就会发布修复程序。如果issue on AOSP tracker已解决,将发布。

更新

好消息。 Google于2018年10月20日将该错误标记为已修复。此外,Google Play服务中最新版Google地图Android SDK的发行说明中也提到了

https://developers.google.com/maps/documentation/android-sdk/releases#october_18_2018