在我的与谷歌地图v2相关的生产应用程序中,每天都会发生数百次崩溃。
我甚至可以在Lyft,Yelp,Ritual应用程序上重现这个问题。
重现步骤
预期的
实际
总而言之,崩溃影响了多个操作系统: 5,6,7,8。单独来看,我观察过的崩溃目标是1-2个操作系统的最大值,例如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)
发布于 2018-06-05 09:59:46
在尝试了多种方法后,如果您不需要室内映射,下面是一个对我有效的解决方法。
// Kotlin
googleMap.isIndoorEnabled = false
// Java
googleMap.setIndoorEnabled(false);
我看到的所有崩溃都与室内软件包有关,所以这是有意义的。希望很快就能发布修复程序。如果issue on AOSP tracker已解决,将发布。
更新
好消息。谷歌在2018年10月20日将该漏洞标记为已修复。Google Play服务中最新的地图Android SDK的发行说明中也提到了这一点
https://developers.google.com/maps/documentation/android-sdk/releases#october_18_2018
https://stackoverflow.com/questions/50691006
复制相似问题