(推测)Android Studio 中的错误错误,但编译器和应用程序运行良好

Posted

技术标签:

【中文标题】(推测)Android Studio 中的错误错误,但编译器和应用程序运行良好【英文标题】:(Presumable) false error in Android Studio, but compiler and app run fine 【发布时间】:2020-04-28 00:49:25 【问题描述】:

我已经尝试过关于误报的最类似问题所说的:删除 .idea/ 文件夹(甚至 ~/.gradle)、退出项目、重新加载、使缓存无效并重新启动等。我还运行了 refresh c++ linked图书馆以防万一。

现在只是一个背景:关于 IDE lint 检查器,我的整个项目都很好。所有文件都显示正确的警告等。除了我的 c++ 端的这一单行。 (我将展示上下文的整个方法)。我可以很好地构建和运行我的项目,甚至当我调用应用程序的这个逻辑部分时,它的行为也符合预期,没有任何问题。

// Header (relevant member variable)
class MyClass 
private:
    std::vector<std::vector<int>> mArrayOfFooBars


// MyClass.cpp
void MyClass::updateModel(int index, const std::vector<int>& fooBars) 
    this->mArrayOfFooBars[index].assign(fooBars.begin(), fooBars.end());
    doMoreCalculations();

android Studio 中 foobars.begin()fooBars.end() 出现以下错误:

参数类型不匹配:类型 'const int' 和 'std::vector>::const_iterator' 不兼容

参数类型不匹配:类型 'unsigned int' 和 'const int' 和 'std::vector>::const_iterator' 不兼容

这让我相信,linter 可能存在错误,或者我的某些编译器设置错误,这实际上应该是编译器错误。无论哪种方式,我都会尝试提供尽可能多的设置,希望有人可以提供一些有用的建议。

Gradle 插件版本:3.6.3(最近) Gradle 版本:5.6.4 SDK 版本:29 构建工具版本:29.0.3 NDK(并排)- 未安装(不确定这是什么) CMake:已安装 3.10.2 和 3.6.4111459(可能只需要其中一个?) SDK 平台工具(适用于 30.0.0 的更新) SDK 工具:26.1.1

我检查了我的 linter 设置(检查),没有发现任何错误级别检查:

这就是我能想到的,我会继续正常发展,但它的存在让我很困扰。因此,对于消除此恶意错误的任何帮助将不胜感激!

【问题讨论】:

代码对我来说看起来不错,gcc 和带有-Wall -Wextra 的clang 都没有显示任何警告/错误。 感谢您的检查!我假设这与我的 Android Studio 配置有关 【参考方案1】:

在构建过程中未显示的 IDE 错误在 Android Studio 中并不少见。构建和 ​​IDE 不使用相同的工具链。旧版本的 Studio 使用 CLion 的 C++ 解析器,这通常是错误的,因为解析 C++ 非常困难。新版本开始使用 clangd,但它不一定与构建使用的 Clang 版本相同。

当您看到此类问题时,新版本的 AS 会更好,但通常值得提交错误以确保有人注意到它。

【讨论】:

以上是关于(推测)Android Studio 中的错误错误,但编译器和应用程序运行良好的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 中的渲染器错误

android studio中的重复输入错误

调试中的 Android Studio 错误

Android Studio 中的重复资源错误

Android Studio中的Activity.java错误[重复]

Android Studio 中的 React Native 项目错误