104

我在 AndroidStudio 中导入 twitter4j,在我的 build.gradle 中使用以下内容:

dependencies {
  compile 'com.android.support:support-v4:18.0.+'
  compile files('libs/twitter4j-core-3.0.4.jar')
}

该项目编译良好,我可以毫无问题地创建 twitter 对象。但是,在 Android Studio 中,任何引用该库的内容都会显示“无法解析符号”并显示为红色。我需要做什么才能让 Android Studio 识别该库?

我已经尝试重建项目,./gradlew clean,并关闭并重新打开我的项目。

4

27 回答 27

242

不知道这是否可行,但到目前为止我唯一的想法是:右键单击 AS 内文件树中的 jar 文件,然后选择“添加为库...”

编辑:您可以执行“文件”->“使缓存无效...”,然后选择“无效并重新启动”选项来解决此问题。

编辑 2:这个修复应该适用于所有类似的事件,而不是 twitter4j 特定的解决方案。

于 2013-10-22T12:11:31.137 回答
33

尝试在文件 > 项目结构 >(选择您的项目)> 依赖项中更改依赖项的顺序。

Invalidate Caches 对我不起作用,但将我的构建从列表底部移到顶部确实有效。

于 2015-05-15T14:35:49.903 回答
12

这对我有用。

在“项目”面板中,右键单击项目名称,然后Open Module Settings从弹出菜单中选择。

然后将其更改为Compile SDK Version可用的最低版本(您在项目中设置的最低 sdk 版本)。等待 android studio 加载所有内容。

它会给你一些错误,忽略那些。

现在转到您的 java 文件,android studio 会建议您导入

导入android.support.v4.app.FragmentActivity;

导入它,然后返回Open Module Settings并将 compile sdk 版本更改回之前的版本。

等待加载和瞧。

于 2015-05-19T22:29:09.950 回答
9

对于我的是由导入的库项目引起的,在 build.gradle 中输入一些内容并再次删除它并立即按同步,错误消失了。

于 2016-06-01T08:37:03.747 回答
6

我的 Android 应用程序也有这个问题,这取决于我自己的一些 Android 库(使用 Android Studio 3.0 和 3.1.1)。

每当我更新一个库并返回应用程序,触发 Gradle 同步时,Android Studio 都无法检测到我对库所做的代码更改。编译工作正常,但 Android Studio 在使用该库的某些代码上显示红色错误行。

经过调查,我发现这是因为 gradle 一直指向我的库的旧编译版本。如果您转到 yourProject/.idea/libraries/,您将看到一个 xml 文件列表,其中包含指向您的库的已编译版本的链接。这些文件以 Gradle__artifacts_*.xml 开头(其中 * 是您的库的名称)。

因此,为了让 Android Studio 获取最新版本的库,您需要删除这些 Gradle__artifacts_*.xml 文件,Android Studio 将重新生成它们,指向最新编译版本的库。

如果您不想在每次单击“Gradle 同步”时手动执行此操作(谁愿意这样做...),您可以在应用程序的 build.gradle 文件中添加这个小的 gradle 任务。

task deleteArtifacts {
    doFirst {
        File librariesFolderPath = file(getProjectDir().absolutePath + "/../.idea/libraries/")
        File[] files = librariesFolderPath.listFiles({ File file -> file.name.startsWith("Gradle__artifacts_") } as FileFilter)

        for (int i = 0; i < files.length; i++) {
            files[i].delete()
        }
    }
}

为了让您的应用在进行 gradle 同步之前始终执行此任务,您只需转到 Gradle 窗口,然后在 yourApp/Tasks/other/ 下找到“deleteArtifacts”任务,右键单击它并选择“执行”同步之前”(见下文)。

配置任务执行的 Gradle 窗口

现在,每次进行 Gradle 同步时,Android Studio 都将被迫使用最新版本的库。

于 2018-05-28T15:46:15.027 回答
5

当我在我的项目中遇到这个问题(红色代码但它们工作正常)时;

首先,我做到了(文件->指示现金)->(无效并重新启动)。

最后,我在我的应用程序中重新同步我的 build.gradle 文件。问题解决后。

于 2015-11-14T07:28:38.537 回答
5

Invalidate Caches / Restart这次对我没用。

找到了这样的解决方案:

  1. 删除 build.gradle 中的compile ***orimplementation ***行。

  2. 清洁和重建。应该在这里提出错误。

  3. 将步骤 1 中的行添加回 build.gradle。

  4. 清洁和重建。

诡异的...

于 2018-05-16T18:17:18.360 回答
2

当我的 Glass 项目没有使用安装在 Android Studio 默认位置的 SDK 时,我就遇到了这个问题。我正在使用以前从 ADT 获得的另一个位置,因为我试图避免重新下载所有内容。一旦我将项目指向 Android Studio 安装位置中的 SDK 位置,问题就消失了。

于 2014-07-23T00:58:26.973 回答
2

我有这个问题了几天了,终于弄明白了!顺便说一句,所有其他解决方案都不适合我。

解决方案:我的项目路径中有特殊字符!

只要确保没有这些,你应该没问题,或者至少其他解决方案之一应该适合你。

希望这对某人有帮助!

于 2015-08-20T12:01:39.890 回答
1

我最近在使用 Android Studio 1.3 时遇到了同样的问题。唯一可行的解​​决方案是删除 .gradle 和 .idea 文件夹并将项目重新导入 Android Studio。

于 2015-07-31T07:53:49.440 回答
1

无效缓存对我不起作用(这次)。对我来说,改变 gradle 并再次同步就足够了。或https://stackoverflow.com/a/29565362/2000162

于 2017-04-03T14:17:57.760 回答
1

对于那些尝试接受的答案但没有成功的人,

我也尝试了接受的答案,但对我不起作用。之后,我使用存储库更新了我的项目并同步了项目,并且无法解决警告消失了。

于 2016-02-11T12:41:23.960 回答
1

如果没有其他帮助,您可以按照 Android Studio 突然无法解析符号的建议进行操作:

  • 退出 Android Studio
  • 备份您的项目
  • 删除所有 .iml 文件和 .idea 文件夹
  • 重新启动 Android Studio 并重新导入您的项目
于 2018-05-25T12:25:39.850 回答
0

在我的例子中,我使用 GUI 创建了一个新文件并在文件中定义了一个接口。我不断收到此符号错误,因为该文件不是“java”文件。它根本没有扩展。

将文件扩展名修改为“.java”后,系统正确找到符号。

于 2015-05-25T16:15:15.637 回答
0

我尝试了无效缓存/重新启动或清理项目-> 重建项目。这些对我不起作用。

最终的解决方案是在IDE左侧打开Project窗口,在Project模式下,删除.gradle和.idea文件夹,然后你可以使缓存失效并重新启动。这解决了它。

于 2018-05-13T00:27:02.217 回答
0

上面的答案都不适合我。

经过多次尝试,我将 Project/build.gradle 中的 com.android.tools.build:gradle 从 2.3.0 升级到 3.0.1,并且可以正常工作。

我猜com.android.tools.build:gradle的版本应该和AndroidStudio的版本匹配,我的AS版本是3.2.1

于 2019-01-14T09:25:49.527 回答
0

这对我有用--(文件->指示现金)-->(无效并重新启动)。

于 2017-06-19T04:14:24.580 回答
0

我已经尝试过了,但对我没有任何帮助:

  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files
  • Clean -> Rebuild Project

就我而言,只需执行以下操作:

  • Delete all files in .idea/libraries folder
  • Rebuild Project
于 2018-09-20T03:38:23.940 回答
0

更改语言注入设置对我有用。

将光标放在任何带红色下划线的代码上,然后Alt + Enter

在此处输入图像描述

现在选择Language Injection Settings并打开一个窗口,如下所示。

在此处输入图像描述

取消选中选定的选项,然后单击确定

在此处输入图像描述

希望这可以帮助某人。

于 2018-08-19T20:18:47.487 回答
0

将编译更改为 build.gradle 中的实现。

于 2018-07-21T17:59:19.503 回答
0

当我删除整个文件时发生在我身上.gradle/caches,然后工作室下载了依赖项。中未显示的依赖关系,External Libraries但我可以成功构建应用程序。rebuild clean Invalidate and Restart没有效果。我通过以下步骤解决了问题:

  • 完全关闭 Android Studio
  • 删除.idea项目中的包
  • 重启 Android Studio
于 2018-09-11T11:35:39.280 回答
0

对我来说,我将gradle-wrapper.properties 更新为 4.4

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
于 2018-11-05T08:15:17.960 回答
0

我找到了最简单的方法

在 Studio 中识别导致语法错误的库。

例如,如果AppCompatActivity显示错误,那么您将对 AppCompat Dependency 执行以下操作。

  • 删除显示语法错误和同步的依赖项。
  • 再次添加并同步。

就是这样,错误消失了!

前

后

于 2018-11-22T11:30:45.857 回答
0

关闭所有文件并关闭 Android Studio 对我有用。

于 2019-04-18T09:14:29.950 回答
0

对于我使用 AndroidStudio 2.2.3 的情况,解决方案是将 gradle 包装器/分发版更改为在 Gradle 设置中使用本地包装器(尽管被“推荐”)。 在此处输入图像描述

于 2017-02-21T11:35:06.437 回答
0

就我而言,jar 文件没有 META-INF/MANIFEST.MF 文件。加了一个之后就成功了!

于 2017-01-24T11:46:05.080 回答
-2

您需要重新启动 Android Studio。

于 2016-11-05T22:14:14.033 回答