您的位置:首页 > 其它

mac配置NDK环境和演示调用jni的一个demo

2015-11-23 11:16 393 查看
      目前切换到mac上面进行Android开发,很久没有弄ndk,现在重新搞搞,了解下流程,同时也把一些问题记录下来,希望可以帮助有需要的人。

文章使用的开发平台是eclipse,整个流程大体如下:

配置ndk环境:

下载ndk: 

             这里就要上官网下载ndk的开发工具了:http://developer.android.com/intl/zh-cn/ndk/downloads/index.html

解压ndk:

ndk$ chmod a+x android-ndk-r10c-darwin-x86_64.bin
ndk$ ./android-ndk-r10c-darwin-x86_64.bin
          

mac配置环境变量:

      (1) 打开.bash_profile 文件(如果没有该文件,则自己创建,用:touch .bash_profile命令)
                      
      (2)往里面添加自己ndk所在目录:export PATH=${PATH}:/Users/zgm/Desktop/zgm/tool/ndk/android-ndk-r10e

      (3)添加完毕就保存文件,接着控制台输入命令更新source .bash_profile文件:source .bash_profile

      (4)最后重新打开控制台,用命令:ndk-build测试,如果出现类似类似:Android NDK: Could not find application project directory信息就说明成功了!

eclipse配置NDK:

  如图:打开eclipse的偏好设置,然后设置ndk的目录,接着点击“ok”就可以了。

写个demo测试jni调用

   在ndk7之后,ndk已经集成了cygwin,这就为我们开发jni带来了更多的便捷,本次demo采用的工具是eclipse,听说在eclipse上面开发jni比在Android studio上面快捷,我还没有测试过,有兴趣的网友可以试试,但是在官网上面关于ndk的演示还是用eclipse,所以本人觉得还是有点道理的,不过随着as的改进,慢慢jni的开发也都会转过去吧,好了回到正题!现在介绍调试demo,要用demo,当然是官方的demo测试最好啦,这次我们要用的是一个简单的“hello-jni”。

打开ndk目录

在目录中有个“hello-jni”的demo,我们这次就是用它。

导入demo

现在我们要用eclipse导入demo,但是导入的方式不是General,而是通过Android导入



然后选择hello jni 就行了,下面的tests不需要勾选。



加入Native编译支持

右键“HelloJni”工程,然后选择   Android Tools > Add
Native Support,在出现的窗口填上"hello-jni",这个就是编译出来的so库的文件名字。


编译

搞定上面就可以右键直接编译了,如果出现下图,就恭喜你成功了。



其他:

    最好的配置环境方式

    随着开发工具的升级会导致NDK配置的有所改变,最好的方法当然是参考官方文档的配置啦!
NDK使用配置的官方说明:http://developer.android.com/intl/zh-cn/ndk/guides/setup.html

    eclipse没有NDK的选项怎么办?

   发现eclipse没有ndk选项的时候我也傻了,幸亏网上有很多热心网友提供解决方案,也是因为这样,才促使我现在慢慢开始写博客来进行回馈。
如何解决这个问题,可以参考:点击打开链接

     如何解决直接使用.so,而不需要引入jni文件夹,报错:Android NDK: Aborting... 

    我在完成hello-jni调试之后,然后想直接使用.so包而不需要jni文件夹了,因为实际开发的时候我们仅需要.so文件就可以了,但是当初直接在工程删除jni相关文件之后发现,一直报错:Android NDK: Aborting... ,开始我以为是我的.so有问题,但是发现我新建的Android工程可以正常调用,但是原工程却一直报错。。。郁闷了很久,就去问公司大神,他的回答给了我一些思路——可能是引入了不必要的配置,我马上去检查,发现配置真的是多了一些编译的东西,一般的Android工程是没有红框的东西的,如下:



解决方法就是如下,去掉红框的文件,然后把黄框的文件和正常的文件比较,去掉关于ndk的东西,经过这两个步骤就可以解决了!



我的博客之旅才刚刚开始,以后我会继续努力的!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mac ndk jni