当尝试启动从 MapActivity 派生并在 Android 库项目中声明的活动 (TestLocationActivity) 时,我收到此异常:
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 地图库声明:
<uses-library android:name="com.google.android.maps" />
在 Eclipse 中,我没有收到任何错误,并且应用程序正常启动,但是当尝试启动指定的 Activity 时,它失败了。启动活动的代码块如下:
Intent intent = new Intent(ctx, TestLocationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);
我不知道哪里出了问题。是否不可能使用 Android 库项目中的 Google API 库?
Update
我发现一些系统痕迹可以帮助清除这种情况:
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)
如果你想使用google提供的MapView你需要完成3个步骤:
- 获取用于调试和部署证书的 Api 密钥,并在应用程序中使用正确的密钥
- 使用 Google API 附带的模拟器或设备。在创建 AVD 期间,您可以选择设备是否应带有或不带有 Google Libraries。
- 在清单中注册 Google 地图库的使用。这是通过添加以下内容来完成的:
<uses-library android:name="com.google.android.maps" />
到清单的应用程序标签。确保使用库位于应用程序标记内,而不仅仅是在清单中
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)