近几天看JNI的问题,都说要怎么编译,要输入很多命令行的东西。我觉得既然有IDE应用开发环境,就会有相应的JNI开发,很方便的不必输入什么命令行的。
SDK应用常用的编译环境是Eclipse,然后就想像SDK一样开发NDK程序。下面是我从网上搜来的一些步骤:
1.环境问题:Windows下用Eclipse编程,编译含Jni代码的程序,需要Cygwin和Android NDK开发包。
安装过程,查看以下链接:[1-6步骤]
http://www.cnblogs.com/skyseraph/archive/2012/03/16/2400567.html
这样,就完成了Cygwin和NDK的环境安装,并检测了可用性。
2.然后,我想在Eclipse上编译,而不是在Cygwin下输入命令编译。
下面的一个文档是我从网上下到的,后来找不到出处了,好像很多地方都有这个文档,我也懒得去找出处了,我把用到的部分帖在这里。
这是一个编译NDK中的一个Sample的过程,根据自己的操作稍微做了修改:
1、 Eclipse下调试samples 选择new—>project-->androidproject from existing Code 接下来如下图所示-> Next 接下来选择Source Code的位置(此处的解释是可以选择拷贝samples目录下hello-jni到自己的workspace,也可不选择,直接在NDK下的samples里创建工程) 然后,finish,完成了创建。 2、 工程编译 工程编译之前需要做一些设置,第一步设定一个新的Builder,用于编译Jni代码: projec->properties->builders选项卡:选择New,弹出框中,选择Program 选择program,配置如下图: Name栏填入自定义的名称; Main选项卡中,Location设置到{cygwin-root}\bin\bash.exe 我的是:D:\ProgramFiles\cygwin\bin\bash.exe Working Directory设置到当前工程目录:D:\Android_WorkSpace\HelloJni Arguments设置,这个是对Cygwin的命令行: --login -c "cd /cygdrive/d/Android_WorkSpace/HelloJni && $NDK/ndk-build" 注意选择你自己的真实目录,别抄我的,不然你死定了。 绿色是工程路径,红色是Cygwin设置的NDK路径。点击 Apply 接着配置Refresh选项 再配置Build Options选项 特别要注意选择specify resources,因为要编译C++,所以必须选择jni目录的C++ code ,如下图所示 finish->Apply->ok->ok 当以上步骤都正确配置无误,保存配置后应该就会自动编译jni目录下的C相关代码并输出相应的.so库文件到工程的libs目录下,libs目录会自动创建。(apk也自动在bin目录里生成,可直接拷贝到手机上安装运行) 这样,就可以和运行SDK程序一样,运行包含Jni代码的Android程序了。 Run->Run As -> Android Application. |
上面这个例子是编译的NDK自带的一个Sample工程 Hello Jni。脱离这个Sample编译个完全是自己的工程也和这个一样。
我的做法是,创建一个TestJni工程,把Hello Jni的Java代码和Jni文件夹拷贝到自己的目录下,然后按照上面的设置进行。开始的时候有问题,运行说是找不到库,最后发现是我自己犯了个低级的错误,因为新建的工程和Sample引出的工程的包路径不同,所以,在C文件中函数名的定义就会有相应的改变(Java_包名段1_包名段2_..._包名段n_类名_方法名),这样就是简单Jni程序的开发过程了。
最后给出一个站内的链接:
http://my.oschina.net/u/131573/blog/23728