【问题标题】:Google Maps Android API v2 crashes with NoClassDefFound ErrorGoogle Maps Android API v2 因 NoClassDefFoundError 而崩溃
【发布时间】:2013-06-22 15:26:12
【问题描述】:

我正在尝试实现 google maps android api v2 示例的最基本示例。 但它因错误而崩溃:java.lang.NoClassDefFoundError: com.google.android.gms.R$styleable。

我已经设置了 google api 并查看了 stackoverflow 帖子,例如:

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

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

谢谢。

谢谢,您是如何获得附件中显示的 png 的?google play 服务在我的包资源管理器中显示为引用库;我确实添加了它;这是我的日志:

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}

【问题讨论】:

标签: android google-maps


【解决方案1】:

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

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

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

再一次,您不需要创建新的 Google Maps API 密钥来测试您的项目,只需使用默认提供的 API 密钥,在您的谷歌 API 控制台。

【讨论】:

  • 我已将 support-v4.jar 添加到我的 lib 目录中。并且目标也已设置为 Google APIs.Fido;你给我的链接很有用;它已经解决了 classNotFound 错误。我的地图不再轰炸;现在唯一的问题是它说谷歌播放服务需要安装在我的模拟器中。如果我单击按钮获取它;它会抛出一个错误,指出没有可以处理意图的活动。如何安装活动来处理此类请求?或者如何在模拟器中安装google play?
  • 我建议你使用真机,而不是模拟器。关于如何在模拟器中安装它,你可以通过谷歌搜索找到它,但我认为这非常耗费你的时间。请在您的 Android 2.2 上尝试测试您的应用。
  • @mugum 你可以试试这个在模拟器上安装 google play ^^。看到这个:stackoverflow.com/a/13734937/1821326 这是我的配置:stackoverflow.com/a/14271933/1821326
【解决方案2】:
  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 私有库

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2013-03-24
      • 2013-10-03
      • 2012-11-23
      • 1970-01-01
      • 2013-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      相关资源
      最近更新 更多