导入现有的Android项目会导致JNI文件夹中出现很多“错误”

时间:2013-07-17 12:05:52

标签: android eclipse java-native-interface

我有一个带有本机库的eclipse项目,我需要将这个项目复制到另一台机器上。

我在那里处理这个项目文件夹,并使用现有代码中的“File-> New-> Android Project”。我还使用勾选“将项目复制到工作区”。

然后我转到jni文件夹,看到很多错误,如“未解决的包含:”,“类型'JNICALL'无法解析”,“方法'GetStringUTFChars'无法解决”,等等31个错误

我试图编译这个jni库。没问题。它已编译但我仍然看到我之前看到的所有错误。 我试图启动Android应用程序,它说我的项目包含错误。

此问题仅适用于本机库。

如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

转到项目专家>> C / C ++一般>>路径和符号以及添加:

"/home/ademar/android-ndk-r9/platforms/android-18/arch-arm/usr/include" 

你也可以包括de x86和mips版本:

"/home/ademar/android-ndk-r9/platforms/android-18/arch-x86/usr/include"
"/home/ademar/android-ndk-r9/platforms/android-18/arch-mips/usr/include"

答案 1 :(得分:1)

当您遇到来自Eclipse的这些错误消息时,您应该只需转到“问题”视图并删除消息。清理构建项目,消息(希望)不会再出现。

有时候,需要采取更激进的措施,比如打开一个新工作区(简单删除项目+导回它可能还不够,因为删除时不会删除某些项目元数据)。

最后一种方法是转到项目属性,找到构建器标签,然后停用最后一个扫描程序配置构建器。不幸的是,这也将禁用“开放声明”和其他智能源导航功能。

答案 2 :(得分:1)

对于遇到类似问题的其他人,我遇到了这个错误,因为我将C风格的JNI调用复制到cpp文件中。所以,如果您也是如此,请尝试更改

const char *utf8 = (*env)->GetStringUTFChars(env, filename, NULL);

const char *utf8 = env->GetStringUTFChars(filename, NULL);

然后清理/构建。