【问题标题】:Error at lib support appcompat_v7lib 支持 appcompat_v7 时出错
【发布时间】:2014-10-19 18:29:54
【问题描述】:

我在库 appcompat_v7 遇到问题

路径错误

res/values-v21/styles_base.xml

并在第 75 行显示错误 - 低于 75 到 78:

<style name="Base.Widget.AppCompat.ActionButton"
          parent="android:Widget.Material.ActionButton">
 </style>

在控制台:

home/user/workspace/appcompat_v7/res/values-v21/themes_base.xml:156:错误:错误:未找到与给定名称匹配的资源:attr 'android:colorControlNormal'。

还有几个类似的错误只是改变了 'android:*'

我该如何解决这个问题?

【问题讨论】:

  • 这里也有同样的问题。看起来这是 API v21 更新的问题
  • 您是否尝试使用 API 级别 21 的新 SDK?
  • 我终于通过为我的应用程序以及 appcompat 项目/模块(即包含兼容性 lib v21 使用的资源的项目)切换到 API 级别 21 来运行我的应用程序。现在我发现,v21 似乎不包含全息主题,我的应用看起来完全不同:(
  • 所以我通过从 appcompat-v7-20.0.0.aar 提取并从我的 git 存储库中获取 android-support-v7-appcompat.jar 从“Android 支持存储库”中恢复了 appcompat-v7 资源。现在它再次以更新前的样式运行。
  • @RaulPinto,是的,我正在使用 API 21 进行编译。

标签: android eclipse android-support-library


【解决方案1】:

好的,我不确定这是否是一个真正的“解决方案”,但这是我的理论和我所做的:

我的理论

更新“Android 支持库”版本 21 后,我遇到了类似的错误。看来,我的 IntelliJ 没有正确更新模块中的资源,它指向 appcompat 的 ressources 目录。

此外,我有一些小部件和代码直接指向这些资源中的可绘制对象。

但在 Android 支持库的 v21 中,Google 放弃了对 Holo 主题的支持

因此,编译器抱怨找不到我的主题所依赖的资源。

我做了什么

编译时

说实话,我不太确定我是如何完成这项工作的。我想,我曾经做过一些重新启动和缓存清空等操作。将资源复制到我的项目文件夹等。当我的应用程序最终启动时,它看起来不同了!当然,它有 Material 主题而不是 Holo 主题。

并不是所有的东西都能在这个转变中幸存下来。例如。操作栏是黑色(标准)而不是绿色(我的主题)。所以我尝试回到旧版本的 appcompat,而不是将整个应用迁移到 Material。

既然您问我的解决方案,我将发布我为“降级”到 appcompat v20 所做的事情。

降级到 appcompat v20

  1. 启动 SDK 管理器
  2. 下载Android 支持库
  3. 转到安装 Android SDK 的目录 \android-sdk\extras\android\m2repository\com\android\support\appcompat-v7\20.0.0\
  4. 在我创建目录appcompat 之后,将所有文件从appcompat-v7-20.0.0.aar(它是一个zip 文件)提取到我的项目中的libs\appcompat\ 目录中
  5. 将这些作为模块添加到我的 IntelliJ 中,并使我的项目依赖于该模块
  6. 从我的 git 存储库中恢复了 v20 的 android-support-v7-appcompat.jar
  7. 使用恢复的 appcompat jar 而不是 v21 的 jar

第 6 步是第 6 步,我发现非常困难。我预计 .aar 文件中的 classes.jarandroid-support-v7-appcompat.jar,但事实并非如此。我什至不知道,您可以从哪里获得正确版本的android-support-v7-appcompat.jar,因为我没有在存储库中找到它。而且我不想从“互联网上的某个地方”下载它。

我很“幸运”,它已经在我的 git 中以正确的版本。

现在我的应用已编译并且看起来正确。希望你的也一样!

【讨论】:

【解决方案2】:

升级我的 Eclipse 并在工作区中导入“Android 支持库”后遇到同样的问题。

我认为“降级到 appcompat”是一个不好的解决方案,所以我试图找到另一种方法并找到它。 我的问题是我的 AppCompat 的“项目构建目标”设置为 API lvl 19。所以这是一个问题:

-Eclipse 没有为 AppCompat 加载 API lvl 21 的数据。

-Appcompat 有 Target API lvl 19,但试图为 API lvl 21 设置样式。

也许你也有同样的问题,所以看看什么对我有帮助:

1.

右击 Appcompat 项目 => Properties => Android => Checkout 你的标记在哪里,如果它没有在 Android 5.0 上设置 - 修复它并点击确定。

2.

项目 => 清理 => 设置“清理所有项目” => 好的

附:抱歉,如果我有错误 - 英语不是我的母语。

【讨论】:

    【解决方案3】:

    home/user/workspace/appcompat_v7/res/values-v21/themes_base.xml:156:错误:错误:找不到与给定名称匹配的资源:attr 'android:colorControlNormal'。

    我假设values-v21 代表 api 级别 21,所以我更新到 android 5.0 并且它适用于我。

    【讨论】:

      【解决方案4】:

      我的解决方案更激进: 删除所有样式文件及其所有引用

      【讨论】:

      • 欢迎来到 SO。有了所有详细和相关的答案,我建议您花更多时间解释为什么以及如何这是比上述其他方法更好的方法。谢谢。
      猜你喜欢
      • 2015-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 2016-11-07
      相关资源
      最近更新 更多