近几天看JNI的问题,都说要怎么编译,要输入不少命令行的东西。我以为既然有IDE应用开发环境,就会有相应的JNI开发,很方便的没必要输入什么命令行的。 html
SDK应用经常使用的编译环境是Eclipse,而后就想像SDK同样开发NDK程序。下面是我从网上搜来的一些步骤: android
1.环境问题:Windows下用Eclipse编程,编译含Jni代码的程序,须要Cygwin和Android NDK开发包。 编程
安装过程,查看如下连接:[1-6步骤] bash
http://www.cnblogs.com/skyseraph/archive/2012/03/16/2400567.html
函数
这样,就完成了Cygwin和NDK的环境安装,并检测了可用性。 ui
2.而后,我想在Eclipse上编译,而不是在Cygwin下输入命令编译。 spa
下面的一个文档是我从网上下到的,后来找不到出处了,好像不少地方都有这个文档,我也懒得去找出处了,我把用到的部分帖在这里。
.net
这是一个编译NDK中的一个Sample的过程,根据本身的操做稍微作了修改: 命令行
一、 Eclipse下调试samples 调试 选择new—>project-->androidproject from existing Code 接下来以下图所示-> Next 接下来选择Source Code的位置(此处的解释是能够选择拷贝samples目录下hello-jni到本身的workspace,也可不选择,直接在NDK下的samples里建立工程) 而后,finish,完成了建立。 二、 工程编译 工程编译以前须要作一些设置,第一步设定一个新的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程序的开发过程了。
最后给出一个站内的连接: