Google Maps Android API v2因NoClassDefFound错误而崩溃

时间:2013-01-15 15:58:22

标签: android google-maps

我正在尝试实现谷歌地图android api v2示例的最基本的例子。 但它崩溃了错误:java.lang.NoClassDefFoundError:com.google.android.gms.R $ styleable。

我已经设置了谷歌API,并查看了stackoverflow帖子,如:

但他们的问题与我的问题略有不同。

你能指点我正确的方向吗?我正在使用Android 2.2,并希望使用新的地图在我的应用程序中使用片段;这样我就可以获得一些像apple的uinavigation这样的功能来在弹出活动中推送新视图。

感谢。

谢谢你,你是如何找到你在附件中显示的png的?google play服务在我的包浏览器中显示为引用的库;我添加了它;这是我的logcat:

01-16 06:23:55.087: E/AndroidRuntime(305): FATAL EXCEPTION: main
01-16 06:23:55.087: E/AndroidRuntime(305): java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.google.android.gms.maps.GoogleMapOptions.createFromAttributes(Unknown Source)
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:271)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:558)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.Activity.setContentView(Activity.java:1647)
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.example.afis.MainActivity.onCreate(MainActivity.java:13)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.os.Handler.dispatchMessage(Handler.java:99)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.os.Looper.loop(Looper.java:123)
01-16 06:23:55.087: E/AndroidRuntime(305):  at android.app.ActivityThread.main(ActivityThread.java:4627)
01-16 06:23:55.087: E/AndroidRuntime(305):  at java.lang.reflect.Method.invokeNative(Native Method)
01-16 06:23:55.087: E/AndroidRuntime(305):  at java.lang.reflect.Method.invoke(Method.java:521)
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
01-16 06:23:55.087: E/AndroidRuntime(305):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
01-16 06:23:55.087: E/AndroidRuntime(305):  at dalvik.system.NativeStart.main(Native Method)
01-16 06:23:55.097: W/ActivityManager(59):   Force finishing activity com.example.afis/.MainActivity
01-16 06:23:55.607: W/ActivityManager(59): Activity pause timeout for HistoryRecord{44ee9110 com.example.afis/.MainActivity}

3 个答案:

答案 0 :(得分:0)

请检查项目中是否存在包含“android-support-v4.jar”的“libs”文件夹。因为您使用的是Android 2.2,所以项目根目录中必须包含“libs”文件夹。如果还没有,只需将该jar文件复制到“libs”文件夹中即可。

“android-support-v4.jar”位于您的drectory下的“/extras/android/compatibility/v4/android-support-v4.jar”中。

在运行项目之前,必须将项目构建目标设置为“Google API”,而不是Android x.x. version:选择您的项目,然后单击Project>属性> Eclipse中的Project Build Target并选择任何“Google API”,然后在手机上运行您的项目。如果您使用模拟器,还必须将模拟器的AVD设置为任何“Google API”。

再一次,您无需创建新的Google Maps API密钥即可测试您的项目,只需使用默认提供的API密钥,该密钥在您的浏览器应用程序(带有引用者)中显示为“ Google API控制台。

答案 1 :(得分:0)

  1. 使用Android SDK Manager下载“google play services”

  2. 将其导入您的工作区(路径:android-sdk root / extras / google / google_play_service / libproject / google-play-service_lib)

  3. 项目属性 - > android - >库添加google-play-service_lib

  4. 构建路径 - >订购和导出检查Android私人库

答案 2 :(得分:0)

我通过在导入Google Play服务库时选中“将项目复制到工作区”来解决此错误。 更多信息:http://developer.android.com/google/play-services/setup.html