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

TG-*_*G-T 93 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')
}
Run Code Online (Sandbox Code Playgroud)

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

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

doy*_*doy 228

不知道这是否有效但是到目前为止我唯一的想法:右键单击AS中文件树中的jar文件,然后选择"Add as library ..."

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

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

  • 使缓存无效并重新启动对我不起作用.我也尝试重新安装android studio并重新导入该项目.这很烦人...... (7认同)
  • "文件" - >"无效缓存..."只是保存了我的一天.我在这个问题上浪费了太多时间.为什么这个答案不是最佳搜索结果?非常感谢! (2认同)
  • 倾注我的感激之情 (2认同)

Nau*_*aun 33

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

Invalidate Caches不适用于我,但将我的构建从列表底部移到顶部.

  • 除了这个解决方案,没有什么对我有用!谢谢. (4认同)

Geo*_*rov 11

这对我有用.

在"项目"面板中,右键单击项目名称,然后Open Module Settings从弹出菜单中进行选择.

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

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

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

import android.support.v4.app.FragmentActivity;

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

等待事情加载瞧.


Bee*_* Jk 9

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


ogu*_*han 5

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

首先,我做到了 (File -> Indicate Cashes) --> (Invalidate and Restart)。

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


Zha*_*Lei 5

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

找到了这样的解决方案:

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

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

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

  4. 清洁和重建。

奇怪的...


小智 5

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

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

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

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

如果您不想每次单击“ Gradle sync”(谁愿意这样做...)时都手动执行此操作,则可以将此小gradle任务添加到应用程序的build.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()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Gradle窗口配置任务执行

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


归档时间:

查看次数:

110356 次

最近记录:

6 年,6 月 前