Google Maps Android API v2 – 示例代码崩溃
我正在尝试获取Android“Google Maps Android API v2”的示例代码 。 我得到没有错误的项目。 但是,当我尝试在我的Galaxy Nexus上运行应用程序(与usb连接到我的笔记本电脑)时,该应用程序立即崩溃。
- 我在AndroidManifest.xml中填写了自己的Maps API密钥
- 我build立了Android 4.1.2
这是日志logging:
Unable to resolve superclass of Lcom/example/mapdemo/BasicMapActivity; (66) Link of class 'Lcom/example/mapdemo/BasicMapActivity;' failed Could not find class 'com.example.mapdemo.BasicMapActivity', referenced from method com.example.mapdemo.MainActivity.<clinit> VFY: unable to resolve const-class 108 (Lcom/example/mapdemo/BasicMapActivity;) in Lcom/example/mapdemo/MainActivity; VFY: replacing opcode 0x1c at 0x000d Exception Ljava/lang/NoClassDefFoundError; thrown while initializing Lcom/example/mapdemo/MainActivity; Class init failed in newInstance call (Lcom/example/mapdemo/MainActivity;) Shutting down VM threadid=1: thread exiting with uncaught exception (group=0x41ac9930) FATAL EXCEPTION: main java.lang.ExceptionInInitializerError at java.lang.Class.newInstanceImpl(Native Method) at java.lang.Class.newInstance(Class.java:1319) at android.app.Instrumentation.newActivity(Instrumentation.java:1054) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) at android.app.ActivityThread.access$600(ActivityThread.java:141) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5039) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.NoClassDefFoundError: com.example.mapdemo.BasicMapActivity at com.example.mapdemo.MainActivity.<clinit>(MainActivity.java:97) ... 15 more
有没有人有一个提示如何解决这个问题,或者我可能做错了什么?
非常非常仔细地跟着床单:
https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw
特别是,我认为你需要:
- 导入“google-play-services_lib”项目的实际来源,并将其作为Android库链接。
- 通过Project – > Properties – > Android – > Library,Add – > google-play-services_lib(你可以右键点击你的项目并selectProperties,然后selectAndroid)。
- 不要通过项目的“Java Build Path”将其作为依赖项目添加,这对我不起作用。
- 在示例项目的“libs”文件夹中添加google-play-services.jar和android-support-v4.jar,并在“Build Path – > Configure Build Path – > Libraries”中将它们添加为“External External JARs” 。
我发现这第二步是必要的,因为当我尝试使用示例代码时遇到与您完全相同的错误。 第一步是避免com.google.android.gms.R$styleable
中的NoClassDefFoundError
。
在示例代码工作之前,我还需要执行Clean build并从设备上卸载应用程序(从早期的testing尝试)。
遵循谷歌下一个示例代码说明 。
跳过“4”部分,然后按照以下说明操作:
- 将新文件夹添加到名为“libs”的项目
-
复制google-play-services.jar表单:
“Android的SDK文件夹\演员\谷歌\ google_play_services \ libproject \的Google Play-services_lib \库”
到“libs”文件夹 – >在这个文件夹中右键点击这个jar – > Build path – > Add to build path。
-
复制android-support-v4.jar格式:
“Android的SDK文件夹\演员\机器人\ SUPPORT \ V4”
到“libs”文件夹 – >在这个文件夹中右键点击这个jar – > Build path – > Add to build path。
其中“android-sdk-folder”通常是这样的:“C:\ Users \ User_Name \ android-sdks”
我有同样的问题,我做了以下来解决这个问题。
- 转到项目的“属性”。
- select“Java Build Path”
- select“订单和导出”选项卡
- 您应该在这里看到所选项目的“src”和“gen”path和依赖关系。
他们列出的顺序是第一个“src”,然后是“gen”path,我将它们切换,这样“gen”文件夹就build立在“src”
然后“检查”列出的每个项目
请参阅: Android上的Java库中的代码的NoClassDefFoundError
发生这种情况是因为对如何导入项目有很多困惑。 文档https://developers.google.com/maps/documentation/android/intro#sample_code表示,您不应该在任何时候select“将项目复制到工作区”,并且为了获得运行的样本,这是您需要遵守的。; 不要select播放服务和样本的这个选项 – 离开它们。
导入后,请检查以下内容:
- 右键单击MainActivity项目并select属性
- 去Android,并确保你看到一个绿色的勾号旁边google-play-services-lib(播放服务库不应该被添加为一个jar – 相反,它应该被添加为一个Android库)
- 转到Java Build Path并在库部分导入外部jar(android-support-v4.jar)
- [重要]在Java Build Path中进入Order and Export,并确保android-support-v4.jar旁边有一个勾号(默认情况下不会发生这种情况,这就是为什么你会看到你提到的错误在顶部)
- 确保在进行更改之后清理和构build项目,以便最终不会尝试修复那些可以正常工作的内容,而是不会被推送。
- 遵循谷歌示例代码说明 。
- 并设置Java构buildpath,如下所示:
我面临同样的问题,无法解决。 最后,我从另一台机器上拿了样品工程文件夹,把它复制到我的机器上,并加载了我从另一台机器上拿来的新工程。 那么一切工作正常。 我试图通过比较两个示例项目来跟踪这个问题,但是不能。 无论如何,我从另一台机器上取得的新样品项目工作正常。
我有很多相同的问题。 文件“import-summary.txt”有答案。 在我的情况下,我已经将eclipse项目导入到path名中具有空格的path中。 这会导致向导出现问题。 创build了新的path。 重新导入的项目。 然后build立/重build项目。 没问题。
-
在新工作区中尝试相同的示例代码。
-
即使你可以复制和粘贴示例地图项目和谷歌播放服务的lib项目(/额外/谷歌/谷歌播放服务/ libproject / google-play-services_lib),并将其粘贴到新鲜的工作区。
- 在donot忘记添加必需的JAR文件从SDK。 (“android-support-v4.jar”位于你的“android-sdk”drectory下的“/extras/android/compatibility/v4/android-support-v4.jar”。)