【问题标题】:Android NDK build, Method could not be resolvedAndroid NDK 构建,方法无法解析
【发布时间】:2014-06-03 01:19:15
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: android eclipse android-ndk adt ndk-build


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      1. 打开项目属性 -> C/C++ Build -> Tool Chan Editor
      2. Used Tools 部分将Android GCC Compiler 替换为GCC C Compiler。如果部分为空,只需在其中添加 GCC C Compiler 条目。
      3. 打开 Project Properties -> C/C++ General -> Paths and Symbols 并添加目录,其中包含您的 h 文件位于。使用 Move up 按钮将包含本地包含的文件夹(在我的情况下为/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 按钮,clean重新构建 项目。所有错误都必须消失。如果它们仍然存在,请尝试将它们从 Problems 视图中删除并再次重新构建项目。

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

      【讨论】:

      • 我不必执行步骤 1 和 2,因此可能不需要。否则,这个答案对我来说效果很好。谢谢。
      • 嗨,我已经尝试过这个解决方案。我在 C 代码中的所有错误都消失了,但项目名称仍然显示错误符号,因此我无法运行该项目。我不知道到底出了什么问题。请进一步建议
      【解决方案3】:

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

      【讨论】:

      • 这个答案与 6 个月前 beworker 的答案有何不同?另请参阅What is a “protected” question?中的“我也是”答案
      • 这是一个不同的解决方案。 beworker的回答对我不起作用。在我尝试了他的解决方案后,我通过更改发现选项下的发现配置文件来解决问题。我不确定 beworker 的回答是否与为我解决问题有关,我只是想我会提到我先尝试了他的解决方案,以防两个步骤都是必要的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-11
      • 2013-03-23
      • 2014-01-30
      相关资源
      最近更新 更多