【问题标题】:Cannot resolve symbol 'NonNull' after Android Studio updateAndroid Studio 更新后无法解析符号“NonNull”
【发布时间】:2018-11-01 09:17:05
【问题描述】:

我最近更新了 Android Studio。之后它似乎不再能够解析一些支持注释,例如@NonNull@Nullable。在更新之前它确实工作得很好。但是,一切仍在编译,我能够执行代码,但它仍然在我的导入处显示符号无法解析消息。

到目前为止我已经尝试过的:

  1. 在 build.gradle (Module: Application) 中包含依赖:

    compile 'com.android.support:support-annotations:27.0.0'
    
  2. 我已使缓存无效并重新启动
  3. 清理和重建项目
  4. (编辑)同步 Gradle

我不知道为什么这不起作用,非常感谢您的帮助。

【问题讨论】:

标签: android android-studio gradle android-gradle-plugin


【解决方案1】:

如果您使用的是 Android Studio,请使用 Refactor -> Migrate to AndroidX 选项并执行迁移。

【讨论】:

    【解决方案2】:

    单击红色灯泡图标并选择将注释添加到类路径。它将解决问题。

    【讨论】:

      【解决方案3】:

      我最近在导入一个库时遇到了类似的问题,为了解决这个问题,我不得不尝试如下导入语句:

      必须更改以下两次导入。

      发件人:

      import android.support.annotation.NonNull;
      import android.support.annotation.Nullable;
      

      收件人:

      import androidx.annotation.NonNull;
      import androidx.annotation.Nullable;
      

      【讨论】:

        【解决方案4】:

        同样的事情发生在我身上。而且我被困了很长一段时间——为了让 Android Studio 保持最新状态,对某人玩了多么糟糕的把戏。而且仅仅重建项目甚至还没有接近工作。

        显然,对 gradle 进行了一些更改,导致旧程序无法正确编译。

        我必须创建一个新项目并将我的所有文件复制到新项目中。是的,它会咬大的毛茸茸的绿色,但我必须这样做才能让它发挥作用。

        我希望有人提出比这更好的答案! (我很想和做出这种改变的白痴“交谈”几分钟!这不是第一次发生这种情况——也不是第 2 次、第 3 次、第 4 次等)

        !!!新信息!!!

        刚开始一个新项目,结果又发生了。它正在使用主/设计模板。是的,正如 Android Studio 生成的代码一样,ItemListActivity.java 和其他文件中存在错误,因为 NonNull 没有正确导入。

        太好了,我去了应用程序 build.gradle 文件并查看了所有依赖项警告。为什么项目生成器使用旧的依赖项?嗯。所以我更新了所有依赖项以使用最新的。 “现在同步。”哇,成功了!

        这是我更新的行:

        implementation 'androidx.appcompat:appcompat:1.0.2'
        implementation 'androidx.recyclerview:recyclerview:1.0.0'
        androidTestImplementation 'androidx.test:runner:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
        

        当然,您必须更改数字以反映当前版本。

        再次,令人难以置信的是,直接开箱即用的模板中存在如此明显的错误。总有一天我要去山景城,系上一些鞋带。

        【讨论】:

          【解决方案5】:

          从 android api 29 ('targetSdkVersion' 29) 开始,com.android.support 已移至 'androidx' 库。

          在您的build.gradle 文件(应用级别)中,依赖项阻止使用...

          dependencies{ 
              ...
              implementation 'androidx.annotation:annotation:1.1.0' 
          }
          

          并且在您的.java 文件中使用如下导入:

          import androidx.annotation.NonNull;
          

          再次构建您的项目!

          【讨论】:

          • 让我觉得 Android SDK 供应商希望开发人员每天都构建他们的代码,并确保它仍然在构建时没有错误。说真的,就在几个月前成功构建的代码现在停止构建。无论如何感谢您的帮助。
          【解决方案6】:

          转到构建 --> 重建项目。 AS 也会刷新 Gradle 依赖项和你的项目。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-05-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-11-15
            相关资源
            最近更新 更多