【问题标题】:R.java file from Android library project not importing into application project来自 Android 库项目的 R.java 文件未导入到应用程序项目中
【发布时间】:2012-07-19 15:57:34
【问题描述】:

我按照此处关于如何创建 Android 库项目并将其用于 Android 应用程序的说明进行操作:

http://developer.android.com/guide/developing/eclipse-adt.html

但它不起作用。我可以看到库项目已添加到我的应用程序中,但我无法引用其中的任何内容,因为它不会构建。来自 lib 的 R.java 文件没有被添加到我的应用程序项目中,因此 lib 项目包含大量错误,它试图在任何地方引用它自己的 R.java 文件。

我不知道这是否与它有关,但在控制台中有消息指出“在包'Lib Package'中找不到属性'X'的资源标识符。我的库包有为我制作的自定义视图定义了一些可样式化的属性,所有这些都在此控制台消息中被抱怨。库构建得很好,直到我将库连接到我的应用程序之前,我不会在控制台中收到这些消息,所以我不知道这是怎么回事。

我真的很想让这个工作。我花了整整两天的时间,无济于事。请提供您可能需要帮助的任何想法!

【问题讨论】:

  • 我有同样的问题,我没有使用自定义属性。我只希望我的库 R 在我的主应用程序中可见。似乎 Eclipse 正确生成了 _src 文件,但是在库 /gen 文件夹中生成的 R 类没有在我的主项目中链接。我应该怎么办?我不想自己链接它,以后会破坏的。

标签: android reference


【解决方案1】:

我的难题的答案是该库有一个 attrs.xml 文件,该文件为我创建的自定义视图定义了一些自定义属性。我删除了 attrs.xml 并对自定义视图代码中的值进行了硬编码,重建了库,问题就解决了。

但这并不酷,这意味着具有自定义属性的自定义视图不能在库中使用。我希望 Google 能解决这个问题。

【讨论】:

  • 我没有使用任何 attrs.xml,但我的应用程序没有构建,我如何引用其他 java 类(不是通过活动或服务或接收器扩展的)
  • @ChristopherPerry 你[或者你知道]提交了错误报告吗?我同意,谷歌应该解决这个问题。无法在库中实现自定义视图是完全没有意义的。
  • 好吧,只要您不尝试定义要在视图中使用的任何自定义属性,您就可以实现自定义视图。无论如何,我使用这个库的方式有点可疑。
【解决方案2】:

这实际上是文件重复的问题。您不能构建包含同一文件的多个实例的项目。由于 android 项目的性质,XML 文件通常是第一个否定成功构建的文件。

【讨论】:

  • 资源应该在你的库项目和你的应用程序项目之间合并。出于某种原因,我现在不想研究,属性没有合并。
  • 可以使用同一文件的多个实例构建项目 - 例如,splashscreen_lite.pngsplashscreen_pro.png。正如@Eitan Schwartz 所说,这些将在构建时合并,应用程序项目资源优先于库项目资源。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 2014-10-03
  • 2013-05-13
  • 1970-01-01
相关资源
最近更新 更多