Объявление о запуске карт ClassNotFound в библиотеке Android - PullRequest
2 голосов
/ 08 сентября 2010

Я получаю это исключение при попытке запустить действие (TestLocationActivity), производное от MapActivity и объявленное в проекте библиотеки Android:

09-08 09:29:45.357: ERROR/AndroidRuntime(7502): java.lang.NoClassDefFoundError: msumo.business.testlocation.impl.view.TestLocationActivity
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.app.test2.impl.Test2AppManagerImpl.loadNewScreen(Test2AppManagerImpl.java:94)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.business.common.GuiAppManager.handleMessage(GuiAppManager.java:101)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 09:29:45.357: ERROR/AndroidRuntime(7502):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)

Я не могу найти источникпроблема.Я включил в AndroidManifest.xml основного приложения и проекта библиотеки объявление библиотеки Google Maps:

 <uses-library android:name="com.google.android.maps" />

В Eclipse я не получаю сообщение об ошибке и приложение запускается нормально, но при попытке запустить указанное действие не удается,Кусок кода, который запускает действие, следующий:

    Intent intent = new Intent(ctx, TestLocationActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    ctx.startActivity(intent);

Я понятия не имею, что может быть не так.Возможно, невозможно использовать библиотеку API Google из проекта библиотеки Android?

Обновление


Я обнаружил некоторые системные трассировки, которые могут помочь прояснить ситуацию:

09-08 10:53:34.615: INFO/dalvikvm(13221): Rejecting re-init on previously-failed class Lmsumo/platform/location/impl/LocationModuleImpl$2; v=0x0
09-08 10:53:34.654: WARN/System.err(13221): java.lang.NoClassDefFoundError: msumo.platform.location.impl.LocationModuleImpl$2
09-08 10:53:34.654: WARN/System.err(13221):     at msumo.platform.location.impl.LocationModuleImpl.doUseBestProvider(LocationModuleImpl.java:189)
09-08 10:53:34.654: WARN/System.err(13221):     at msumo.platform.location.LocationModule.performQuery(LocationModule.java:329)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.platform.location.LocationModule.handleMessage(LocationModule.java:543)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 10:53:34.662: WARN/System.err(13221):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 10:53:34.669: WARN/System.err(13221):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)
09-08 10:53:34.685: WARN/System.err(13221): java.lang.NoClassDefFoundError: msumo.platform.location.impl.LocationModuleImpl$2
09-08 10:53:34.685: WARN/System.err(13221):     at msumo.platform.location.impl.LocationModuleImpl.doUseBestProvider(LocationModuleImpl.java:189)
09-08 10:53:34.685: WARN/System.err(13221):     at msumo.platform.location.LocationModule.performQuery(LocationModule.java:329)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.platform.location.LocationModule.handleMessage(LocationModule.java:543)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.MessageBus.dispatchMessage(MessageBus.java:338)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.MessageBus$1.doWork(MessageBus.java:251)
09-08 10:53:34.693: WARN/System.err(13221):     at msumo.core.util.WorkerThread.run(WorkerThread.java:29)

Ответы [ 4 ]

3 голосов
/ 08 сентября 2010

Если вы хотите использовать MapView, предоставляемый Google, вам нужно выполнить 3 шага:

  1. Получить ключ API для вашего отладочного и развернуть сертификат и использовать правильный внутри вашего приложения
  2. Используйте эмулятор или устройство, которое поставляется с Google API.Во время создания AVD вы можете выбрать, должно ли устройство использоваться с библиотеками Google или без них.
  3. Зарегистрируйте использование библиотеки Google Maps в своем манифесте.Это делается путем добавления:
    <uses-library android:name="com.google.android.maps" />
    к тегу приложения вашего манифеста.Убедитесь, что библиотека использований находится внутри тега приложения, а не только в вашем манифесте
0 голосов
/ 08 сентября 2010

возможно это может вам помочь.

Вы зарегистрировались, чтобы получить Ключ API Карт? Это может быть причиной вашей проблемы.

0 голосов
/ 08 сентября 2010

Просто предположение: вы выбрали правильный SDK для своего проекта?У вас есть выбор каждой версии дважды.Один с Google API, а другой без карт и для использования, вы должны использовать версию с Google API.

0 голосов
/ 08 сентября 2010

Вы зарегистрировали TestLocationActivty в своем манифесте?

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