【问题标题】:"Failed to get the compiler information for file ..." in Android StudioAndroid Studio 中的“无法获取文件的编译器信息...”
【发布时间】:2017-02-25 16:21:36
【问题描述】:

我在 Android Studio 中遇到了这个非常奇怪的错误消息。它显示在我通过 Gradle 使用 ndk-build 构建的 native 代码之上。断点和代码单步运行正常,但代码中绝对充斥着诸如“无法解析变量”之类的“错误”。

下面是一个例子:

同样,代码都运行正常,就像 IDE 似乎无法解析一大堆类型一样。您可以在右侧看到一连串错误。基本上每一行都被标记为错误,即使它编译得很好。不知道发生了什么!

【问题讨论】:

  • 可能的解决方案 1.重启Android Studio 2.清除缓存文件 > 使缓存失效/重启 > 使缓存失效 |重启3.清理项目
  • 我认为有很多问题。 1. 设置cppFlags时似乎有很多与引用/取消引用字符串相关的错误。我试图使用 addAll 设置 cppFlags,但是当我这样做时,看起来引号被拉到了 shell 命令中,导致它们失败。看起来发生的事情是包含目录语句也搞砸了,因此 IDE 无法解析某些包含文件。
  • 在那之后,看起来在项目上运行“清理”并没有清理我外部构建的 NDK 文件——只是清理了 Java 方面的东西。所以当我认为我正在重建项目时,它只是一遍又一遍地使用旧代码。
  • 我求助于运行 ./gradlew externalNativeBuildDebug --debug 在终端中构建代码,而不是让 Android Studio 来做。这也让我可以看到更多的输出。不幸的是,我仍然看不到 gradle 正在执行的实际 ndk-build 命令。这是荒谬的。我可以自己运行 ndk-build,但它会使用 gradle 忽略的 Application.mk 文件。
  • 你最终解决了这个问题吗?

标签: android android-studio android-ndk


【解决方案1】:

我相信执行以下操作可以解决问题:

  1. 手动删除目录build/intermediates/ndkBuild/debug/obj/local

  2. 运行Refresh Linked C++ Projects

【讨论】:

    【解决方案2】:

    我在适用于 MacOS 的 Android Studio 3.0 中拥有该功能。我的项目路径中有一个空格(例如“/Users/sergei/_Projects/Project-build/Project CPP/android/app”),这是一个问题。所以我只是将“Project CPP”重命名为“ProjectCPP”并修复了一个问题。我希望它可以帮助某人。

    【讨论】:

      【解决方案3】:

      就我而言,唯一有帮助的是卸载工具 ccache

      【讨论】:

        【解决方案4】:

        最近我在linux平台上遇到了3.2.1和cmake 3.6的类似情况。我花了一些时间调查可能导致问题的原因,并从干净的向导生成项目开始。当我从我的原始项目中逐个复制功能并检查 Android Studio 行为时,我在编译过程中加入了 ccache 工具,我已经确定了这一点。当我放:

        # Add the ccache to the build system
        option (USE_CCACHE "Koristiti ccache pri compiliranju ako je dostupan?" on)
        find_program(CCACHE_FOUND ccache)
        if(CCACHE_FOUND AND (USE_CCACHE))
            MESSAGE( STATUS "## Using CCache when building!")
            set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
            set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
        else(CCACHE_FOUND AND (USE_CCACHE))
          MESSAGE( STATUS "## Not using CCache!")
        endif(CCACHE_FOUND AND (USE_CCACHE))
        

        在 CMakeLists.txt 中,一切正常,但 Android Studio 无法正确解析代码,特别是尖括号内的标头 - 系统标头和所有第三方库。 当我关闭 ccache 工具使用时,一切都按预期工作。 我想使用 ccache,因为这个工具可以显着提高生产力,尤其是在密集重构期间,但不幸的是,我现在必须将其关闭。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-22
          • 2022-06-18
          • 1970-01-01
          • 2020-05-18
          • 2022-10-11
          • 2018-04-05
          相关资源
          最近更新 更多