Есть ли обходной путь / исправление к этим сбоям Google Maps v2 StackOverflowError? - PullRequest
0 голосов
/ 05 июня 2018

Видя несколько сбоев в моем рабочем приложении, связанных с Google Maps v2, сотни в день.

Я могу воспроизвести проблему даже в приложениях Lyft, Yelp, Ritual.

ReproШаги

  1. Добавление com.google.android.gms: play-services-maps 11.8.0 или выше (также происходит сбой 15.0.0) в приложение
  2. Получить GooglePlay Services 12.6.85 (040400-197041431)
  3. Добавить SupportMapFragment
  4. Открыть приложение, центрировать карту на «Районе миссии» в Сан-Франциско, Калифорния, США
  5. Попробуйте увеличитьи очень быстро, или прокручивая вверх и вниз, но всегда удерживая район Миссин в центре

Ожидается

  1. Нет Crash

Фактический

  1. Crash

В совокупности сбой затронул несколько ОС: 5, 6, 7, 8. Индивидуально,аварийные ситуации, которые я видел на максимуме целевой системы 1-2, например, 5 + 6, 7, 7 + 8.

Кажется, что все трассировки стека включают com.google.maps.api.android.lib6.gmm6.indoor.* пакетов.

Thisближайшийиск, который я видел на 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 голосов
/ 05 июня 2018

Попробовав несколько вещей, я нашел обходной путь, если мне не требуется отображение в помещении.

// Kotlin
googleMap.isIndoorEnabled = false

// Java
googleMap.setIndoorEnabled(false);

Все сбои, которые я видел, были связаны с пакетом для внутреннего использования., так что в этом есть какой-то смысл.Надеюсь, исправление будет выпущено в ближайшее время.Будет опубликовано, если проблема на трекере AOSP решена.

Обновление

Хорошие новости.Google пометил ошибку как исправленную 20 октября 2018 года. Также она упоминалась в примечаниях к выпуску последней версии Android SDK для карт в Службах Google Play

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...