【问题标题】:Android studio suddenly cannot resolve symbol RAndroid Studio 突然无法解析符号 R
【发布时间】:2013-06-11 06:42:36
【问题描述】:

我在 Android Studio 中打开了一个项目。它由向导生成并且工作正常。

我对 activity_main.xml 做了一些小改动,当我改回 MainActivity.java 时,我在几个地方得到了它无法解析 R 的错误。我可能做了一些事情来导致这种情况。但我不确定是什么,因为当我编辑 xml 时它出现了。

有谁知道这可能是什么解决方案? 我可以在 r/release/packege/com/ 中找到 R.java,它看起来不错。

【问题讨论】:

  • 你试过清理你的项目吗?
  • 这可能是由于 XML 文件中的错误而发生的。看看你已经改变的东西,以防万一。然而,有时,这也只是做“清洁”的一个例子。我自己也遇到过这两种情况。
  • 谢谢。我都做了。我的 xml 中有一个小错误,我还重建了项目。现在它起作用了。奇怪的是 ide 仍然警告有问题。

标签: android android-layout android-studio


【解决方案1】:

大部分时间是由于 XML 文件错误造成的。 XML 文件可以是布局文件、值文件或清单文件。请检查您的 xml 文件并尝试重建项目。有时清理项目并重建它也可以。

【讨论】:

  • 还要确保没有重复的文件夹。尤其是在/res 目录中。
  • 我不完全确定这是我提出问题时出现问题的原因。但是,根据我的经验,这是 AS 和 eclipse 都无法解决 R 问题的最常见原因,我认为这是正确的答案。
  • 我经常遇到这种情况。通常它是我的 XML cmets 中的一些非转义字符。我希望 Android Studio 能指出问题所在,而不是要求您梳理所有以前的 XML 更改。
  • 在AndroidManifiest.xml 中不存在某些字符串
  • 还有,这个不用说,但是我犯了这个错误,注意错误信息。当您的某个 XML 文件出现问题时,编辑器不会将您带到问题所在 - 它甚至根本不会将您带到 XML 文件。但它可能会在错误消息中为您提供导致问题的 XML 条目的名称。
【解决方案2】:

此外,请确保您没有具有无效名称的可绘制对象。我有一个带有数字文件名的可绘制对象,但它不适用于 Android,因此无法编译 R.java。

【讨论】:

    【解决方案3】:

    降级您的 Gradle 插件版本

    再多的清理、重建和重新启动都不会对我有用。

    唯一成功的是将我们的 Gradle 版本从 3.4.0-alpha02 降级到 3.2.1。

    所以,而不是:

    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0-alpha02'
    }
    

    我们用过:

    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }
    

    进行更改并进行 Gradle 同步后,一切正常。

    不确定它是否与 alpha 版本或该版本有关,或者是否更改您的 Gradle 版本根本只是强制刷新,否则无法使用其他命令完成,但你去吧。

    【讨论】:

    • 对于那些在工具链中使用任何 alpha 版本的人来说,降级可能是一个非常好的建议。只需降级到生产版本。由于这个问题是在 2014 年在整个 Alpha 版 Android 工作室中提出的,所以我可能也应该这样做。
    • @EinarSundgren 同意。我通常避免 alpha 版本,尤其是生产版本,但这是由另一个开发人员设置的。不过,我很惊讶这最终成为罪魁祸首。当然,一个很好的错误消息表明问题所在会很好。
    【解决方案4】:

    确保您的AndroidManifest.xml 中的包名称正确。当我的R.whatever 被标记为红色时,这解决了我的问题!

    【讨论】:

    • 对我来说是一个非常重要的 DUH 时刻。由于存在旧文件路径,我还不得不重新启动工作室。
    【解决方案5】:

    尝试通过执行以下操作来清理项目:

    如果您使用的是 Windows,请打开 CMD、cd 到您的项目目录并运行 gradlew clean。

    【讨论】:

    • 这可能是个好建议。最初的问题发生在一个 pre gradle 项目中,所以当时这不是解决方案。当前的 Eclipse 工作区似乎存在一些错误,可能是由于安装了 Aptana。当我将项目移动到另一个工作区时,问题就消失了。
    • 您也可以通过Build > Clean Project 或Build > Rebuild Project 通过GUI 进行操作。还可以通过注释掉容易出错的行来尝试清理。成功清理后,取消注释。
    【解决方案6】:

    我刚遇到这个问题,原因是android studio在编辑布局后自动向源文件添加了一个导入:

    import android.R
    

    当然,主要的 R 类没有布局中的所有符号,这使得一切都变得一团糟。 删除那条线为我解决了。

    编辑: 似乎 eclipse 很早就有the same problem。

    【讨论】:

      【解决方案7】:

      我有时会在更新 Android Studio 后遇到此问题。并不总是立即,而是在一段时间后(可能在重新启动程序后)。

      这对我有用:工具 - Android - 将项目与 Gradle 文件同步。

      由于某种原因,仅单击更改 build.gradle 文件后显示的“立即同步”链接对我没有任何更改。即使这些消息说的大致相同。

      【讨论】:

        【解决方案8】:

        我遇到了同样的问题,因为在我的 strings.xml 中我忘记了转义撇号。 在 xml 文件中不要使用“\'”!

        【讨论】:

          【解决方案9】:

          我也遇到了同样的问题(最近一次是在我吃午饭的时候——回来了,怎么回事?)。由于这是一个简单的 Hello, World 程序,因此这些错误可以隐藏的地方并不多。 XML 文件看起来不错——我什至没有碰过清单。清洁没有做任何事情。

          所以我注释掉了我的 layout.xml 的一部分以试图缩小问题的范围。果然,错误消失了。

          然后我只是取消注释掉我评论的内容......一切都是笨拙的。奇怪的!也许有一些挥之不去的问题需要解决才能导致布局文件的重建。你会认为这些天不会发生这样的基本事情,但他们确实发生了。

          还有一件事! Java也有可能发生一些事情。很难知道 Java 运行时环境的状态;只是更容易重新开始。所以这里还有一件事要尝试:重新启动计算机,重新启动 Android Studio,然后使缓存无效并重新启动。是的,整头猪。

          【讨论】:

          • 作为附录,我记得过去的编程,如果你在打字时不小心按了控制键,你可以很容易地在你的代码中插入一个隐藏的控制字符。虽然您看不到这些字符,但编译器肯定可以!许多 80 年代的程序员花了很长时间来寻找这些错误。也许像这样的东西偶尔会在 Eclipse 中弹出?有没有cmets?
          【解决方案10】:

          当所有其他方法都失败时,重新启动 android 有时会有所帮助。在启动期间重新加载文件,这可以检测 R

          【讨论】:

            【解决方案11】:

            当您重命名包名称时会出现此问题。 重命名包名后,必须更改older包 命名为较新的。 对我来说,一旦我改变它,它就解决了这个问题。 之后,您可能会在 xml 文件中遇到错误,您必须更改 包名也在那里。 就是这样。

            【讨论】:

              【解决方案12】:

              我刚遇到 R 问题,几个小时后发现问题出在我的一个 xml 文件中使用的区域拼写上。问题词是行为,这是美国人拼写的行为。 我是澳大利亚人,我们被教给你一些古老的英语拼写某些单词的方式,所以我在硬币掉之前看了好几次。 虽是小东西,但很容易偷偷摸摸地咬你,而且很难被发现,而且会浪费很多时间。

              【讨论】:

                【解决方案13】:

                在我的情况下,我刚刚将一些新的图像文件添加到可绘制文件夹中,并且不小心将 GIF 与我的 PNG 一起放在那里。我还没有将它们合并到项目中。我删除了 GIF,然后进行了清理和重建。这为我解决了问题。

                【讨论】:

                  【解决方案14】:

                  我在导入 Udacity 示例程序时遇到了这个确切的问题。 Android Studio 中的消息窗格显示错误是无法在项目文件深处的子目录中加载 .PNG。

                  结果显示所有子目录路径名称的 PNG 都大于 Windows 7 定义的名称长度限制(260 个字符)。我给项目取了一个较短的名称——以腾出一些空间——然后愉快地编译了 Android Studio。

                  【讨论】:

                    【解决方案15】:

                    在您尝试过制作项目、清理项目、重建项目后,仍然无法正常工作。 尝试重启 Android studio

                    【讨论】:

                      猜你喜欢
                      • 2014-02-01
                      • 2020-05-01
                      • 2016-10-26
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2018-05-14
                      • 2016-08-23
                      相关资源
                      最近更新 更多