【发布时间】:2013-08-21 22:17:48
【问题描述】:
我在使用 Android 库项目中的资源时遇到问题。该库项目包含已编译在 JAR 中的 .class 文件中的源代码和 res 文件夹中的资源。这些类是使用--non-constant-id AAPT 选项编译的。
在我的图书馆项目中,我有:
res/drawable/image1.png
res/drawable/image3.png
在依赖库项目的项目中我有:
res/drawable/image2.png
Eclipse 为每个项目创建一个 R.txt 和 R.java。所以总共有两个 R.txt 和两个 R.java。
在库项目的R.java中,资源ID如下:
image1=0x7f02007c;
image3=0x7f02007d;
库项目意味着这个 R.java 文件将与依赖项目的 R.java 合并,产生一个最终的 R.java,如下所示:
image1=0x7f02007c;
image2=0x7f02007d;
image3=0x7f02007e;
正如预期的那样,image2 的包含将最终 R.java 中的内存位置向下移动了 1。
问题:当我从我的库项目中的 JAR 中引用资源(例如 R.drawable.image3)时,它会解析为未合并的 R.java 中的 ID。例如:R.drawable.image3 = 0x7f02007d。但是0x7f02007d 实际上指向image2,因此返回了错误的资源。我假设我做错了什么。有没有人知道那可能是什么?
【问题讨论】:
-
您是否尝试过删除生成的代码以使其重新生成?
-
@BobbyDigital 是的,我已经清理了这两个项目并确认
R.txt和R.java文件实际上都已删除。
标签: android android-resources android-library