Cygwin+Eclipse+Android NDK ---Windows

        近几天看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

转载于:https://my.oschina.net/u/779520/blog/118664

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值