我有一个 Android 库项目 (A),它被多个 Android 应用程序项目使用。放置在libs
库项目文件夹中的库 jar 指的是该项目中的com.lib.R
资源文件(例如图像)。
当应用程序项目(B)使用这个库时,它可能会调用一些代码来触发 libs 文件夹中的 jar 文件来引用com.lib.R
. 不幸的是,任何访问这些资源的尝试都会导致以下错误。
java.lang.NoClassDefFoundError: com.lib.R$layout
src/
如果从 的文件夹Lib A
或 的src/
文件夹访问这些资源Project B
,它们会正确解析为一个int
值并且可以使用,但我不希望这样做并将代码保留在libs
文件夹中。
我的问题- 为什么会发生这种情况,我该如何解决?一种解决方法是使用 以编程方式获取资源 ID resource.getIdentifier()
,但这很快就会变得很痛苦。有没有一种方法我仍然可以com.lib.R
从下面的库 jar中使用,libs
而无需使用辅助方法手动解决它?
这是一个可以帮助您的插图。
从图书馆获取资源