Android Studio 突然无法解析符号

Posted

技术标签:

【中文标题】Android Studio 突然无法解析符号【英文标题】:Android Studio suddenly cannot resolve symbols 【发布时间】:2014-02-01 18:05:17 【问题描述】:

android Studio 0.4.2 运行良好,今天我打开它,几乎所有东西都是红色的,并且自动完成功能已停止工作。我查看了导入,AS 似乎突然告诉我它找不到 android.support.v4 (为我提供删除未使用的导入的选项)。 (android.support.v7 似乎没问题)。

我尝试过的事情:

重建项目 清理项目 与 Gradle 文件同步 关闭项目,关闭 AS 并重新启动/重新打开 文件 > 使缓存无效/重新启动 检查 Lint,没有发现任何明显的东西 在 SDK 管理器中仔细检查所有支持库是否都是最新的 检查我的 Build.gradle,虽然没有任何变化,而且和往常一样,它一直在工作。

如果相关的话,这里是:

buildscript 
    repositories 
        mavenCentral()
    
    dependencies 
        classpath 'com.android.tools.build:gradle:0.7.+'
    

apply plugin: 'android'

repositories 
    mavenCentral()


android 
    compileSdkVersion 19
    buildToolsVersion '19.0.0'

    defaultConfig 
        minSdkVersion 8
        targetSdkVersion 19
    


dependencies 
    compile 'com.android.support:support-v4:19.0.0'
    compile 'com.android.support:gridlayout-v7:19.0.0'
    compile 'com.android.support:appcompat-v7:19.0.0'
    compile 'com.google.android.gms:play-services:4.0.30'
    compile project(':libraries:facebook')
    compile files('libs/core.jar')

当我点击“与 Gradle 同步”并打开“项目设置”时,我收到一个红色错误,告诉我我有重复的库引用并删除未使用的引用..

我的项目编译并运行良好,但我真的需要自动完成功能!有人有什么建议吗?

【问题讨论】:

每一次 Android Studio 更新都会破坏项目,我已经厌倦了。为什么他们不能坚持并发布一个可用的版本。 在清理或删除任何文件之前,请先阅读此答案。它可能会解决您的问题。 ***.com/a/19223269/513413 “使缓存无效/重新启动”对我有用。 遇到了同样的问题,并在此 SO 帖子***.com/a/30828772/1550233 上解决了问题 接受这个答案,这样用户就不会手动删除任何东西***.com/a/22901534/7767664 【参考方案1】:

这里前面提到的所有事情都没有真正对我有用。但后来我在文件菜单Invalidate Caches/Restart 中找到了这个菜单项,它似乎已经解决了这个问题。

我真的不知道后台发生了什么,但是当 Android Studio 再次启动时,状态栏会显示 Indexing... 大约一分钟左右,这显然是个奇迹。

作为参考,我使用的是 Android Studio 0.5.4。

【讨论】:

0.5.9 为我工作 对我来说,我在加载 android studios 0.8.2 时遇到了电源故障,它无法识别我的任何 java 导入,一切都是红色的。这对我有用,谢谢! 我正在使用android studio 1.0.2,当我打开我的项目时,我充满了红色错误。我通过 android studio-->file-->invalidate chaches/restart 解决了它。当我的项目重新启动时它起作用了..没有红色错误 Android Studio 1.1.0。我也遇到了电源故障,这成功了。 这应该是正确的答案。我用 Android Studio 1.4 final 确认了。【参考方案2】:

您已经列出了大多数有用的东西,但您可以尝试:

退出 Android Studio 备份您的项目 删除所有 .iml 文件和 .idea 文件夹 重新启动 Android Studio 并重新导入您的项目

顺便说一句,您在“项目结构”对话框中看到的错误消息大部分都是假的。

更新:

Android Studio 0.4.3 在 Canary 更新频道中可用,有望解决大部分此类问题。可能会有一些挥之不去的问题;如果您在 0.4.3 中看到它们,请告诉我们,并尝试为我们提供一组可靠的重现步骤,以便我们确保已处理所有代码路径。

【讨论】:

这对我有用。我要疯了,一整天都想弄清楚!感谢您的回答。 对我来说,删除 .idea 中的库文件夹和使用 gradle 的新闻同步项目就足够了。 我在 0.8.9 中遇到了同样的问题,并尝试了此处列出的所有解决方案,但没有成功:( 在 AndroidStudio 1.2 RC 中对我不起作用。这是一场噩梦。 这种情况在 2018 年仍在发生,您的回答很有帮助。我希望这个问题得到解决……发生在 AS 3.1.1 中。【参考方案3】:

通过链接,它对我有用。

1.) 从 android studio 左上角的菜单中选择 File 选项。

2.) 选择选项:“使缓存无效/重新启动..”它将打开一个对话框。

3.) 单击带有选项的第一个按钮:“无效并重新启动”

4.) 它将关闭工作室并重新启动它。开始索引项目。

它解决了我的问题:

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

来源: https://www.youtube.com/watch?v=FX_gCTpqhwM

【讨论】:

对于 Android Studio 3+:***.com/questions/50313885/… 在 Android Studio 3.5.3 上为我工作 适用于 Android Studio 4.x【参考方案4】:

Android Studio 1.3

    打开模块设置 点击模块菜单下的模块属性选项卡中,将Source CompatibilityTarget Compatibility设置为您的java版本。

我什么也没做,它对我有用。

【讨论】:

在哪里可以找到模块设置? @bendaf 在资源管理器中右键单击您的模块并选择“打开模块设置” 这些设置也可以在File --> Project Structure --> Properties中找到【参考方案5】:

对我来说,这是我的 build.gradle 中的一个“progaurd”构建条目。我删除了整个构建部分,然后重新同步并解决了问题。

【讨论】:

为我工作!谢谢!使用 canary build 1.0RC 1. 使用minifyEnabled trueminifyEnabled false 并且不定义proguardFiles 另外不要忘记 AndroidLibrary 项目不运行 proguard ***.com/a/10992604/665823。【参考方案6】:

我使用的是 Android Studio 3.1.4,当我从具有较低 api 目标的开发分支移动到具有目标 api Oreo 的另一个分支时遇到了此类问题。我尝试了第一个解决方案,但它很棘手,而第二个解决方案没有解决问题。

我的解决方案 当问题再次出现时,我尝试稍微修改我的应用程序 gradle 文件,使其足以让 AS 要求我同步文件,这样就成功了。然后我删除了更改。

我猜“使用 Gradle 文件同步项目”可能也可以,但我自己没有尝试过

希望对你有帮助

【讨论】:

【参考方案7】:

Android Studio 内置了一个更简单的解决方案,它通常对我有用,不需要其他答案中提到的任何蛮力解决方案 - 所以你应该先试试这个:

点击Android Studio右侧的“gradle”符号,然后点击“刷新所有Gradle项目”工具。

【讨论】:

【参考方案8】:

我也想把它扔出去:

对我有用的事情是将我的构建变体改回以前工作的变体。出于某种原因,我之前已经改变了这个(我忘记了为什么)。

无论哪种方式,最好的办法是尝试记住你那天所做的更改(它可能是像清理这样的小事,或者回到以前的 git 提交)......等等。

它也有助于尝试重新同步 gradle 并强制重建。

【讨论】:

【参考方案9】:

今天早上为同样的问题苦苦挣扎了几个小时。从命令行构建我的项目似乎对我有用。

具体步骤-

    克隆的新存储库(存储库中没有 Android Studio 文件) 从命令行构建调试项目 (./gradlew clean assembleDebug) 打开Android Studio,导入项目

要检查它是否有效,请查看您的项目 exploded-bundles 文件夹,检查库并找到 classes.jar。如果它是可扩展的,那么一切都会好起来的。

edit - 我在 Android Studio 中进行清理后发现,它又坏了。因此,如果您必须清洁,则需要再次执行此过程。

【讨论】:

我不知道是什么问题,但 gradle clean assembleDebug 工作正常,现在一切都很好【参考方案10】:

这些方法都没有帮助我在 Android Studio 0.5.8 中。

我的解决方案是删除 ~/.AndroidStudioPreview 目录(在 Ubuntu 中)。抱歉,我不知道它在其他操作系统中的位置。该目录存储临时文件和 Android Studio 设置,因此我错过了所有设置。但它有效!

【讨论】:

也为我工作。 (Elementary OS 上的 Android Studio 0.6.0)【参考方案11】:

另一种方法是下载 JDK 1.7 并在错误消息中从 Android Studio 更改路径。然后选择 Jdk 1.7 文件夹中包含的 Home 文件夹

【讨论】:

【参考方案12】:

今天遇到了同样的问题。通过将项目结构中的 jdk 位置从 \java\jdk1.7.0_05 更改为 \java\jdk1.7.0_25(我直到现在才知道存在)来修复它。

我使用的是 Android Studio 0.8.6。

【讨论】:

【参考方案13】:

我通过从我的模块子项目中删除 settings.gradle 来解决此问题。这是一个带有自己的 settings.gradle 文件的 Java Gradle 项目,但不知何故它搞砸了。

感谢这个人:https://***.com/a/33978721/425238

【讨论】:

【参考方案14】:

我尝试清理项目,然后使缓存无效,但均无效。对我有用的是在 build.gradle (app) 中注释掉我的所有依赖项,然后同步,然后再次取消注释依赖项,然后再次同步。 Bob 是你的叔叔。

【讨论】:

【参考方案15】:

我遇到了类似的问题,但在我的案例中我遵循了以下步骤:-

1).idea文件夹下的.inside项目打开modules.xml。 2).检查同一个iml文件是否有两个条目。 3).删除重复条目之一并关闭android studio或重新构建gradle文件。

就我而言,它有效。 希望对你有帮助

【讨论】:

【参考方案16】:

我通过设置 JDK 解决了这个问题。当我将鼠标悬停在错误上时,我得到一个弹出窗口,说设置 JDK。

【讨论】:

【参考方案17】:

我遇到了同样的问题,这里列出的解决方案都不起作用。问题是我的源文件不在正确的文件夹中。

目录结构必须是:

[project]\[module]\src\main\java\[yourpackage]\[yourclass.java]

【讨论】:

【参考方案18】:

我终于弄清楚了导致这个问题的原因。

实际上,您应该避免将.idea/libraries 文件夹推送到您的存储库。它在 Android Studio 中创建了一些奇怪的东西,往往会删除所有下载的库。

如果您有提交历史记录,只需重新创建所有丢失的库文件并避免再次提交它们。否则,只需删除整个 .idea 文件夹并将其重新导入 AS。

【讨论】:

【参考方案19】:

尝试使用以下值更改您的 build.gradle:

机器人 compileSdkVersion 18 buildToolsVersion '21.0.1'

defaultConfig 
    minSdkVersion 18
    targetSdkVersion 18

【讨论】:

【参考方案20】:

我尝试了此处列出的所有内容。 然后我检查了我的 androidmanifest.xml 由于文件夹重命名和包重命名,我有一些愚蠢的不匹配。

【讨论】:

【参考方案21】:

在我的多模块项目中,问题是模块 A 中的“com.android.support:appcompat-v7”版本是“22.0.0”,但在 B 中是“22.2.0”。解决方案:确保 1. 模块间公共库版本一致。 2. 每个模块都编译没有任何错误(尝试从 CLI 构建每个模块)。

【讨论】:

【参考方案22】:

请注意,文件名和特别是文件夹的名称可能会导致此错误。例如,如果您有一个文件夹“Helpers”,并且该文件夹中的文件包是“com.whatever.helpers”,则不会导致任何编译错误,但会导致 Android Studio 无法加载该文件夹中的符号. 一个典型的原因是当您使用第一个大写字母命名文件夹时,在 Git 上提交它,然后将文件夹名称更改为全部小写。 Git 系统无法识别导致本地和远程存储库之间差异的更改,只有新的存储库克隆会受到影响。

【讨论】:

【参考方案23】:

另一个非常微妙的原因:

多风格库应该比普通的单风格库以特定的方式编译。否则它会默默地产生 cannot resolve symbols 错误。

Multi flavor app based on multi flavor library in Android Gradle

【讨论】:

【参考方案24】:

我有一个更奇怪的解决方案。万一有人遇到这种情况,值得仔细检查你的 gradle 文件。事实证明,当我克隆这个 git 并且 gradle 正在运行时,它从我的 build.gradle (app) 文件中删除了一行。

dependencies 
     provided files(providedFiles)

显然这里的问题是只需将其添加回来并与 gradle 重新同步。

【讨论】:

【参考方案25】:

当我重建一个 aar 文件并将项目中的旧文件替换为新文件时,我遇到了类似的问题。我在这里浏览了所有解决方案,但没有一个解决我的问题。后来我意识到在库项目中已将 minifyEnabled 设置为 true,这有效地删除了许多未在库项目中使用的死代码。

我的解决方案是在库项目中将 minifyEnabled 设置为 false,组装 aar,将其复制到我的项目中,使缓存无效并同步成绩项目,一切正常。

【讨论】:

【参考方案26】:

这些解决方案都不适合我。 我不得不一起卸载Android Studio,然后删除所有Android Studio相关文件(用户文件),然后重新安装。

【讨论】:

【参考方案27】:

我使用共享首选项,但 Android Studio 抱怨编辑器符号。然后,我添加了

import android.content.SharedPreferences.Editor;

符号现在很酷。

【讨论】:

【参考方案28】:

请检查您的项目路径是否包含特殊字符,例如! (感叹号)。

在similar problem that I experienced 中,这是根本原因 - 因为许多 Java 应用程序似乎不能容忍此类特殊字符(例如,从终端执行“gradlew clean”会失败并抛出 RunTimeException。)。 网上发布的其他解决方案都没有帮助我。但是,一旦我删除了 !从路径开始并进行了干净的构建,Android Studio 神奇地工作了。

【讨论】:

以上是关于Android Studio 突然无法解析符号的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio:无法解析符号 R [重复]

无法解析符号'setOnClickListener' - Android Studio

Android Studio 无法解析符号“TabLayout”

无法解析 Android Studio 上的符号“属性”

RecyclerView“无法解析符号”错误,-Android Studio

Android Studio 无法解析符号,但代码正确执行