我有一个 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而无需使用辅助方法手动解决它?
这是一个可以帮助您的插图。
从图书馆获取资源
