Android Studio内联编译器显示红色错误,但使用gradle编译可正常工作


146

根据这个问题,我已经在Android Studio中设置了项目以使用Square Wire库

Build-> Compile Project工作正常。

2:03:10 PM Compilation completed successfully in 31 sec

但是,如果我打开自己生成的协议缓冲区文件之一,则Square包将不会被识别。

Android Studio内联编译错误

另一个症状是,从Square Message类继承的方法在编辑器中显示为“无法解析方法”,即使它们可以正常构建并运行,但它们仍会编译错误。

Android Studio单行编译错误

除了build.gradle在项目中为模块添加依赖项之外,我还需要做更多的事情吗?


我在使用我的库(而非外部库)时遇到了类似的问题,请参见此处的解决方法:stackoverflow.com/a/50569818/373033
nah0y

Answers:


131

以下步骤有帮助

  1. 关闭您的项目,然后在项目文件夹中删除 project/.idea
  2. 删除~/.gradle文件夹。

再次打开项目。一切都应该解决。


1
在这个问题上花费几个小时。谢谢。我的错误是我只删除了.gradle而不是.idea
M,于

2
这对我删除.gradle和.idea然后无效并重新启动解决了我的问题。然后与gradle同步。
Pankaj

我已将.gradle文件夹从移动 C:\Users\Hasnain\.gradle到另一个目录。之后,android studio在每个类上显示错误。然后,按照上述步骤操作,即可解决问题。
hasnain_ahmad

38
删除.idea目录中的所有内容不是一个好主意,因为它可能会重置所有项目设置。在尝试了所有其他解决方案之后,只是为我消除.idea/libraries.idea/caches最终解决了问题。
fdermishin

在AS 3.1.3中效果很好。我什至不需要使缓存失效。让我们希望AS能够更快地构建!
某处某人

111

感谢free3dom使我在这里走上正轨。

诊断

Sync Project with Gradle FilesAndroid Studio中的选项似乎使Project Structure库保持最新。

Gradle同步

但是,就我而言,存在一些错误:

发现错误

展开(不是很明显)链接将显示详细信息。我的线路运行库显示在错误的位置:

图书馆

这似乎是我将JAR导入libs文件夹的原始配置的困扰。

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
}

随后,我将其更改为直接从Maven Central(按照此处)导入,似乎旧设置从未被新设置覆盖。

修复

解决方法是从Project Structure屏幕上删除库依赖项,然后Sync Project with Gradle Files再次删除。

更多详情

您也可以通过.idea/libraries/wire_runtime_1_2_0.xml直接打开直接查看资源使用的路径。

我坏的是:

  <component name="libraryTable">
  <library name="wire-runtime-1.2.0">
    <CLASSES>
      <root url="jar://$PROJECT_DIR$/MY_MODULE/libs/wire-runtime-1.2.0.jar!/" />
    </CLASSES>
    <JAVADOC />
    <SOURCES />

删除并重新添加库后,将其更改root url为:

      <root url="jar://$USER_HOME$/.gradle/caches/artifacts-26/filestore/com.squareup.wire/wire-runtime/1.2.0/jar/44e7acbd5eb6f29698181dc3d67a60acf7efee80/wire-runtime-1.2.0.jar!/" />

更新资料

Android Studio v0.4.4 显然修复了具有相同症状的其他错误,因此,如果您使用的是旧版本,则可能希望升级。


3
谢谢DanJ。在尝试您的解决方案之前,我尝试了一种更简单的解决方案(根据我的想法),它对我有用:打开编辑器右侧的Gradle面板(在“ Maven Projects”和“ Commander”上方),然后单击刷新按钮。这刷新了模块设置。学分@Matteo达涅利(参见:stackoverflow.com/a/17043001
almighty972

1
需要删除本地jar依赖项,这对我来说已经解决了,感谢您的灵感
jhegedus

我刚刚单击“使用Gradle文件同步项目”,现在一切都很好!非常感谢你!您保存了我的一天哈哈
Jorge Gabriel Siqueira

没为我工作。但是删除.gradle和.idea确实有效
Golnar

如今,同一按钮显示为带有向下箭头的大象图标。
tm

87

简单的解决方案

通过链接,它对我有用。

  1. File从android studio左上角的菜单中选择选项。
  2. 选择选项:Invalidate Cache/Restart它将打开一个对话框。
  3. 单击带有选项的第一个按钮: Invalidate and Restart
  4. 它将关闭Android Studio并重新启动。同样,它将开始为项目重新编制索引。

它解决了我的问题

转到文件 >使高速缓存/重新启动无效 >使并重新启动无效

YouTube的来源


这对我有用;我尝试在WiFi接收不良的位置进行一些编程后,Android Studio到处都显示错误。(!!!)然后,我确保我有一个良好的wifi连接并进行了重建,但是,错误仍然存​​在。即使清理/构建也无法解决问题。无效的缓存修复了它。
某处某人

在Fedora上使用Android Studio 2.1.3。这个解决方案对我有用。添加了libgdx工具,并且导入有一个错误,但是编译得很好。关闭和重新打开无法正常工作,但执行无效和重新启动工作正常。
JoeMoe1984年

1
在AS 3.1.4中工作!我认为所有建议都是处理此问题的正确方法。通过Android Studio的菜单命令。这绝对比在文件环境中手动执行重置好得多。
JanBergström'18年

为我工作了3.5.1
Neela,

44

1)单击gradle图标(android studio的右侧)

在此处输入图片说明

2)点击刷新按钮,等待问题解决:D

在此处输入图片说明


在Android Studio 3.1 +上,请转到文件>无效的缓存/重新启动>无效并重新启动。
DroidDev

17

我仍在不断遇到与Android Studio v3.2.1相同的问题,并解决了这个问题,只是删除了.idea文件夹的这两个子文件夹(无需删除整个.idea文件夹),而gradle同步不起作用:

  • ./idea/caches
  • ./idea/libraries

在大多数情况下,它可以解决我的问题。在其他一些情况下,可能有必要“使缓存无效并重新启动”,或更改Gradle版本。
GoRoS



9

我对此的修正-

  1. 打开你的build.gradle文件
  2. 切掉里面的所有东西 dependencies{}
  3. 粘贴在记事本中,可超级安全地临时保存
  4. build.gradle文件中选择“立即同步”
  5. 等待同步失败
  6. 重新粘贴您的依赖项
  7. 再次“立即同步”

尝试了很多解决方案,这是对我唯一的解决方法。


7

升级到Android Studio 3.1后,我遇到了这个问题。我通过升级我使用的所有组件解决了该问题。所以我在build.gradle(app)中更改了以下条目:

  1. 升级SDK(阅读此说明时,请从“ compileSdkVersion 25”升级到“ compileSdkVersion 26”或更高):

    // compileSdkVersion 25

    编译版本26

    注释:此更改迫使程序在下一次同步期间下载/安装新的SDK。

  2. 升级appcompat-v7:

    //实施'com.android.support:appcompat-v7:25.4.0'

    实施'com.android.support:appcompat-v7:26.1.0'

  3. 升级Firebase:

    //实施'com.google.firebase:firebase-ads:11.4.2'

    实施'com.google.firebase:firebase-core:12.0.1'

    实施'com.google.firebase:firebase-ads:12.0.1'

  4. 在PROJECT build.gradle中,升级google-services:

    // classpath'com.google.gms:google-services:3.1.0'

    classpath'com.google.gms:google-services:3.2.0'

  5. 升级gradle(从4.4到4.6)。从gradle-wrapper.properties中:distributionUrl = https://services.gradle.org/distributions/gradle-4.6-all.zip

完成这些更改后,清理项目,使高速缓存/重新启动无效,删除.idea / libraries内容并重新同步(不确定顺序,但所有这些活动都为我解决了问题)。


1
没有新版本的其他组件呢?
阿米尔·达加里

我不知道。这些就是我在项目中拥有的组件。
巴勃罗·阿方索

嗨阿米尔(Amir),根据官方网站的说法,gradle 4.4是最新版本(截至2018年3月)。您在哪里找到Gradle 4.6?
Pablo Alfonso

我找到了Gradle 4.6的位置。我更新了答案。谢谢。
Pablo Alfonso

4
删除.idea / libraries内容,对我有用。非常感谢
Tram Nguyen


5

成功编译项目但使用未解析的类时执行以下步骤(所有文件中所有类的使用情况均为红色)

步骤1.删除.gradle文件

步骤2.删除.idea文件

步骤3. 系统上的其他一些Android项目一起打开新的Android Studio窗口,并错误关闭项目

第三步。现在,从Studio工具栏Android Studio-> File-> Open再次打开/导入项目。

注意:现在,当您导入项目时,新的.gradle和新的.idea文件夹将由编译器自动生成并具有已解决的依赖性。


2

如果以上所有答案都不适合您。只需尝试将您的依赖项更新到最新版本即可。它为我工作。


2

我尝试了上面的大多数修补程序,实际上有效的方法是删除所有.AndroidStudio配置文件夹,然后重新启动Android Studio。

  • 位置:C:\ Users \ your.username

2

我找到了简单的方法

  • 打开应用程序级别 build.gradle
  • 删除显示错误和同步的依赖项。
  • 再次添加依赖性和同步。

错误消失了!

之前

之前

后



2

似乎每个人都使用不同的方法来解决这些问题。我会建议另一个我觉得比其他人更具侵略性的人。当我从包含的aar库中引入更改时,我将打开该项目的“ settings.gradle”文件。

然后从项目列表中切出主要项目模块:

include ':mainproj',

然后同步您的项目。然后将其粘贴回并再次重新同步项目。我相信这与某些手动删除步骤相同,但这使您可以从IDE中更快,更轻松地进行删除。


对我来说很好。谢谢!@Jay Snayder
Shivam

2

我被下面的方法固定

方法一

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

方法二

  • 如果仅针对特定项目遇到此错误,请执行此操作
   1. Close current project
   2. Go to your project path C://User/Android studio project/your project
   3. Delete two files .gradle and .idea
  • 如果所有项目都遇到此错误,请执行此操作
1. Close Android studio
2. Go to the file C://Users/your username/
3. Delete files .gradle , .cache ,.android, .AndroidStudio3.5

1

这些解决方案并没有帮助我解决Android Studio 0.5.8中的相同问题。

我描述了对同一问题的答案(我想):https : //stackoverflow.com/a/23891829/534698我刚刚删除了〜/ .AndroidStudioPreview目录(在Ubuntu中)。我错过了所有Android Studio设置,但可以使用。


这是唯一对我有用的东西。Android Studio 1.0.2
Bobby Hargett 2014年

1

就我而言,由于某种原因,未设置Android插件版本。我确实尝试清除缓存并同时删除.gradle和.idea,但是它没有解决问题,最终徘徊了几个小时之后,我发现了这一点。

文件>项目结构


0

之前,我遇到过类似的问题,使缓存无效并重新启动无法解决该问题。我只是做了一个Gradle Sync,一切正常。


0

通过清理项目解决了这个问题 Build->Clean Project


0

对我来说,我在模块库中引用了一个jar。它无法解析jar中的符号。因此,我找到了适合自己情况的解决方案。使用provided方式。

provided fileTree(include: ['xxx.jar'], dir: '../moduleX/libs')


0

使用以下步骤可以清除相同的问题:

  1. 将gradle中的库版本更新为任意随机数,例如:lib_1.0.0-> lib_1.0.0.0

  2. Gradle同步

  3. 同步显示错误

  4. 恢复版本更改lib_1.0.0.0-> lib_1.0.0

  5. Gradle同步

使用导入打开Java文件,以清除错误。


0

这些解决方案都不适合我。.我求助于从计算机上卸载Java,运行android studio以确保它检测到卸载,然后再次安装。

如果选择这种方式,请尝试更改jdk路径并在项目结构中设置新路径。如果那不起作用,请继续并卸载java


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.