Ошибка установки: INSTALL_FAILED_MISSING_SHARED_LIBRARY на Kindle fire

Я пытаюсь запустить демонстрационный проект карт Android (MapsDemo), который поставляется вместе с Android SDK (Google API 10) на моем Kindle Fire, но выдает это исключение при установке приложения.

[2012-01-31 23:01:15 - MapsDemo] Installing MapsDemo.apk...
[2012-01-31 23:01:17 - MapsDemo] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY
[2012-01-31 23:01:17 - MapsDemo] Please check logcat output for more details.

и бревенчатый кот

01-31 23:06:01.206: D/PackageManager(1372): Scanning package com.example.android.google.apis
01-31 23:06:01.206: E/PackageManager(1372): Package com.example.android.google.apis requires unavailable shared library com.google.android.maps; failing!
01-31 23:06:01.206: W/PackageManager(1372): Package com.example.android.google.apis couldn't be installed.

Тот же код отлично работает, когда я запускал его в своем HTC Desire.

Можно ли использовать KML и рисовать маршруты другим способом, кроме API Google?

Кто-нибудь знает, как решить эту проблему?


person kakopappa    schedule 31.01.2012    source источник
comment
Ну, это кажется очевидным, на Kindle Fire не установлены Карты Google, которые необходимы этому приложению... Найдите способ установить его (если возможно, я не уверен, но я знаю, что вам понадобится укоренить его), и он будет работать   -  person Guillaume    schedule 31.01.2012
comment
возможный дубликат Android Maps: ошибка установки: INSTALL_FAILED_MISSING_SHARED_LIBRARY   -  person Sergey Glotov    schedule 31.01.2012


Ответы (1)


Вы не можете использовать надстройку Google Maps для Android на Kindle Fire, так как ее не существует.

Вы можете добавить android:required="false" к элементу <uses-library> в манифесте, а затем во время выполнения проверить, доступен ли класс MapActivity на вашей виртуальной машине:

try {
  Class.forName("com.google.android.maps.MapActivity");
  // if you get here, you have Google Maps, so you can safely start a MapActivity
}
catch (Exception e) {
  // if you get here, you do not have Google Maps
}

Что вы будете делать в случае «у вас нет Google Maps», с которым вы столкнетесь в Fire, зависит от вас.

person CommonsWare    schedule 31.01.2012
comment
Спасибо, я пробовал это, но не работал. получение java.lang.ClassNotFoundException - person kakopappa; 31.01.2012
comment
Как можно получить необработанное исключение, если оно находится внутри try/catch, а ваш catch для всех исключений (Exception)? - person SERPRO; 31.01.2012
comment
@kakopappa: Если это исходит от Class.forName(), это будет перехвачено вышеуказанным обработчиком исключений. Если он исходит от чего-то другого, возможно, вы пытаетесь использовать Карты Google, прежде чем выполнить проверку, описанную в моем ответе. - person CommonsWare; 31.01.2012
comment
Это отлично сработало для меня, но... Заставка не может быть подклассом MapActivity. Это дает вам возможность запустить код @commonsware, чтобы определить, поддерживает ли устройство карты Google (или нет), и предпринять обходные действия, если нет. - person Colin; 04.04.2012