我的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
,因此返回了错误的资源。我认为我做错了什么。有没有人对这可能有什么想法?
答案 0 :(得分:-4)
我解决了这个问题。原来,库项目中的JAR被错误地构建(特定于我的构建系统)。对于在搜索时遇到此问题的任何人,感到抱歉;它不会很有帮助。