使用NDK编译含JNI的Android项目常见问题解决方案
Removing the C nature:
The only way I could find to reliably removed the C nature from the project was by hand editing Eclipse's .project
file for the project.
-
Close the Eclipse project (e.g. by quitting Eclipse).
-
Open the
.project
file in a text or xml editor. There will be at least 2<buildCommand>
nodes that need to be removed. Remove the<buildCommand>
node with nameorg.eclipse.cdt.managedbuilder.core.genmakebuilder
and all its children, and the<buildCommand>
node with nameorg.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
and its children. Finally, remove the lines:<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-
Completely remove the
.cproject
file.
Adding back the Android Native nature
Reopen the project in Eclipse. Then right-click on the project in the Project Explorer, and from the "Android Tools" contextual menu, choose "Add Native Support...".
- Paths and Symbols中路径不正确,考虑修改Android.MK文件内容,比如增加空行等(注意Android.MK文件中不需要有LOCAL_C_INCLUDES字段 ,系统会根据LOCAL_SRC_FILES自动添加需要的头文件,否则头文件将出现二义性),重新编译一次项目,Android.MK文件中LOCAL_SRC_FILES所依赖的头文件将会在Project Properties -> C/C++ General -> Paths and Symbols中被自动添加;
- string.h、jni.h等C头文件“Unresolved inclusion”,考虑: NDK Project -> New -> Folder -> Advanced -> Link to alternate location(Linked Folder),添加:D:\ADT\android-ndk-r9d\platforms\android-18\arch-arm\usr\include;
- 考虑:properties--->C/C++ General,关闭Code Analysis功能,解决大部分错误;