我在访问Android库中的资源时遇到问题。我用一些资源(com.library)创建了库项目,然后我将模块导入到应用程序项目(com.app)中。所以我有带有库和应用程序的Android Studio项目 当我想访问某些库资源(com.library.R.string.label)时,我在编译时遇到错误
package com.library.R does not exist
当我想从包含/使用R.string.label的应用程序运行一些库方法时,我得到了
java.lang.NoClassDefFoundError: com.library.R$string
我使用
compile project(':Library')
从IDE的角度看,一切都很好,而R.java是通过引用资源创建的。我想在我的应用程序项目中使用相同的用法,例如android.R.string.cancel或类似的库。
我在哪里做错了?谢谢你的帮助。
PS:将来我希望将我的图书馆项目作为aar包。
答案 0 :(得分:2)
只要您将一个库添加到项目中,所有资源都将被复制"到你的应用程序的R文件。因此,如果您想要从图书馆访问字符串,则不要执行getString(com.library.R.string.some_string)
之类的操作,而只需拨打getString(R.string.some_string)
即可。
就图书馆方法而言:你介意与我们分享一些代码吗?目前我无法想象出现了什么问题。
答案 1 :(得分:0)
问题出在gradle配置文件中的错误包名(重命名后)。