ChatGPT解决这个技术问题 Extra ChatGPT

Android Studio 中的“无法解析符号 R”

想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。

在我引用 R.id.something 的所有类中的每个实例中,R 都是红色的,它表示“无法解析符号 R”。此外,每次出现 R.layout.something 时,都会用红色下划线表示“无法解析方法 setContentView(?)”。该项目始终构建良好。一直看到这种情况很烦人。我在这里阅读了许多其他关于类似但最涉及从 Eclipse 导入项目的问题。我正在使用我认为是最新版本的 Android Studio 并且该项目是使用 Android Studio 创建的,并且没有任何“无法解决 R”问题。如果有人知道,我想知道是什么原因造成的。

过去我遇到过 xml 错误,例如:progressbar cannot be cast to android.widget.textview,我通过更改 textview 的名称来解决这个问题。我仍然真的不知道是什么导致了错误的开始。
如果您更改了名称,也许您现在正在尝试使用 res/strings.xml 中不存在的字符串引用?
在问这个问题之前我搜索了很多次,发现了很多类似的问题,包括你提到的那个。我确实阅读了该问题中的建议,并且我的任何 java 文件中都没有 import Android.R。
嘿大家我忘了问这个问题,因为它是很久以前被问到的。一年前我应该接受我自己的答案,现在是上面的评论。问题在于,当时 android studio 还处于早期阶段,作为一个新开发人员,我永远不应该使用它。请放心,现在一切正常,并且一直如此。如果可能,请取消删除我的原始答案,以便我接受。
没有找到 R 不是你的错误,它是由构建错误引起的错误修复你的其他错误,你应该没问题。

t
tokhi

我也有这个问题。一个简单的 'gradlew clean' 和 'gradlew build' 就可以了。

单击 Build->Clean Project 将执行 gradle clean


有时您还需要重新启动 android studio。或者至少对我来说。
对于那些对使用命令行感到不安的人,请单击 Build->Clean Project,这将执行“gradlew clean”。 ;)
不走运...清洁重建对我不起作用
如果 clean,rebuild,invalidate caches-restart 不能解决,请选择:import package.R;
对我来说,这导致了问题:gradle 中的 ApplicationId 和清单中的包名称不匹配(尽管自动导入为 R 文件添加了错误的地址)。我推荐这篇小文章来澄清两者之间的区别。 blog.stylingandroid.com/package-name-vs-application-id
O
Om Sao

在最新版本的 Android Studio 中,至少对我来说,以下工作:

“工具”->“Android”->“使用 Gradle 文件同步项目”

在最新的 Android Studio 3.1.3(2018 年 7 月)中,主菜单栏中提供了“使用 Gradle 文件同步项目”。

https://i.stack.imgur.com/fKCc0.png


您当时使用的 Android Studio 版本是多少?
对我不起作用(Android Studio 0.8.14)。但是,Build > Clean 项目运行良好。
仍然适用于 Android 1.2.1。如果第一次不起作用,请记住多次执行此操作。
这是唯一对我有用的东西。我首先尝试了所有其他解决方案。
在 Android Studio 3.1.1 中,此选项位于 File -> Sync Project with Gradle Files
T
Tushar Monirul

我使用的是 gradle 3.3.0。这是罪魁祸首。浪费了我生命中的 6.50 小时。 Gradle 3.2.1 删除了该错误。

classpath 'com.android.tools.build:gradle:3.2.1'

更改 gradle 版本后问题解决。可以找到详细历史记录here


Android 工作室开发人员的又一惊人壮举。恢复到 3.2.1 实际上是唯一对我有用的解决方案......
令人惊讶的是,2 个月后仍然是一个问题。最新版本(3.3.2)没有修复它,3.2.1 修复了。
您也可以将 Android Studio 升级到版本 3.3,而不是返回到 gradle 3.2.1。查看我的回答here
它通过将 3.3.0 更改为 3.2.1 来工作,但我的问题是它在 3.3.0 上运行良好,我刚刚重构并更新了 manifest xml 文件和 gradle 文件并同步了 gradle 。我可以知道可能是什么原因
25 小时的互联网,看起来这是唯一可行的解决方案。谢谢安卓工作室:(....
M
Mina Fawzy

我有一个类似的问题,这就是我所做的:

使用 Gradle 清理项目和同步项目,

https://i.stack.imgur.com/eJQc7.png

https://i.stack.imgur.com/uYTQZ.jpg

从 build gradle (module) 将 minSdkVersion 从 8 更改为 9

defaultConfig {
        applicationId "PackageName"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

但这一切都没有帮助。

最后我找到了答案(这在我的情况下有效)

从 build.gradle(module:app) 更改

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.1'
......
....
}

或者

选择文件 |项目结构将构建工具版本更改为 21.1.1

https://i.stack.imgur.com/yeyP5.png


Y
Yuriy Vasylenko

检查您的 xml 文件。清洁项目。

就是这个。

例如,我的 strings.xml 中有一个条目:

<string name="A">Some text</string>

activity_main.xml 我使用了这个字符串条目

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>

在处理项目时,我删除了

 <string name="A">Some text</string>

因此 activity_main.xml 变得无效。结果:无法解析 R。

因此,请检查您的 *.xml 文件并清理项目。


我提到的一个 XML 文件中的一个缺失图像对我造成了这个问题。将图像放入文件夹中,清理干净,R 现在又开心了。
我不小心在strings.xml 中定义了我的字符串两次。 Studio 根本没有表现出来。 X-(谢谢你的回答。
为什么没有反馈在 IDE 中为错误的 XML 文件下划线?
当发生您提到的事情时,该问题会在 xml.xml 中突出显示。我已经尝试了我在互联网上可以找到的所有内容,但没有解决我的问题,尽管应用程序运行正常。
s
serv-inc

如果您在将 java 文件或目录移动到其他位置后看到此错误,那么您可以保证 Android Studio 已经混淆了。你猜怎么着?撤消这些操作并不能解决问题。

因此,您尝试清洁,但这不起作用。

并且重新启动也不起作用。

但是尝试文件-> 使缓存无效/重新启动...-> 无效并重新启动

Android Studio 维护有关哪些文件依赖于哪些其他文件的信息。而且由于移动文件没有正确实现,移动文件会导致错误。这还不是全部:这些依赖项的缓存用于加速构建。

这意味着您不仅需要重新启动,还需要使这些缓存失效以恢复(或更准确地说,重建)健全性。


没有帮助。也尝试过清洁/重建。将 java 包移动到另一个包后发生错误。有趣的是,可以在一个包中访问 R 类,但不能在我移动的包中访问它。
在最新版本的 Android Studio 中,Invalidate 和 Restart 现在是默认菜单选择。这应该至少可以帮助一些人。 (太糟糕了,他们没有修复所有导致此错误的疯狂错误!)
移动和重命名项目后出现此错误。这解决了所有清理和重启后的 R 问题。谢谢你。
如果您第一次尝试,这绝对是正确的答案 1.) 清理和重建 2.) 确保您的 xml 文件有效
M
M.A.K. Ripon

我想如果你把你的活动文件放到另一个文件夹而不是默认文件夹。您需要使用 Rcom.example.yourproject.R(这是您的项目 R 文件而不是 Android.R 文件)导入所有活动。例如,在 MainActivity 文件中插入这一行:

import com.example.yourproject.R;

啊,在你第一次构建之前仍然会有错误消息。但是,您只需按构建,Android Studio 就会生成 R 文件,构建应该会成功。
我认为最好在修复后清理项目然后构建。或按 Shift + F9 使用您的设备或模拟器进行调试。我更喜欢在真实设备上调试。
M
Mr Robot

这个问题似乎有很多原因。最近,我添加了一个名为 NewActivity 的活动进行测试。这创建了一个名为 res/menu/new.xml 的文件,而 gradle 不喜欢该名称,因为 new 是保留字。

毕业清洁

或者

“工具”->“Android”->“使用 Gradle 文件同步项目”

这些绝对是值得尝试的好东西,但在运行这些命令之前,您可能需要解决一些其他问题。


谢谢也为我工作。小问题 - 如果我想这样做,我应该在哪里输入 gradlew clean (我做了“工具”->“Android”->“与 Gradle 文件同步项目”)?
打开命令终端,切换到项目目录,执行“./gradlew clean”
这如何比“重建项目”更好地解决问题?
是的,就我而言,我添加了一个名为“import.png”的 png 文件。我不得不重命名它,在我的例子中是“import_icon.png”,然后项目编译好了。
Z
Zoe stands with Ukraine

R.java 文件包含 xml 和 java 页面之间的链接。只有当您的某些资源文件出现问题时,才会出现“R 无法解决”。所以最好和有效的方法是删除res文件中最后完成的xml或drawable。然后根据android编码规范再次从那里开始。这是唯一的方法。有效且正确的方法。

还可以使用 Git 来正确跟踪代码。 ..


就我而言,不仅在 XML 中存在问题,而且在 PNG(可绘制)中也存在问题。
l
lloydyu24

你的代码只是被打乱了。答案相当简单。

只需转到构建 --> 清洁项目。

这应该够了吧。

还要检查您的 Android Studio 版本。

我目前正在使用 Android Studio 3.0.1。


清理项目工作。看起来像 android gradle 插件中的错误
i
invertigo

您最近是否更新了您的 SDK 工具?启动 android SDK 管理器并确保您拥有最新的 SDK 工具,该工具现在与平台工具分开。当我第一次更新我的 SDK 管理器时,我遇到了同样的问题,直到我关闭并重新打开 SDK 管理器,SDK 构建工具包才显示安装/更新。


我相信那里的一切都是最新的。这真的会导致这样的问题吗?
如果您没有安装新的 SDK 构建工具,可以。
P
Pervy Sage

我必须在 android studio 中导入我的 R 包。例如:import com.example.<package name>.R


这发生在我重构我的包名后,但不知何故android工作室离开了import com.example.old-package-name.R,所以我不得不重命名导入。
我已将一些 UI 内容移至子包,然后出现错误,我需要从父包中导入 R。
A
A P

您应该做两件事,首先清理项目(在构建菜单中) - 它删除可能是罪魁祸首的构建目录:

https://i.stack.imgur.com/cvHwL.png

接下来,将项目与 Gradle 文件同步(在文件下):

https://i.stack.imgur.com/2lxyP.png

这是 Windows 10 上 Android Studio 3.6.1 中项目的位置。

如果一切都失败了,无效缓存和重新启动(在文件下)通常可以解决问题。在我看来,这会关闭整个程序并花费最多的时间。

https://i.stack.imgur.com/97Oin.png

澄清一下,我在 Windows 10 上运行它,但它也应该在 MacOS 和 Linux 上运行。


太棒了,拯救了我的一天
@IdoBarnea 很高兴为您提供帮助!
谢谢。使缓存无效并重新启动解决了问题
A
Arunendra

https://i.stack.imgur.com/hvdVL.png

问题将得到解决。


需要注意的是,右键单击“应用程序”并单击菜单中的同步按钮并不能实现此目的。谢谢。
R
Ryan Heitner

我有这个

我的可绘制资源中的大写字母。导入由Android Studio(或Eclipse)添加的Android.R xml文件中的错误


我遇到了这个问题,因为我的一个 XML 文件中存在错误。解决了这个问题然后做了一个Build->Clean Project
M
Matthew Cawley

我最近遇到了这个问题,而清理/构建等并没有解决它。我猜我在某个地方遇到了问题,但不确定在哪里可以找到它(是在清单、资源 xml 文件等中吗?)。

当出现问题时,您可以通过运行代码分析来找出问题所在。

从顶部的菜单中选择:

分析 -> 检查代码,使用“默认”配置文件扫描整个项目。

您的检查结果将包含一个名为“Android”的元素。在这里,您将获得导致资源和清单文件出现问题的任何内容的列表。这些错误将打开生成的 xml 文件,这些文件将以红色显示任何错误。

我的确切问题是由于我使用基于风味的清单文件而导致的,并且我意外地在风味的 <application> 标记内复制了一些权限。

https://i.stack.imgur.com/VCyc5.png

更新:在修复后 Android Studio 仍然显示错误之后,我确实遇到了一个问题,即使我现在可以在错误仍然存在的情况下构建并运行得非常好。 (我正在运行一个金丝雀版本,所以现在把它放下)


有趣的是,我只在一个文件上遇到了这个问题,然后运行了“检查代码”过程,它自行清除了(清理和重建并没有解决它)。一定有什么东西卡在了 Lint 中,只有这样才能清除。谢谢!
这次真是万分感谢!虽然这发现了许多一般性错误,这是意料之中的,但摧毁整个城堡的部分是 Asset Studio 生成的 XML 文件中的一个小语法错误!一旦我解决了这个问题,一个清洁项目就让我继续前进。
S
Sridhar

当我手动重命名我的应用程序的域文件夹时,我遇到了这个问题。为了解决这个问题,我不得不

在 AndroidManifest.xml 中设置正确的 包文件夹结构。在 AndroidManifest.xml 中为 android:name of 设置新的包位置。清除缓存

文件菜单-> 使缓存无效/重新启动...

一旦 Android Studio 重新启动并构建新索引,问题就会消失。


在我的情况下,我只需要从我的新包名 import com.Neue.Package.R; 导入 R
A
Alex Burov

我遇到了同样的问题:Android Studio 3.2 该项目编译并运行良好,但我收到“无法解析符号“R”屏幕警告

没有帮助:

构建->清理项目

构建->重建项目

文件->使缓存无效/重新启动

帮助:

任何一个

在 build.gradle

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

用。。。来代替

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

或者

将 Android Studio 更新到 3.3


你救了我的命 !将 android studio 更新到 3.4 为我解决了这个问题
T
TBridges42

这是一个非常古老的问题,但它仍然经常发生,并且这里没有真正全面的答案。

我遇到这个问题的次数比我想承认的要多。它可能是由各种各样的问题引起的,这些问题大多与您的项目结构不符合预期有关。这是我遇到的所有问题的列表:

从 Eclipse 导入到 Android Studio 并不总是很顺利,尤其是使用旧版本的 Android Studio。确保您使用的是正确的目录树。对于一个中等成熟的应用程序,它应该看起来像这样:

AppName/        // AppName is your app's name, obviously
    .gradle/    // This is a compiler created directory. You should normally leave it alone
    .idea/      // Ditto
    build/      // This too
    gradle/     // And this
    app/
        build/
        libs/
        src/
            androidTest/   // Tests based on the Android instrumentation runner should go here
            main/
                java/
                    fully/           // Typically com
                        qualified/   // the domain name. Longer package 
                                     // names may have deeper folder trees
                            AppName/ // All your java files go here
                res/
                    drawable-*/      // One of these for each resolution you support
                    layout/          // All of your general layouts
                    menu/            // All of your menu layouts
                    values/          // All of your resource xml files
                    xml/             // PreferenceScreen layouts go here
                AndroidManifest.xml
            debug/         
            test/          // Pure jUnit tests should go here
        .gitignore
        app.iml
        build.gradle   // This is the gradle file you should be making most changes to
        proguard-rules.pro
    .gitignore
    build.gradle       // This gradle file should mostly be left alone
    gradle.properties
    gradlew
    local.properties
    AppName.iml
    settings.gradle

它在您的 IDE 中可能看起来不像这样。文件树上方有一个下拉菜单,它以不同的方式显示您的文件,它在我的系统上默认为一个名为 Android 的系统,它将您的文件分成不同的类型。从名为 Project 的问题中解决此类问题更容易,直接从操作系统的文件系统中更容易解决,因为 Android Studio 会将仅包含另一个文件夹的文件夹折叠到一行中。

特别是如果您更改了应用程序的名称,您需要确保源代码树 main/java/com/domain/AppName 已更新。还要确保你的 AndroidManifest.xml 中的包标签是正确的。

如果您的 Gradle 文件或 AndroidManifest.xml 中有错误,这将阻止 Android Studio 正确构建您的资源文件。有时升级 Android Studio 会破坏 Gradle 文件,尤其是从 1.0 之前的版本开始。有时这是因为它停止支持旧版本的 Gradle 插件,因此您需要更新版本号。有时很难找到当前版本。截至今天,2015 年 7 月 17 日,我的应用程序可以使用 com.android.tools.build:gradle:1.2.3 正常编译。这是在最外层的 gradle 文件的依赖块中,

如果您的 AndroidManifest 引用了不存在的可绘制资源或字符串资源或活动,它将中断并导致此错误。有时,如果任何内容引用了不存在的可绘制资源或字符串资源,您将收到此错误。

如果您的资源中有文件已损坏,或者 xml 文件无效,您将收到此错误。

根据我的经验,有时 Android Studio 会无缘无故地打嗝,您需要重新启动它和/或您的 PC。我不知道为什么,但有时它会起作用。

如果您有两个同名的 xml 资源,在不相互覆盖的目录中,您可能会遇到此问题。例如,您可以在 drawable-mhdpi 和 drawable-xhdpi 中使用相同的名称,因为它们会根据目标设备相互覆盖,但是如果您在布局和菜单中使用相同的名称,则会导致问题。重命名或删除其中一个文件。

如果只有某些资源存在此问题,则这些资源很可能位于错误的目录中。

在一种情况下,我不得不完全重新安装 Android Studio。我不知道出了什么问题,但它起作用了。

在一种情况下,我将整个项目移动到不同的目录并将其作为新项目重新导入。我不知道出了什么问题,但它起作用了。

名称保留字的 XML 文件可能会导致此问题。重命名或删除它们。

您的 Gradle 文件可以通过多种方式最终引用您尚未安装的构建工具版本。通过更改 Gradle 或下载适当的构建工具来纠正此问题。

最后,在你修复了任何错误之后,你需要清理你的 Gradle 项目。您可以通过转到顶部的 Build 菜单并选择 Clean Project 来执行此操作。


G
Gundu Bandgar

只需转到 Android 顶部菜单列表。单击构建菜单,在构建下单击重建项目。

https://i.stack.imgur.com/5tmuZ.png


J
Jiakang Zhang

对于这个问题,我有一个特殊情况。

在我的项目中,一切顺利,可以编译构建成功,但是在我的Android Studio IDE中(我也尝试过Intelligent IDEA,他们的情况相同)R.java文件无法很好地解析并且总是下降到红线。

https://i.stack.imgur.com/ntmYS.jpg

这几乎让我发疯,我在编程时无法忍受读取颜色。

最后我发现这个棘手的问题是由我的 R.java 文件大小引起的。我的项目非常庞大,它支持多种多语言和多屏幕尺寸。资源太多了,我的R.java的文件大小在2.5M左右。

Android Studio 中文件的最大大小默认设置为 2.5M,因此无法很好地解析大于此限制的文件。您可以更改“AndroidStudio-root/bin/idea.properties”中的默认设置。

改变这一行:

idea.max.intellisense.filesize=2500

至 :

idea.max.intellisense.filesize=5000

然后重启Android studio,红色消失,我又可以愉快地编程了。


在 Android 3.2 中只是帮助/编辑自定义属性
S
S.Pedro

构建 > 清理项目

这对我有用。有几次同样的问题,这似乎是正确的。除非您更改了某些内容或调用了变量 R。这个问题通常会突然发生,当它发生在我身上时,所以我想它只是 Android 工作室吓坏了。哈哈

祝你好运,祝你的项目好运。


谢谢。它也对我有用。我替换了drawable中的一些图像并得到了那个错误。
H
Hassan Naqvi

执行:构建 > 清理项目

重要提示:确保在消息窗格 (Alt+0) 中清理项目后没有任何错误。如果您发现任何带有感叹号的红色圆圈,则必须删除代码中的这些错误。

这些错误大多与@string/ 或@array/ 有关。再次清洁项目并完成!


E
Elsanty

我有同样的问题,当我创建一个新项目时会发生这种情况。

我要做的是:

检查 SDK 更新

然后android studio更新,

然后重新打开项目

打开 andoridmanifest.xml

擦除 android:label 中“_>”之间的空格并保存。

这对我行得通。


O
Oussama Essamadi

我自己很难解决这个问题。

确保您的 layout.xml 文件中没有错误。

转到构建 > 清理项目

它对我有用,希望它也对你有用。


S
Siva Prakash

我有同样的问题,大多数时候它是由

将项目与 gradle 文件同步

做构建 - >清理项目

执行文件-> 使缓存无效

但这一次,即使做了所有这些事情,错误仍然存在,最后我找到了罪魁祸首。

问题出在 xml 文件 中,我在其中为 android:id 提供了普通字符串值,而不是 id 资源类型

错误

android:id="username"

更正

android:id="@id/username"

在 xml 文件中弄乱与资源相关的内容是导致此错误的主要原因。请注意,它可能不会在 xml 布局文件中显示为错误。

笔记

在大多数情况下,编译器会在消息中向您显示错误的来源。在尝试其他解决方案之前先尝试检查它


B
Bapusaheb Shinde

`我有同样的问题,它通过以下方式解决:

1) Sync Project with gradle files
2) Build -> Clean Project
3) Build -> Rebuild Project
4) File -> Invalidate caches

//imp step
5) Check your xml files properly.`

这是一个很好的答案,尽管我只需要在 gradle 文件中放置“//”并选择重新同步。然后所有 AS 都识别了导入并允许我运行该应用程序。
T
Tevin J

这种表示法似乎工作正常。

android:id="@+id/viewID"

Android Studio 的设计面板似乎不太好用。


u
user1137313

同样的问题。当我在我的可绘制文件夹中添加一些图像并尝试访问它们时开始。此外,添加的图像具有大写字母的扩展名。这似乎使构建崩溃,因为即使我重命名它们,消息也是相同的,并且 R 无法访问。我所做的是,在 .iml 文件中,我查找了 excludeFolder 并删除了它们(如下所示):

  <excludeFolder url="file://$MODULE_DIR$/build/apk" />
  <excludeFolder url="file://$MODULE_DIR$/build/assets" />
  <excludeFolder url="file://$MODULE_DIR$/build/bundles" />
  <excludeFolder url="file://$MODULE_DIR$/build/classes" />
  <excludeFolder url="file://$MODULE_DIR$/build/dependency-cache" />
  <excludeFolder url="file://$MODULE_DIR$/build/incremental" />
  <excludeFolder url="file://$MODULE_DIR$/build/libs" />
  <excludeFolder url="file://$MODULE_DIR$/build/manifests" />
  <excludeFolder url="file://$MODULE_DIR$/build/res" />
  <excludeFolder url="file://$MODULE_DIR$/build/symbols" />
  <excludeFolder url="file://$MODULE_DIR$/build/tmp" />

之后我重建了项目,R 神奇地重新出现了。


S
Sourav Roy

导致此错误的原因有很多。

有时会发生替换保持相同名称的图像文件。假设您从布局 .xml 中删除了一个项目,例如