Android库项目返回不正确的资源

时间:2013-08-20 00:51:45

标签: android android-resources android-library

我的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;

正如预期的那样,在最终的R.java中包含image2会将内存位置向下移动1。

问题:当我从库项目中的JAR引用资源(如R.drawable.image3)时,它会解析为非合并的R.java中的ID。例如:R.drawable.image3 = 0x7f02007d。但是0x7f02007d实际上指向image2,因此返回了错误的资源。我认为我做错了什么。有没有人对这可能有什么想法?

1 个答案:

答案 0 :(得分:-4)

我解决了这个问题。原来,库项目中的JAR被错误地构建(特定于我的构建系统)。对于在搜索时遇到此问题的任何人,感到抱歉;它不会很有帮助。