Android Studio中"无法解析符号R"

ez4*_*ick 703 android r.java-file android-studio

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

Vip*_*gan 714

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


单击Build- > Clean Project,这将执行gradle清理

  • 有时你还需要重启android studio.或者至少对我而言. (54认同)
  • 对于那些使用命令行而感到厌烦的人,请单击Build-> Clean Project,然后执行'gradlew clean'.;) (23认同)
  • 没有运气......清洁重建对我来说不起作用 (22认同)
  • 如果干净,重建,无效的caches-restart无法解决,请执行以下操作:import package.R; (5认同)
  • 对我来说,这就是问题所在:gradle中的ApplicationId与清单中的包名称不匹配(尽管自动导入为R文件添加了错误的地址)。我推荐这篇小文章来澄清两者之间的区别。blog.stylingandroid.com/package-name-vs-application-id (2认同)

小智 228

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

"工具" - >"Android" - >"与Gradle文件同步项目"

在最新的Android Studio 3.3.3(2018年7月)中,主菜单栏中提供了"与Gradle文件同步项目".

在此输入图像描述

  • 在 Android Studio 3.1.1 中,此选项位于 File -> Sync Project with Gradle Files (2认同)

Tus*_*rul 151

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

classpath 'com.android.tools.build:gradle:3.2.1'
Run Code Online (Sandbox Code Playgroud)

更改gradle版本后问题已解决.详细历史记录可以在这里找到.

  • Android工作室开发人员又一个惊人的壮举.回到"3.2.1"实际上是唯一对我有用的解决方案...... (9认同)
  • 同样的问题:-(但我浪费了2.5小时:-)我已经想写一个评论,但我看到你的答案并评为+1 (7认同)

Min*_*wzy 108

我有类似的问题,这是我做的:

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

在此输入图像描述

检查我的sdk中的buildTools版本 在此输入图像描述

从构建gradle(模块)将minSdkVersion从8更改为9

defaultConfig {
        applicationId "PackageName"
        minSdkVersion 9
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
Run Code Online (Sandbox Code Playgroud)

但这一切都无济于事.

最后我找到了答案(这在我的案例中有效)

从build.gradle(模块:app)更改

android {
    compileSdkVersion 21
    buildToolsVersion '21.0.1'
......
....
}
Run Code Online (Sandbox Code Playgroud)

要么

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

在此输入图像描述

  • 改变构建版本对我有用. (3认同)

小智 58

  1. 检查您的xml文件.
  2. 清洁项目.

就是这个.

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

<string name="A">Some text</string>
Run Code Online (Sandbox Code Playgroud)

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

<TextView
android:id="@+id/textViewA"
android:text="@string/A"/>
Run Code Online (Sandbox Code Playgroud)

当我一直在使用项目时,我删除了它

 <string name="A">Some text</string>
Run Code Online (Sandbox Code Playgroud)

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

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

  • 为什么没有反馈来强调IDE中的错误XML文件? (6认同)

Sco*_*ggs 51

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

所以你试试干净,但这不起作用.

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

但是尝试File - > Invalidate Caches/Restart ... - > Invalidate and Restart

Android Studio维护有关哪些文件依赖于哪些其他文件的信息.由于移动文件未正确实现,因此移动文件会导致错误.并非全部:这些依赖项的缓存用于尝试加速构建.

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

  • 移动和重命名项目后出现此错误。这解决了所有清理和重新启动后的 R 问题。谢谢你。 (2认同)
  • 这与获得一杯咖啡大致相同 - 如果它仍然标记R为红色,那么反过来可以用来带一个漂亮的咖啡淋浴...ヽ('ー`)ノ (2认同)

cha*_*suf 28

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

gradlew clean

要么

"Tools" -> "Android" -> "Sync Project with Gradle Files"

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


nin*_*ong 26

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

import com.example.yourproject.R;


Avi*_*han 24

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

构建 -> 清理项目

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

文件 -> 将项目与 Gradle 文件同步

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

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

文件 -> 使缓存无效

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

  • 谢谢。使缓存无效并重新启动解决了问题 (2认同)

Min*_*nto 16

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

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

快乐的编码.. :)


llo*_*u24 15

你的代码只是乱码.答案很简单.

Just go to **Build** --> **Clean Project**.

这应该够了吧.

我目前正在使用Android Studio 3.0.1.


inv*_*igo 14

您最近更新了SDK工具吗?启动android SDK管理器并确保您拥有最新的SDK工具,现在它们与平台工具分开.我第一次更新我的SDK管理器时遇到了同样的问题,在我关闭并重新打开SDK管理器之前,SDK 构建工具包没有显示安装/更新.


Aru*_*dra 12

只需清理项目并使用Gradle文件同步项目.在此输入图像描述

问题将得到解决.


Mat*_*ley 11

我最近有这个问题,清洁/构建等没有解决它.我猜我在某个地方遇到了问题,但不知道在哪里找到它(是在清单,资源xml文件等?).

当出现问题时,您可以通过执行代码分析来了解它是什么.

从顶部的菜单中选择:

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

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

我确切的问题是因为我使用了基于flavor的清单文件,并且我<application>偶然在标签中复制了一些权限.

检查

更新:我确实有一个问题,Android Studio仍然在修复后显示错误,即使我现在可以构建并运行完全正常,但错误仍然存​​在.(我正在运行一个金丝雀构建,所以暂时将其归结为此)


Rya*_*ner 9

我有这个

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


TBr*_*s42 9

这是一个非常古老的问题,但它仍然发生了很多,这里没有真正全面的答案.

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

从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
Run Code Online (Sandbox Code Playgroud)

它可能在您的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引用了不存在的drawable或字符串资源或活动,它将会中断并导致此错误.有时,如果有任何引用不存在的drawable或字符串资源,您将收到此错误.

如果资源中的文件已损坏,或者xml文件无效,则会出现此错误.

根据我的经验,有时候Android Studio会毫无理由地打嗝,你需要重新启动它和/或你的PC.我不知道为什么,但有时候它有效.

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

如果只有一些资源出现此问题,那么这些资源很可能位于错误的目录中.

在一个案例中,我不得不完全重新安装Android Studio.我不知道出了什么问题,但它确实有效.

在一个案例中,我将整个项目移动到另一个目录,并将其作为新项目重新导入.我不知道出了什么问题,但它确实有效.

带有名称保留字的Xml文件可能会导致此问题.重命名或删除它们.

Gradle文件有几种方法可以最终引用您尚未安装的构建工具版本.通过更改Gradle或下载相应的构建工具来纠正此问题.

最后,在修复了任何错误后,您需要清理Gradle项目.您可以通过转到顶部的"生成"菜单并选择"清理项目"来完成此操作.


Gun*_*gar 9

只需转到Android顶级菜单列表.单击Build菜单,在Build下单击Rebuild Project.

在此输入图像描述


Sri*_*har 9

当我手动重命名我的应用程序的域文件夹时,我遇到了这个问题.要解决这个问题,我必须这样做

  1. 设置适当package的文件夹结构<manifest>AndroidManifest.xml.
  2. 设置新的包位置android:name<activity>AndroidManifest.xml.
  3. 清除缓存

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

一旦Android工作室重新启动并构建新索引,问题就会消失.


Ale*_*rov 9

我遇到了同样的问题:Android Studio 3.2该项目可以编译并正常运行,但是在屏幕上出现“无法解析符号“ R””警告

难道没有帮助:

  • 构建->清理项目
  • 生成->重建项目
  • 文件->使缓存无效/重新启动

帮助:

要么

在build.gradle中

dependencies {
        classpath 'com.android.tools.build:gradle:3.3.0'
...
}
Run Code Online (Sandbox Code Playgroud)

用。。。来代替

   dependencies {
            classpath 'com.android.tools.build:gradle:3.2.1'
    ...
    }
Run Code Online (Sandbox Code Playgroud)

要么

将Android Studio更新到3.3


Per*_*age 8

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


小智 8

我有一个特殊情况来解决这个问题.

在我的项目中,一切顺利,它可以成功编译和构建,但在我的Android Studio IDE(我也尝试过智能IDEA,它们处于相同的情况),R.java文件无法很好地解决并始终是掉在红线上.

像这样: 在此输入图像描述

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

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

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

改变这一行:

idea.max.intellisense.filesize=2500
Run Code Online (Sandbox Code Playgroud)

至 :

idea.max.intellisense.filesize=5000
Run Code Online (Sandbox Code Playgroud)

然后重启Android工作室,红色被解雇,我可以再次愉快地编程.


小智 7

我遇到了同样的问题,当我创建一个新项目时就会发生这种情况.

我所做的是:

  • 检查SDK更新
  • 然后android工作室更新,
  • 然后重新打开项目
  • 打开andoridmanifest.xml
  • 擦除android:标签中"_>"之间的空格并保存.

这对我行得通.


小智 7

构建>清洁项目

这对我有用.有几次同样的问题,这似乎是正确的.除非你改变了某些东西或称为变量R.这个问题通常不会发生,当它发生在我身上时,所以我想它只是Android工作室吓坏了.哈哈

有一个好的,祝你的项目好运.


Has*_*qvi 7

做:构建>清理项目

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

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


Ous*_*adi 7

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

  • 确保layout.xml文件中没有错误.
  • 转到" 构建">"清理项目"

它对我有用,希望它也适合你.


Siv*_*ash 6

我遇到了同样的问题,而且大部分时间都是由它解决的

  • 使用gradle文件同步项目
  • 构建 - >清理项目
  • 执行文件 - >使缓存无效

但是这次错误在做完所有这些事情之后仍然存在,最后我找到了罪魁祸首.

问题出在一个xml文件中,我给了一个普通的字符串值android:id而不是id资源类型.

错误

android:id="username"
Run Code Online (Sandbox Code Playgroud)

更正

android:id="@id/username"
Run Code Online (Sandbox Code Playgroud)

弄乱与resourcesxml文件相关的事情是导致此错误的主要原因.请注意,它可能不会在xml布局文件中显示为错误.

注意

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


Bap*_*nde 6

`我有同样的问题,它解决了:

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.`
Run Code Online (Sandbox Code Playgroud)


Tev*_*n J 5

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

android:id="@+id/viewID"
Run Code Online (Sandbox Code Playgroud)

Android Studio的设计面板似乎效果不佳.


use*_*313 5

同样的问题.我在可绘制文件夹中添加了一些图像并尝试访问它们时启动.添加的图像也是大写字母的扩展名.这似乎已经破坏了构建,因为即使我重命名它们,消息是相同的,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" />
Run Code Online (Sandbox Code Playgroud)

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


Sou*_*Roy 5

有许多原因导致此错误。

  1. 有时,它会替换具有相同名称的图像文件。
  2. 假设您从布局.xml中删除了一个说为a的项目,<Button/>但仍在任何Activity或Fragment .java中声明了该项目。
  3. 还有很多。

跟踪错误的最佳方法是相当干净地重建它或同步处理某些故意的错误。

如果不能解决您的问题,则必须存在一些缺陷或运行时错误,或者由于对资源或资源的不当使用而导致的错误可能是代码或设计中的java或xml文件,这迫使gradle停止,因为(R )资源文件无法正确索引您的资源,因此您必须承认这一点。

如果您的项目在进行更改之前已运行,请注释掉所做的更改,然后尝试重建项目。

由于没有任何变化,它肯定会工作。

要跟踪确切的错误,请通过将更改分成较小的模块来检查更改。

例如-如果要通过单击按钮使列表可见,并在适配器中插入列表值,请首先检查是否能够使其可见,然后检查适配器错误。