4

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

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

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

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

4

3 回答 3

2

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

IEgetResources().getIdentifier("home", "id", "android.support.v7.appcompat")

http://developer.android.com/reference/android/content/res/Resources.html#getIdentifier%28java.lang.String,%20java.lang.String,%20java.lang.String%29

于 2014-04-25T23:56:05.590 回答
1

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

http://tools.android.com/recent/dealingwithdependenciesinandroidprojects

重要更改:我们更改了 Library Projects 生成和打包 R 类的方式:R 类不再打包在 Library Projects 的 jar 输出中。图书馆项目不会为他们所依赖的图书馆项目生成 R 类。只有主应用程序项目会生成库 R 类以及它们自己的类。

有谁知道为什么会发生这种变化?

于 2014-04-25T23:14:15.650 回答
0

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

于 2013-01-24T18:47:48.617 回答