为什么android构建系统在库项目中不包含R.class,我该如何解决这个问题?

为什么android构建系统在库项目中不包含R.class,我该如何解决这个问题?,android,r.java-file,Android,R.java File,在Eclipse中,我将一个Android应用程序项目转换为一个库项目。该库被其他应用程序项目使用 R.java文件是在库中生成的,但是当我签入.jar文件时,它不在库中 在库中,R文件位于一个包中:com.library.R.java。 在应用程序中,我有com.app.R.java。 库需要使用库中的R,并导入com.library.R,但找不到它。 com.app.R文件包含库和应用程序中的所有定义 为什么Android build系统没有在库项目中包含R.class,我该如何解决这个问题

在Eclipse中,我将一个Android应用程序项目转换为一个库项目。该库被其他应用程序项目使用

R.java
文件是在库中生成的,但是当我签入
.jar
文件时,它不在库中

在库中,
R
文件位于一个包中:
com.library.R.java
。 在应用程序中,我有
com.app.R.java
。 库需要使用库中的
R
,并导入
com.library.R
,但找不到它。
com.app.R
文件包含库和应用程序中的所有定义


为什么Android build系统没有在库项目中包含
R.class
,我该如何解决这个问题?

我不确定我到底是如何解决的,但我尝试了很多方法,包括完全重建等。最终解决的办法是删除库R.java,然后重建。不知何故,这触发了将com.library.R.java添加到应用程序项目的gen文件夹中,这似乎是一开始就应该发生的事情。

我不知道为什么,但这是预期的行为,请检查

重要更改:我们已经更改了库项目生成的方式 和包R类:R类不打包在jar输出中 再也没有图书馆项目了。库项目不生成R 类,用于它们所依赖的库项目。仅主应用程序 项目会在自己的类库旁边生成库R类


有人知道这是为什么吗?

您需要使用
getResources().getIdentifier()

i、 e.
getResources().getIdentifier(“home”、“id”、“android.support.v7.appcompat”)


也许您需要在构建jar之前清理项目,并确保R.java仍然存在。R文件丢失的最常见原因是其中一个xml文件出错。我希望是这么简单,我都试过了。只是为了确保我删除了库R.java文件并重新生成了它。这是应该的。我确实注意到R.class正确地位于库项目的classes目录中。所以我需要弄清楚为什么com.library.R.class最终不会出现在最终的应用程序中。如果类文件在jar中,您需要找出为什么最终应用程序中的导入没有看到它。。。陈述显而易见的事实有时会有所帮助。Eclipse中有一个怪癖,即LIB需要位于项目属性| Java构建路径顺序和导出中的最终项目路径之上。我不确定那个窗口中复选标记的意义,但我已经检查了所有jar文件。实际上,删除R.java解决了这个问题。我以为我以前做过,但这次库R.java文件也出现在应用程序项目的gen文件夹中。这是我第一次看到这一点,这似乎是必要的。谢谢你的帮助。在安卓系统中,你需要稍微“抖动”一些东西,有时它们会到位:)保持幽默感。