首页 文章

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

提问于
浏览
602

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

30 回答

  • 5

    执行:构建>清理项目

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

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

  • 10

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

    • 确保layout.xml文件中没有错误 .

    • 转到 Build > Clean project

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

  • 8

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

    gradlew清洁

    要么

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

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

  • 11

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

  • 7

    伙计们,我觉得这里黑暗中有很多镜头 . 在某些情况下,只有在您修复问题后,清洁和同步项目才有帮助 .

    步骤1:所以请查看指定包的每个文件的顶部如下 pakage="YourURL.YourProject"; 并确保指定了正确的包(您自己的项目) . 您将在 java 文件和 AndroidManifest.xml 中找到它,并且java文件引用正确的包是至关重要的,因为该包包含您指向的资源("R") . 他们应该 not match up 发生错误 cannot resolve Symbol R .

    第2步:清洁,同步,等等 . 完成

    那为什么这会随机发生或者我做错了什么?

    如果您使用 copy and paste 代码,您应该密切关注"package=",如上所述 . 更重要的是,当你粘贴代码时,它会立即运行 sort of debugger (请原谅我的坏技术术语)来显示"presumed errors",它会立即考虑"Wrong Package",并且你会得到所有错误 . 因此,即使您在粘贴后立即更正了表示法,调试器也已刷新 . 这就是为什么 "Clean, Sync, Whatever" 的作品 SOMETIMES

  • 39

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

    android:id="@+id/viewID"
    

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

  • 7

    这对我来说是个头疼的问题 . 在我的情况下,在Android Studio(安装build.gradle配置)中配置“Google Play服务”后出现错误 . 这反过来要求minsdk> 7,但错误是非常不清楚(实际上对此的抱怨只显示为“信息”) . 无论如何..在清单文件和build.gradle文件中将minsdk更改为8并重建项目时,错误消失了 .

    所以..关于这一点的一般建议,如果我可以概括 - 你的清单文件或其他配置文件可能有一些问题,这阻止了正确的构建 . 尝试非常努力地查看错误报告,甚至是 Headers 为“info”的消息,以获取有关它可能是什么的任何提示......

  • 12

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

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

    像这样:

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

    最后我发现这个棘手的问题是因为我的R.java 's file size. My project is very a huge one, it supports many multi-languages and multi screen sizes. There are so many resources that my R.java'的文件大小约为 2.5M .

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

    改变这一行:

    idea.max.intellisense.filesize=2500
    

    至 :

    idea.max.intellisense.filesize=5000
    

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

  • 5

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

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

    这应该够了吧 .

    我目前正在使用 Android Studio 3.0.1 .

  • 212

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

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

    enter image description here

    检查我的sdk
    enter image description here
    中的buildTools版本

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

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

    但这一切都无济于事 .

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

    改变的build.gradle(模块:APP)

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

    要么

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

    enter image description here

  • 678

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

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

    快乐的编码.. :)

  • 22

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

  • 11

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


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

  • 4

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

    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.`
    
  • 8

    Build > Clean Project

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

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

  • 7

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

    带有gradle文件的

    • Sync project

    • Build -> Clean Project

    • File -> Invalidate Caches

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

    问题出现在 xml file 中,我已经为 android:id 而不是id资源类型提供了普通的字符串值 .

    MISTAKE

    android:id="username"
    

    CORRECTION

    android:id="@id/username"
    

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

    NOTE

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

  • 49

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

  • 4

    在Android Studio的最新版本中,至少对我而言,以下作品:

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

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

  • 5

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

    • 有时会替换保留相同名称的图像文件 .

    • 假设您从布局中删除了一个项目.xml说 <Button/> 但它仍然在任何Activity或Fragment .java中声明 .

    • 还有更多 .

    跟踪错误的最佳方法是重建它,而不是干净或同步做一些故意的错误 .

    如果它没有解决你的问题那么必须有一些缺陷或运行时错误或由于资源的不当使用而发生错误可能是你的代码或设计中的java或xml文件强制gradle停止因为(R )esource文件无法正确索引您的资源,您必须承认 .

    如果您的项目在进行更改之前运行,则注释掉您所做的更改并尝试重建项目 .

    它肯定会起作用,因为不会有任何变化 .

    要跟踪确切的错误,请通过将更改分解为更小的模块来检查更改 .

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

  • 28

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

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

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

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

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

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

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

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

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

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

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

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

  • 4

    如果您在 moving java files or directories 之后看到此错误到其他位置,那么您可以保证Android Studio感到困惑 . 你猜怎么着?撤消这些操作并不能解决问题 .

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

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

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

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

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

  • 5

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

    import com.example.yourproject.R;

  • 5
    • 检查您的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 文件并清理项目 .

  • 9

    只需清理项目并使用Gradle文件同步项目 .
    enter image description here

    问题将得到解决 .

  • 103

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

  • 7

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

    我所做的是:

    • 检查SDK更新

    • 然后安卓工作室更新,

    • 然后重新打开该项目

    • 打开andoridmanifest.xml

    • 擦除android:标签中"_>"之间的空格并保存 .

    这对我行得通 .

  • 14

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

    • AndroidManifest.xml 中设置 <manifest> 的正确 package 文件夹结构 .

    • AndroidManifest.xml 中为 <activity>android:name 设置新包位置 .

    • 清除缓存

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

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

  • 4

    我有这个

    • 我的大写字母可绘制的资源 .

    • 导入Android.R由Android Studio(或Eclipse)添加

    • xml文件中出错

  • 7

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

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

    从顶部的菜单中选择:

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

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

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

    UPDATE: 我确实遇到了一个问题,Android Studio在修复后仍然显示错误,即使我现在可以在错误仍然存在的情况下构建并运行完美 . (我正在运行一个金丝雀构建,所以暂时将其归结为此)

  • 9

    更改最新的sdk版本,这对我有用

    1.单击文件,然后单击项目结构2.然后选择"app"然后单击确定,它对我有效 .

相关问题