Подтвердить что ты не робот

FATAL EXCEPTION: ZoomTableManager

Я получаю странный крах, и у меня возникли проблемы с поиском чего-либо об этом в Google. Поиск ZoomTableManager не возвращает никаких результатов.

E/AndroidRuntime﹕ FATAL EXCEPTION: ZoomTableManager
Process: com.xxx.yyy, PID: 22129
java.lang.IllegalMonitorStateException: object not locked by thread before notify()
        at java.lang.Object.notifyAll(Native Method)
        at com.google.maps.api.android.lib6.gmm6.m.k.a(Unknown Source)
        at com.google.maps.api.android.lib6.gmm6.m.l.run(Unknown Source)
4b9b3361

Ответ 1

Выяснилось, что причиной ошибки был недействительный ключ API Карт Google.

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

Ответ 2

A IllegalMonitorStateException с этим сообщением происходит, когда вы вызываете obj.notify(), и вы не держите примитивный мьютекс для obj.

Вы должны сделать что-то вроде этого:

    synchronized (someObj) {
        ...
        someObj.notify();
        ...
    }

или эквивалент, но по некоторым причинам код, вызывающий проблему, оставил бит synchronized. (Или, может быть, он синхронизирован на другом объекте.)

К сожалению, это происходит в некотором запутанном коде, который обеспечивает реализацию API Карт Google. И вы не указали никакого контекста. Поэтому нам почти невозможно понять, что происходит.

Я предлагаю вам предоставить более подробную информацию.

Ответ 3

Способом устранения этой проблемы является обращение к открытому ключу карты Google для вашего пакета.

Но способ предотвратить этот сбой - проверить возвращаемое значение вызывающего mapFragment = new MapFragment() и не вызывать fm.beginTransaction().replace(id, mapFragment).commit();, если mapFragment равен null.

Надеюсь, что это поможет.

Ответ 4

В нашем случае изменился ключ, используемый для подписи приложения Android (а не ключа API). Прежде чем мы использовали производственный ключ (хранящийся в хранилище ключей). Этот ключ был включен в консоли Google API (https://console.developers.google.com).

Мы создали новую среду разработки на новой машине и эта машина не использовала производственный ключ, как и раньше, но использовала ключ отладки по умолчанию для Android (хранилась в хранилище отладки по умолчанию в android default/.android/debug. хранилище ключей).

Решение заключалось в том, чтобы настроить ключ отладки по умолчанию для Android, SHA1 и имя пакета в консоли Google API.

  • Получить SHA1:

    keytool -v -list -keystore $HOME/.android/debug.keystore

  • Скопируйте SHA1: 27: 4C: CF: A3: E9: 75: 4A: 59: 4C: EE: 50: 21: 2B: 1C: 7B: 48: FC: 45: 4F: 77

  • Перейдите в Консоль API Google и введите имя пакета SHA1: (в APIS и Auth > Учетные данные > Изменить разрешенные приложения для Android):

27: 4C: КФ: А3: Е9: 75: 4A: 59: 4C: EE: 50: 21: 2B: 1C: 7B: 48: ФК: 45: 4F: 77; com.mypackage.name

Наслаждайтесь!