【问题标题】:Android library project returns incorrect resourcesAndroid 库项目返回不正确的资源
【发布时间】: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.txtR.java 文件实际上都已删除。

标签: android android-resources android-library


【解决方案1】:

我解决了这个问题。结果发现库项目中的 JAR 构建不正确(特定于我的构建系统)。对在搜索时遇到此问题的任何人表示抱歉;这不会很有帮助。

【讨论】:

  • 我的 JAR 文件遇到了同样的问题,无法获取正确的资源。如果可以,请提供帮助。
  • @PrabhjotSingh 所以,如果您有问题,您应该提出一个新问题,而不是捎带现有问题。也就是说,查找 getIdentifer() 函数。
  • 您能否详细说明您的构建系统以及您是如何修复它的?我现在遇到了这个问题。
猜你喜欢
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 2011-06-12
  • 1970-01-01
相关资源
最近更新 更多