开发环境:windows+eclipse+NDK+cygwin php
android
在《android初涉NDK,从零打造你的第一个demo》(http://my.oschina.net/sosofy/blog/78353)中,我把打造第一个jni相关demo的过程大体介绍了一下,由于该工程的功能也好,代码也好都是很是很是浅显易懂的,因此用notePad++之类的文本编辑工具就能直接写好。可是若是当native code的逻辑很是复杂,代码工做量也很是之大的话,不是大神而且刚刚开始接触JNI开发的你我在不借助IDE的状况下,想必十分DT。好在eclipse中也很多好用的插件帮助咱们解决这一难题。 ios
废话说完,进入正题。首先是CDT插件的安装,官方地址:http://www.eclipse.org/cdt/downloads.php。在该页面找到你须要的版本下载安装(PS:貌似该网页提供的在线安装的地址失效Orz,因此仍是下到本地安装吧)。安装完成以后,咱们如今就能够用eclipse写c/c++代码了(熟悉vs开发环境的童鞋可能须要适应一下)。在上次的demo中,咱们是单独编写JNI相关代码而后编译获得so文件,在拷贝到android工程中,这个过程有点繁琐,有时可能还会忘记,尤为是在之后调试的时候,反复地重复该过程会让人崩溃吧!在安装了CDT后,咱们把上次的C的工程部分的D:\myfirstJNISO中的jni文件夹整个拷贝到android工程MyFirstJNI目录下(若是没有,稍后我会上传相关工程代码,不过最好仍是本身实际动手作一下会比较好:D),refresh,如今咱们的工程应该是这样的: c++
标记的部分就是咱们新添加进来的jni实现部分。
windows
如今不要急着编译,不然各类error可能会打击咱们继续下去的信心。接下来,咱们须要把这个android工程转换成C/C++工程进行一些开发,具体操做:File->New->Other,以后如图: bash
Next以后选取MyFirstJNI工程其余选项默认便可。 app
如今咱们的工程已经转换成C工程了,打开相关的.h.c文件看看,Oh,No。是否是各类error,缘由是咱们尚未在CDT中设置相关环境变量,编译器找不到jni相关头文件形成的。设置过程以下:Window->Preference 而后如图定位: eclipse
在Environment中添加一些必要的环境变量,具体以下: 工具
CPLUS_INCLUDE_PATH(这个随便你取):D:\Android\android-sdk\android-ndk-r8b\platforms\android-14\arch-arm\usr\include;D:\Android\android-sdk\android-ndk-r8b\sources\cxx-stl\stlport\stlport ui
(PS:红色部分是你安装NDK目录中你须要的相关平台的头文件,我这里选的最新的是14,能够根据具体要求选择,篮色部分则是一些C++中经常使用的头文件,好比:iostream,还有中间的";"别忘了)
CPLUS_INCLUDE_LIB_PATH(一样as you wish):D:\Android\android-sdk\android-ndk-r8b\platforms\android-14\arch-arm\usr\lib
添加完成后是这样的:
下面咱们要为咱们的工程设置一个专属的编译器,由于在windows下,咱们没法直接运行ndk-build来编译咱们的JNI代码,那么怎么作呢?往下看:
在咱们的工程MyFirstJNI上右击,选择属性,接着选择"Builders",如图:
那个红色的”NDK_Builder“就是咱们要建立的专属的编译器,方法:点击New出现
(Name填上你喜欢的名字;①中是你安装的cygwin中bash.exe的路径②是bash.exe所在的目录③中则是运行bash.exe时的命令行参数;这些配置说咱们要启动bash.exe而后定位到咱们的MyFirstJNI工程目录而后执行$NDK/ndk-build,简单的说就把咱们以前的手动过程用命令行替代了,这也就是为何是专属编译器的缘由)
接着切换到Refresh选项卡,而后照着图片配置:
(很简单吧,告诉系统这个编译器是指定工程的)
再切换到Build Options选项卡,设置以下:
这里主要是设置自动编译的时机,注意红色部分,这里须要点击按钮选定咱们的MyFirstJNI工程,这样咱们MyFirstJNI的专属编译器就建立完成了。回到属性界面,是否是多个一个NDK_Builder,这里须要把这个编译器Up到最上面,不然咱们修改JNI代码须要编译两次才能生效。
如今试试,咱们建立的编译器能不能正常工做,Project->Clean...,Console中若是输出这样的就说明咱们成功了
可是注意红色的部分,虽然咱们已经能正确的编译出so文件了,可是工程此时还有错误:
咱们已经解决了这么多的问题和麻烦,怎么能在这卡住?这个error出现是由于咱们在将android工程转化为C/C++工程形成的,再次打开MyFirstJNI的属性对话框,如图:
看到没,咱们的工程本身是有编译选项的,make这个原本是在*nix系统中使用的,由于咱们以前已经建立了专属的编译器,因此这里将Builder Type选择为”Internal builder“,这样再次clean工程就能够了。(PS:更简单的方法是在当初创建专属编译器的时候,将CDT Builder的勾选状态取消,而后多refresh几回或者暴力点重启eclipse)
对了,有些人可能打开该对话框发现Builder Type是不可用状态,不要紧解决方法以下:
照着上图所示设置,而后再返回到以前的那个设置界面,是否是能选择了?
好了,我发现讲的有点罗嗦:D,如今咱们就能在eclipse中直接开发JNI了而且也能很方便的编译。因为我接触的时间也不长,因此讲的不清楚的地方或者有误的地方,还但愿你们指正,共同进步。
关于调试的部分,windows下的配置,我还在研究,有进展了更新!!
最后,推荐一款JNI开发相关的插件sequoyah,在线安装地址:http://download.eclipse.org/sequoyah/updates/2.0/
注意要将”Group items by category“取消,不然看不到插件列表,咱们只须要安装上图所选的就好了,安装完成后须要进行一些基本设置
如今右击任何一个android工程,右击选择”Android tools“出现下图则表示安装成功