我在哪里可以找到android.support.v7.mediarouter.R $ attr?

时间:2013-08-12 08:31:15

标签: android adt android-support-library google-cast

短版

我在实例化android.support.v7.app.MediaRouteButton对象时遇到了未处理的异常。我明白了:

NoClassDefFoundError: android.support.v7.mediarouter.R$attr

这堂课在哪里?或者,如果它是自动生成的,我该如何让它自动生成?

更长的版本

我正在关注Chromecast的Android应用开发教程:https://developers.google.com/cast/cast_2nd-screen_app_tutorial

我正在使用ADT捆绑的eclipse开发,在ubuntu 13.04上。

我将以下jar文件导入到工作区中的libs目录中,并通过“Java Build Path”面板中“Add Jars ...”按钮将它们包含在我的Java Build Path中。我项目的属性:

  • GoogleCastSdkAndroid-1.0.0.jar
  • 机器人支撑-v4.jar
  • 机器人支撑-V7-appcompat.jar
  • 机器人支撑-V7-gridlayout.jar
  • 机器人支撑-V7-mediarouter.jar

我有一个活动(由Eclipse创建的默认“hello world”),并且没有修改布局。我需要添加以导致错误(下面粘贴)显示的唯一代码是:

import android.support.v7.app.MediaRouteButton;
...
MediaRouteButton mrb = new MediaRouteButton(this.getApplicationContext());

当我构建并运行应用程序时,我在LogCat中看到下面粘贴的错误消息(如果有人认为它相关,我可以发布更多信息)。我注意到的关键事情是我似乎缺少android.support.v7.mediarouter.R $ attr(NoClassDefFoundError),并且它是从android.support.v7.app.MediaRouteButton的构造函数调用的

08-12 00:36:02.837: E/AndroidRuntime(29600): java.lang.NoClassDefFoundError: android.support.v7.mediarouter.R$attr
08-12 00:36:02.837: E/AndroidRuntime(29600):    at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:117)
08-12 00:36:02.837: E/AndroidRuntime(29600):    at android.support.v7.app.MediaRouteButton.<init>(MediaRouteButton.java:113)
08-12 00:36:02.837: E/AndroidRuntime(29600):    at com.jeffbmartinez.helicast.MainActivity.onCreate(MainActivity.java:31)
...

它正在运行MediaRouteButton的构造函数这一事实让我相信正确找到了jar文件所以我认为我没有错误配置与依赖项(jar文件)相关的eclipse。但是,我的理解是这些'R'文件是自动生成的。如果这是正确的,我的android.support.v7.mediarouter.R文件在哪里?我没有在gen目录中看到它,其中放置了com.jeffbmartinez.helicast.R文件。

此外,我发现MediaRouteButton引用了一个我在上面列出的5个jar依赖项中找不到的包名称。 android-support-v7-mediarouter.jar仅包含 android.support.v7.app。* android.support.v7.media。*

除了我的错误日志之外,我唯一找到 android.support.v7.mediarouter 引用的地方是https://developer.android.com/reference/android/support/v7/mediarouter/package-summary.html,但那里的信息很少。

我错过了依赖吗?如果是这样,我在哪里获得它或如何生成它?

谢谢!

2 个答案:

答案 0 :(得分:9)

你不能只包括罐子。您需要将android.support.v7.mediarouter项目添加为Android库依赖项。这样,项目中的资源就会合并到你自己的资源中。

mediarouter文件夹中运行android update lib-project -p .,然后您可以将其添加为依赖项。

答案 1 :(得分:1)

为了避免任何XML编译错误,只需配置构建路径以解析为ANDROID API 17(例如项目&gt;属性&gt; Eclipse中的Android)