9

我有一个带有本机代码的 Android 项目。我可以通过调用ndk-build命令从命令行构建本机代码,而不会出现错误或警告。但是当我在 ADT 中打开它时,它会显示以下错误。

在此处输入图像描述

错误信息:Method CallStaticIntMethod could not be resolved.项目中有很多文件有类似的错误。

我仔细检查了配置,这就是我所拥有的。Android 构建、工具链和包含已正确配置(见下图)

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

所需的包含在项目资源管理器中也可见并且它们是有效的(不是空的并且指向正确的头文件)。

在此处输入图像描述

但是当我Clean的项目和Build它时,错误仍然存​​在。关于如何解决这个问题的任何想法?

配置:ADT 22.6.2、NDK r9d(64 位)、OSX 10.9.2

4

3 回答 3

11

经过一番与偏好的斗争,我终于找到了解决方案。这是 NDK 插件中的一个错误,已报告给 AOSP 但尚未修复。评论#50 中描述了答案的过去。这是对我有用的序列。

  1. 打开项目属性-> C/C++ Build -> Tool Chan Editor
  2. 在部分Used Tools替换Android GCC CompilerGCC C Compiler。如果部分为空,只需GCC C Compiler在其中添加条目。 在此处输入图像描述
  3. 打开Project Properties -> C/C++ General -> Paths and Symbols并添加要包含的 h 文件所在的目录。使用上移按钮将包含本地包含(/AudioPlayer/jni在我的情况下)的文件夹添加到第一位。然后添加平台和工具链包括。内置包含应该留在最底部。 在此处输入图像描述 在我的情况下,工具链包含的完整路径如下所示。这些是原始工具链的内置路径Android GCC Compiler,我们已在步骤 2 中替换。

    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include
    /Tools/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/lib/gcc/arm-linux-androideabi/4.6/include-fixed
    
  4. OK按钮,清理重新构建项目。所有错误都必须消失。如果它们仍然存在,请尝试将它们从“问题”视图中删除并再次重新构建项目。

更新:我找到了另一个地方,您可以在其中添加包含文件的路径。但是它似乎依赖于 Eclipse 版本。项目设置 -> C/C++ 常规 -> 处理器包含路径、宏等 -> CDT 用户设置条目 -> 添加。添加上面列出的路径后,不再存在编译问题。开发又有趣了。

于 2014-04-18T17:20:28.593 回答
0

是的,它是由 IDE 不知道您的所有头文件和您再次链接的任何库在哪里引起的。这些错误是由 IDE 的自动完成/错误系统生成的。您可以在 eclipse 中修复您的包含,也可以将它们作为首选项中的错误删除。</p>

于 2014-04-18T15:21:09.593 回答
-1

在从 Android GCC 编译器更改为 GCC C 编译器并更新包含目录之后,我遇到了类似的错误并通过转到项目-> 属性-> 发现选项并将发现配置文件从托管构建系统更改为 GCC 来解决它。

于 2014-09-28T00:25:33.450 回答