【问题标题】:Android: resources unavailable from library project(s) app -> liba -> libbAndroid:库项目应用程序-> liba-> libb中的资源不可用
【发布时间】:2012-07-12 00:37:30
【问题描述】:

全部,

我正在尝试在我的应用程序中使用现有的开源项目(我们将其称为 A)作为库。项目 A 还带有自己的库项目 (B)。项目 A 编译并运行得很好;但是,当我尝试在我的应用程序中使用 A 时(我检查了 A 中的“Is Library”并将 A 添加到我的应用程序中)我收到几个错误“没有找到属性 'X'in 包中的资源标识符......”这些B 中存在特定属性。我什至检查了它们是否被添加到 A 中的 R 中,事实上,它们是。

我的问题:为什么我的应用看不到这些资源存在?

我找遍了,只有一种情况和我一样:

Android library not pulling its resources through to other projects

但我没有看到我的任何资源都被命名为相同的。

我正在使用带有 ADT v20.0 的 Eclipse

感谢您的帮助!

编辑:如果有帮助,我正在尝试使用的开源应用程序是 AnySoftKeyboard (ASK)。我也尝试过创建一个新项目并将 ASK 添加为库——没有骰子。

EDIT2:使 ASK 成为库的一部分需要将几个 switch 语句转换为 if-else 语句,因为 R Id 未声明为库的最终版本。

【问题讨论】:

  • 你试过清理所有三个项目吗?
  • @yorkw 对不起,我应该提到这一点。我曾多次尝试清理、重新启动、“取消库”和“重新库”。我还尝试刷新并使用构建路径。我想我也尝试过其他类似的小事情,但目前我能想到的就是这些。谢谢!
  • 查看 r17 版本 here 中红色的重要更改。
  • @yorkw 抱歉,但我仍然没有看到我需要做什么。该页面指出:“这意味着库项目无法从他们依赖的另一个库项目中导入 R 类。无论如何这都不是必需的,因为它们自己的 R 类包含所有必要的资源。”基于此,我认为它会起作用(并且适用于 A 对 B 的依赖)。但是,我确实在下面看到:“仅当引用设置为在引用项目中导出时才会发生这种情况”,这表明我需要导出“引用”。我很困惑,因为我不需要从项目 B 中这样做!

标签: android eclipse adt library-project


【解决方案1】:

这些错误显然是由于在您转换为库的 AnySoftKeyboard 项目中使用了自定义属性。我发现最近在 ADT 中添加了一个解决方案(在 Rev 17 上),提到了in this answer

按照指示,我尝试替换所有实例

http://schemas.android.com/apk/res/com.menny.android.anysoftkeyboard

http://schemas.android.com/apk/res-auto

在新转换的库项目中,并且能够构建和运行包含该项目的应用程序(虽然没有真正测试任何功能)。

希望这会有所帮助。

【讨论】:

  • 做到了。感谢您花时间为我测试!我试图投票赞成你的答案,但我没有足够的代表。如果我连自己问题的答案都不能投票,这个系统就太严格了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多