【问题标题】:Where do I find android.support.v7.mediarouter.R$attr?我在哪里可以找到 android.support.v7.mediarouter.R$attr?
【发布时间】:2013-08-13 12:02:16
【问题描述】:

短版

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

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

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

加长版

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

我在 ubuntu 13.04 上使用 ADT 捆绑的 eclipse 进行开发。

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

  • GoogleCastSdkAndroid-1.0.0.jar
  • android-support-v4.jar
  • android-support-v7-appcompat.jar
  • android-support-v7-gridlayout.jar
  • android-support-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 文件在哪里?我在放置 com.jeffbmartinez.helicast.R 文件的 gen 目录中没有看到它。

此外,我觉得奇怪的是 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,但那里几乎没有信息。

我是否缺少依赖项?如果是这样,我从哪里获得它或如何生成它?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 把它作为一个有资源的库引入就可以了。没有意识到这是一个选择。考虑到这个想法,谷歌搜索变得容易多了。对于未来的访问者:要使用 eclipse 而不是命令行,请点击此链接:developer.android.com/tools/support-library/…
    • 我按照步骤导入了android-support-v7-mediarouter项目。我收到一条错误消息:错误:检索项目的父项时出错:找不到与给定名称“Widget.AppCompat.ActionButton”匹配的资源。 styles.xml /android-support-v7-mediarouter/res/values 似乎找不到解决此问题的解决方案。 W/o 这解决了我无法让我的应用程序项目运行。任何帮助将不胜感激。
    • @bond..嗨,我也面临同样的问题..如果您找到了解决方案,您能告诉我解决方案吗..这真的很有帮助..
    • 这是我如何导入支持库的问题。一旦我删除并重新导入了支持库并进行了清理,它终于起作用了。希望这会有所帮助
    • 我从一开始就使用Android库导入,使用这个:developers.google.com/cast/docs/android_sender,但我有同样的错误......怎么会?
    【解决方案2】:

    为了避免任何 XML 编译错误,只需配置构建路径以解析为 ANDROID API 17(例如 Project > Properties > Android in Eclipse)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-16
      • 2012-05-30
      • 2013-07-13
      • 2012-06-05
      • 2011-04-24
      • 2021-02-02
      • 2016-07-02
      • 1970-01-01
      相关资源
      最近更新 更多