Android Studio说“无法解析符号”,但项目编译

时间:2013-10-22 03:52:16

标签: android android-studio

我在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,关闭并重新打开我的项目。

26 个答案:

答案 0 :(得分:226)

不知道这是否有效但是到目前为止我唯一的想法:右键单击AS中文件树中的jar文件并选择"添加为库..."

编辑:你可以做"文件" - > "使高速缓存无效...",然后选择"无效并重新启动"修复此问题的选项。

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

答案 1 :(得分:33)

尝试更改文件>中依赖项的顺序;项目结构> (选择你的项目)>的依赖关系。

无效缓存并不适合我,但将我的构建从列表底部移到顶部。

答案 2 :(得分:11)

这对我有用。

在“项目”面板中,右键单击项目名称,然后单击  从弹出菜单中选择 end arr.push(largest) idx += 1 i = idx + 1

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

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

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

  

import android.support.v4.app.FragmentActivity;

导入它,然后返回Compile SDK Version并将编译sdk版本更改回之前的版本。

等待事情加载瞧。

答案 3 :(得分:9)

因为我的是由导入的库项目引起的,在build.gradle中键入内容并再次删除它并立即按下同步,错误就消失了。

答案 4 :(得分:5)

我的Android应用程序也存在此问题,具体取决于我自己的Android库(使用Android Studio 3.0和3.1.1)。

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

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

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

如果您不希望每次单击“Gradle sync”(谁想要这样做......)时手动执行此操作,您可以在app的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窗口,然后在您的App / Tasks / other /下找到“deleteArtifacts”任务,右键单击它,选择“同步前执行”(见下文)。

Gradle window to configure task execution

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

答案 5 :(得分:4)

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

首先,我做到了(文件 - &gt;指示兑现) - &gt; (无效并重新启动)。

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

答案 6 :(得分:3)

Invalidate Caches / Restart这次对我不起作用。

找到这样的解决方案:

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

  2. 清理并重建。这里应该提出错误。

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

  4. 清理并重建。

  5. ...怪异

答案 7 :(得分:2)

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

答案 8 :(得分:2)

我有这个问题已经有几天了,终于弄明白了! 所有其他解决方案对我来说都没有用。

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

请确保没有这些,你应该没事,否则至少其中一个解决方案应该适合你。

希望这有助于某人!

答案 9 :(得分:1)

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

答案 10 :(得分:1)

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

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

答案 11 :(得分:1)

最近Android Studio 1.3出现了同样的问题。唯一可行的解​​决方案是删除.gradle和.idea文件夹,然后将项目重新导入Android Studio。

答案 12 :(得分:0)

在我的情况下,jar文件没有META-INF / MANIFEST.MF文件。添加一个后,它就可以了!

答案 13 :(得分:0)

对于我使用AndroidStudio 2.2.3的情况,解决方案是更改gradle包装/分发以在Gradle设置中使用本地包装(尽管是“推荐”)。 enter image description here

答案 14 :(得分:0)

这对我有用 -  (文件 - &gt;表示兑现) - &gt; (无效并重新启动)。

答案 15 :(得分:0)

如果没有其他帮助,您可以按Android Studio suddenly cannot resolve symbols推荐:

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

答案 16 :(得分:0)

就我而言,我使用GUI创建了一个新文件,并在文件中定义了一个接口。我一直收到此符号错误,因为该文件不是“java”文件。根本没有任何扩展。

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

答案 17 :(得分:0)

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

答案 18 :(得分:0)

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

  

将光标置于带红色下划线的代码和Alt + Enter

enter image description here

  

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

enter image description here

  

取消选中所选选项,然后单击“确定”

enter image description here

希望这对某人有帮助。

答案 19 :(得分:0)

当我删除.gradle/caches中的整个文件,然后Studio下载了依赖项时,这件事发生了。 External Libraries中未显示相关性,但我可以成功构建App。 rebuild clean Invalidate and Restart无效。我通过以下步骤解决了这个问题:

  • 完全关闭Android Studio
  • 删除项目中的.idea程序包
  • 重新启动Android Studio

答案 20 :(得分:0)

我已经尝试过了,但是对我没有用:

  • =COUNTIFS(Q103:Q105, "WO", R103:R105, "Satisfactory Performance", S103:S105, ">="&date(2018, 10, 1), S103:S105, "<"&date(2018, 11, 1),)
  • Invalidate Caches / Restart
  • Changing the order of dependencies
  • Sync project with Gradle Files

就我而言,只需:

  • Clean -> Rebuild Project
  • Delete all files in .idea/libraries folder

答案 21 :(得分:0)

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

distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

答案 22 :(得分:0)

我找到了最简单的方法

识别在Studio中引起语法错误的库。

例如,如果AppCompatActivity显示错误,则您将对AppCompat依赖项执行以下操作。

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

就是这样,错误消失了!

之前

Before

之后

After

答案 23 :(得分: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

答案 24 :(得分:0)

关闭所有文件并关闭Android Studio对我来说是可行的。

答案 25 :(得分:-2)

您需要重新启动Android Studio。