eclipse环境NDK问题汇总
1. 配置NDK路径设置
可以在cygwin中通过vim修改,也可以在windows安装目录中修改 home\<你的用户名>\.bash_profile 文件中最后添加环境变量
NDK=/cygdrive/e/Andriod/develop/android-ndk-r4
export PATH=$PATH:$NDK
其中NDK=/cygdrive/<你的盘符>/<android ndk 目录> ,"NDK"这个名字随便起,以后经常用不要太长。
重启cygwin,输入:
cd $NDK
可进入ndk对应目录说明设置OK。
2. JNI编译环境配置
工程右键,点Properties->C/C++ Build的Building Settings中去掉Use default build command,然后输入${NDKROOT}/ndk-build.cmd
在C/C++ Build中点击Environment,点Add...添加环境变量NDKROOT,值为NDK的根目录 E:\android\develop\android-ndk-r10d
3. 出现的提示信息如下:
Multiple markers at this line
- Syntax error
- Type 'JNIEnv' could not be resolved
- Type 'JNICALL' could not be resolved
是由于没有将jni.h导入的缘故,而这个文件在ndk的目录下面。所以,参照以下步骤:
Project Properties -> C/C++ General -> Path and Symbols
选择include标签,Add -> E:\android_sw\android-ndk-r10d\platforms\android-19\arch-arm\usr\include
且选中All languages.最后Apply -> OK 这样错误就解决了。
4. 报错:Program "sh" not found in PATH
C:\cygwin64\bin目录添加到win7系统的path环境变量中。
5. Android NDK: Your Android application project path contains spaces: 'E:/ ./ (x86)/'
Android NDK: The Android NDK build cannot work here. Please move your project to a different location.
E:\android\android-ndk-r10d\build/core/build-local.mk:155: *** Android NDK: Aborting. . Stop.
新建并配置一个Builder
(1)点击Project->Properties->Builders->New,新建立一个Builder。在弹出的对话框上面点击Program,OK!如图四所示:
(图四)
(2)在弹出的对话框【Edit Configuration】中,配置选项卡【Main】:
Location中需要填入nkd-build.cmd的路径(NDK安装目录下)。
Working Diretcoty中需要填入TestNDK的工程根目录。
如图五所示:
(图五)
(3)配置选项卡【Refresh】,如图六所示:
勾选“Refresh resources upon completion”,
勾选“The entire workspace”,
勾选“Recuresively include sub-folders”。
(图六)
(4)配置选项卡【Build Options】,如图七所示:
勾选“After a “Clean””,
勾选“During manual builds”,
勾选“During auto builds”,
勾选“Specify working set of relevant resources”。
点击“Specify Resources…”勾选TestNDK工程的“jni“目录 ,Finish!
保存设置,OK!
(图七)
(5)Project->clean->选择工程->点击OK。当在console里面看到如图八所示的信息,则表示一切正常,此时就已经是自动编译代码了。
6. 自己测试的 eclipse ndk 工程设置,该工程还作为library,被其他工程调用
设置完之后,选择eclipse的Project->clean...,则先clean工程,再运行该Builder,调用ndk-build.cmd编译jni代码。
详细的设置如下图所示:
别的工程引用该library,开发时需要查看该library的源码,只要将该library源码和该工程进行关联即可。如下所示: