Android Studio库项目缺少R.String

时间:2014-12-15 12:56:59

标签: android android-studio

我按照以下步骤创建了一个库项目:

  1. 创建没有活动的普通Android项目
  2. build.gradle
  3. apply plugin: 'com.android.application'更改为apply plugin: 'com.android.library'
  4. build.gradle
  5. 删除行applicationId "..."

    然后我在我的应用程序中包含了库项目:

    1. 将我的 settings.gradle 更新为include ':app', '..:NotifierLib:library'
    2. File -> Project Structure ... -> app -> Dependencies -> Add -> Module dependency
    3. 中添加了库模块

      一切正常,我可以构建应用程序并在我的设备上运行它,但是当库中指定的组件尝试访问库资源时,它会崩溃。在我的例子中,我实现了BroadcastReceiver和PreferenceItem。如果调用BroadcastReceiver,它会更新项目,从而访问一些字符串资源:

      String key = context.getResources().getString(R.string.myKey);
      

      但是,当调用BroadcastReceiver时,应用程序崩溃并出现以下错误:

      java.lang.NoClassDefFoundError: goe.math.uni.notifierlib.R$string
      

      当你看到应用程序试图访问库中的R.string时,虽然库中存在资源,但它失败了。我做错了什么?

1 个答案:

答案 0 :(得分:2)

那么,那么回答。资源造成了冲突。 真的没有办法避免冲突。但是,当我完成了我已经创建了库的项目时,我发现避免冲突的最佳方法是从一开始就创建我的库。试图从现有代码中提取出来的库可能很麻烦。