我按照以下步骤创建了一个库项目:
apply plugin: 'com.android.application'
更改为apply plugin: 'com.android.library'
applicationId "..."
醇>
然后我在我的应用程序中包含了库项目:
include ':app', '..:NotifierLib:library'
File -> Project Structure ... -> app -> Dependencies -> Add -> Module dependency
一切正常,我可以构建应用程序并在我的设备上运行它,但是当库中指定的组件尝试访问库资源时,它会崩溃。在我的例子中,我实现了BroadcastReceiver和PreferenceItem。如果调用BroadcastReceiver,它会更新项目,从而访问一些字符串资源:
String key = context.getResources().getString(R.string.myKey);
但是,当调用BroadcastReceiver时,应用程序崩溃并出现以下错误:
java.lang.NoClassDefFoundError: goe.math.uni.notifierlib.R$string
当你看到应用程序试图访问库中的R.string
时,虽然库中存在资源,但它失败了。我做错了什么?
答案 0 :(得分:2)
那么,那么回答。资源造成了冲突。 真的没有办法避免冲突。但是,当我完成了我已经创建了库的项目时,我发现避免冲突的最佳方法是从一开始就创建我的库。试图从现有代码中提取出来的库可能很麻烦。