【问题标题】:Android Studio suddenly cannot resolve symbolsAndroid Studio 突然无法解析符号
【发布时间】: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 import gradle android-studio


【解决方案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

【讨论】:

【解决方案4】:

Android Studio 1.3

  1. 打开模块设置
  2. 点击模块菜单下的模块
  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 stackoverflow.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】:

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

        具体步骤-

        1. 克隆的新存储库(存储库中没有 Android Studio 文件)
        2. 从命令行构建调试项目 (./gradlew clean assembleDebug)
        3. 打开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://stackoverflow.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 神奇地工作了。

                                          【讨论】:

                                            猜你喜欢
                                            • 2013-06-11
                                            • 2020-05-01
                                            • 2018-05-03
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            • 1970-01-01
                                            相关资源
                                            最近更新 更多