При добавлении MapView в приложение Android, получите исключение кросс-загрузчика - PullRequest
1 голос
/ 16 декабря 2009

У меня есть проект в Android, и я хочу добавить в него MapView. Я сделал следующее:

  1. Загрузил Google API версии 3.
  2. Добавлена ​​библиотека maps.jar в мой проект
  3. Добавлен MapView для действия
  4. Создано новое виртуальное устройство с целевым интерфейсом API Google (не обычным целевым Android 1.5)
  5. Начал проект

Когда я пытаюсь достичь действия с помощью карты, я получаю

....................

12-16 20: 57: 44,620: ОШИБКА / AndroidRuntime (792): вызвано: java.lang.IllegalAccessError: кросс-загрузочный доступ из предварительно проверенного класс

12-16 20: 57: 44,620: ОШИБКА / AndroidRuntime (792): в dalvik.system.DexFile.defineClass (Native Метод)

12-16 20: 57: 44,620: ОШИБКА / AndroidRuntime (792): в dalvik.system.DexFile.loadClass (DexFile.java:193)

............

Что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2010

При использовании Eclipse убедитесь, что у вас нет нескольких ссылок на maps.jar в вашем пути сборки проекта. Сюда входит любая прямая ссылка на maps.jar или неявная ссылка через Библиотеку API Google (API Google [Android 1.5]). На самом деле, достаточно иметь только библиотеку API Google на пути сборки проекта.

http://andmobidev.blogspot.com

0 голосов
/ 20 сентября 2011

У меня была именно эта проблема сегодня. Моя проблема заключалась в том, что я добавил в свой проект maps.jar вместо того, чтобы изменить путь сборки, включив в него Google APIs [android-2.1-update1] вместо стандартного android-2.1-update1. Просто включение maps.jar в ваш проект вызовет исключение IllegalAccessException, когда <uses-library> находится в нужном месте, и RuntimeException (stub), когда оно находится в неправильном месте. API должны быть загружены через цель API Android.

0 голосов
/ 30 июня 2011

Если вы используете плагин Maven для Android, убедитесь, что вы объявили зависимость тестового проекта от APK-файла тестируемого приложения в «предоставленной» области действия, например в JAR-файле AUT:

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>my-application</artifactId>
        <type>jar</type>
        <version>1.0.0-SNAPSHOT</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.example</groupId>
        <artifactId>my-application</artifactId>
        <type>apk</type>
        <version>1.0.0-SNAPSHOT</version>
        <scope>provided</scope>    <!-- ADD THIS -->
    </dependency>   

Все примеры Maven (на момент написания) делают тестовый APK зависимым от APK приложения с областью действия по умолчанию (т. Е. «Компилировать»), в результате чего любые библиотеки, которые приложение предоставляет «компилируемой» областью, упаковываются в тест. APK тоже.

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