Google地图API v2无效

时间:2012-12-04 12:47:30

标签: android maps google-maps-android-api-2

我正在尝试运行示例代码:Google Maps Android API V2 Sample code

但是我收到错误NoClassDefFound。下面是我的logcat。

任何人都可以帮我解决它。 任何帮助都是高度评价的 感谢

12-04 18:04:18.854: E/AndroidRuntime(1801): java.lang.ExceptionInInitializerError
12-04 18:04:18.854: E/AndroidRuntime(1801):     at java.lang.Class.newInstanceImpl(Native Method)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at java.lang.Class.newInstance(Class.java:1319)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.Instrumentation.newActivity(Instrumentation.java:1053)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.ActivityThread.access$600(ActivityThread.java:130)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.os.Looper.loop(Looper.java:137)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at android.app.ActivityThread.main(ActivityThread.java:4745)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at java.lang.reflect.Method.invokeNative(Native Method)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at java.lang.reflect.Method.invoke(Method.java:511)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-04 18:04:18.854: E/AndroidRuntime(1801):     at dalvik.system.NativeStart.main(Native Method)
12-04 18:04:18.854: E/AndroidRuntime(1801): Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity
12-04 18:04:18.854: E/AndroidRuntime(1801):     at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:98)
12-04 18:04:18.854: E/AndroidRuntime(1801):     ... 15 more

10 个答案:

答案 0 :(得分:35)

我有同样的问题,并通过执行以下操作得到解决,

  • 删除您手动添加的android-support-v4.jar
  • 右键点击该项目,然后选择Android工具 - &gt;添加支持库...

在此之后一切都适合我。

答案 1 :(得分:3)

这对我有用。

导入Android-Support-V4.jar和Google_Play_Services_lib.jar后,请转到:

项目属性&gt; Java构建路径&gt;订单和出口。

然后确保选中Android-Support-V4.jar旁边的复选框,并选中Google_Play_Services_lib.jar。

单击“确定”,然后运行。一切都应该好。

答案 2 :(得分:1)

跟进NewUserSOF的回答(我是新手):

我实施了Jairo的答案,Google Maps V2“MainActivity”运行并显示了选项列表。

但现在当我点击其中任何一个时,我的模拟器说我需要更新Google Play服务。当我点击“更新”按钮时,应用程序崩溃了。

来自LogCat:

12-19 16:02:44.902:W / GooglePlayServicesUtil(2431):Google Play服务已过期。需要2012100但发现1015

12-19 16:02:51.136:E / AndroidRuntime(2431):android.content.ActivityNotFoundException:找不到处理Intent的活动{act = android.intent.action.VIEW dat = http://play.google .com / store / apps / details?id = com.google.android.gms flg = 0x80000 pkg = com.android.vending}

有没有办法在模拟器上更新Google Play服务。 (模拟器是Nexus S运行Google API的17)。

答案 3 :(得分:1)

android-support-v4.jar的多个引用

这对我有用。
如果您的项目和goolge play服务库项目都包含android-support-v4.jar,那么它将发生冲突 从任何一个项目中删除android-support-v4.jar。

答案 4 :(得分:0)

听起来你错过了一些重要的事情;)你做了这些步骤吗?

  • 选择项目&gt;单击属性,选择Java Build Path,然后导航到Libraries。
  • 选择Add External Jars,包含以下jar文件,然后单击OK:

/extras/android/compatibility/v4/android-support-v4.jar

  • 添加您自己的Google Maps Android API密钥。

答案 5 :(得分:0)

Google Play服务库项目是否从Sampleproject引用为库项目?

答案 6 :(得分:0)

编辑:Jairo的回答对我有用。 Edit2:它运行但没有显示地图。我有API密钥。刚刚得到它是一个新的。使用的包名称为com.example.mapdemo。 Edit3:刷新的API密钥(它们不会持续很长时间)。仍然没有显示地图。 Edit4:使用错误的密钥库时出错了SHA1。当我搜索它时,搜索没有在.android文件夹中找到它(ubuntu没有搜索隐藏文件夹),而是向我展示了我从下载android源代码获得的密钥库。

我有完全相同的错误。

MainActivity启动,指的是同一个包中的BasicMapActivity。 BasicMapActivity扩展了android-support-v4.jar中的FragmentActivity。

在此页面上:https://developers.google.com/maps/documentation/android/intro 请参阅步骤4:“选择添加外部JAR,包括以下jar文件,然后单击”确定“: /extras/android/compatibility/v4/android-support-v4.jar“

我的路径是jar / support /而不是/ compatibility / - 我没有/ compatibility /文件夹。 也许这是一个线索?

我的android-support-v4.jar的修改日期为2012年11月19日星期一美国东部时间上午09:14:47。让我想知道我是否错过了最新的更新。 SDK Manager已运行并重新运行。

答案 7 :(得分:0)

1)验证调试密钥库eclipse用于签署您的应用程序实际上是您提取SHA1哈希以生成api密钥的那个

转到:

  

窗口&gt; Android&gt;构建&gt; “默认调试密钥库”并将路径复制到密钥库

运行

  

keytool -list -v -keystore YOUR_KEYSTORE_PATH -alias androiddebugkey

2)确认您已在API控制台配置

中的SHA1哈希之后输入了应用程序包
  

Android应用:   XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX; com.yourapp.package

3)我在测试开始时遇到了这个错误,我记得在Logcat上记录了一个错误。类似“身份验证错误”或“API密钥错误”之类的东西。只需注意第一次运行应用程序时的logcat,检查您是否遇到API密钥问题。 如果您遇到此错误,则必须终止/重新安装该应用。在应用程序仍在运行时修复api密钥并不能完全解决问题。

4)我必须将支持jar添加到示例应用程序内的libs文件夹中。在eclipse构建路径中将它作为外部jar链接起来并不适用于我。

答案 8 :(得分:0)

根据您的源设置方式,您可能需要设置要导出的android-support-library(右键单击&gt; properties-&gt; java build path-&gt; order and export) 此外,您需要使用SupportMapFragment而不是MapFragment作为支持库。 确保您还使用getSupportFragmentManager而不是getFragmentManager。

答案 9 :(得分:0)

对我来说问题是没有安装Google地图。我擦了我的平板电脑,忘了重新安装它。