我有一个包含本机代码的Android项目。我可以通过调用ndk-build
命令从命令行构建本机代码,没有错误或警告。但是当我在ADT中打开它时会显示以下错误。
错误消息:Method CallStaticIntMethod could not be resolved.
项目中有许多类似错误的文件。
我仔细检查了配置,这就是我所拥有的。 Android构建,工具链和包含已正确配置(见下图)
必需的包含在Project Explorer中也可见,并且它们是有效的(非空并指向正确的头文件)。
但是当我Clean
项目并Build
时,错误仍然存在。关于如何解决这个问题的任何想法?
配置:ADT 22.6.2,NDK r9d(64位),OSX 10.9.2
答案 0 :(得分:11)
经过一些挣扎的偏好,我终于找到了解决方案。这是NDK插件中的bug,已向AOSP报告但尚未修复。评论#50中描述了答案的过去。这是我们的工作顺序。
Used Tools
部分中,将Android GCC Compiler
替换为GCC C Compiler
。如果section为空,只需在其中添加GCC C Compiler
条目。
打开项目属性 - > C / C ++一般 - > 路径和符号并添加要包含的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
按确定按钮,清除并重新构建项目。所有错误都必须消失。如果它们停留,请尝试从 Problems 视图中删除它们,然后再次重新构建项目。
更新:我找到了另一个地方,您可以在其中添加包含文件的路径。但它似乎依赖于Eclipse版本。 项目设置 - > C / C ++一般 - >处理器包括路径,宏等 - > CDT用户设置条目 - >添加。添加上面列出的路径后,不再有编译问题。发展很有趣。
答案 1 :(得分:0)
是的,它是由IDE引起的,不知道你的所有标题和你再次链接的任何lib的位置。错误由IDE的自动完成/错误系统生成。您可以在eclipse中修复包含,也可以将其作为首选项中的错误删除。
答案 2 :(得分:-1)
我遇到了类似的错误并通过转到project-> properties->发现选项并将发现配置文件从托管构建系统更改为GCC,从Android GCC编译器更改为GCC C Complier并更新包含后解决了这个问题目录。