博主双修Android,iOS底层库开发也有好几年了,一直盼望Android平台能有Xcode那样强大的IDE,尽管Eclipse的ADT插件也能很好的代码提示,自动补全,但每次新开类生成javah文件也是比较头疼的。
Android Studio从1.3版本开始说是加强NDK的接入,引入了『com.android.tools.build:gradle-experimental』,从功能使用上来看还是挺好的,比如能在java层自动生成对应的jni方法,并能在java和c\c++之间函数跳转,还能自动生成一些简单的env操作,比如转换String类。但是,这个gradle-experimental的写法和默认的gradle差别太大,到博主发这篇帖子是,AS2.1.2仍然还在开发这个插件。AS 2.2 preview版已经可以支持cmake和mk的编译了,而且cmake作为新建项目时勾选c++支持的默认形式了,难道要放弃gradle-experimental 🙁 。目前还不支持代码提示,跳转这些基本操作,后面的版本应该会加强吧。
另外还有一个比较严重的问题,Android Studio好慢,越来越慢了,经常导入一个项目卡半天,最后只能强制退出。项目编译起来,i7-4790都觉得用起来卡。博主到现在仍然使用最经典的Eclipse Indigo,哈哈。
废话完了,现在帖正题,Eclipse其实也是很强大的,我这里利用Ant脚本来实现自动化编译javah头文件。
- 首先,在工程里新建一个xml文件,名字随便取,就叫GenJavah.xml吧,内容如下
123456789<?xml version="1.0" encoding="UTF-8"?><project name="javah"><mkdir dir="jni" /><javah classpath="src" destdir="jni"><class name="cn.nodemedia.LivePlayer" /><class name="cn.nodemedia.LivePublisher" /></javah></project> - 在项目上点右键->Properties->Builders->New->Ant Builder->OK
- Name随便取吧,比如还是叫GenJavah。Main标签的Buildfile:点Browse Workspace…,选中刚才那个xml文件,ok
已经好了,每当保存了包含native方法的java文件保存后,选菜单栏Project->Build Project,ant帮我们自动向jni目录生成这些头文件。或者你按编译快捷键也可以。我们的c\c++ source文件只需要引入这个头文件,新的native方法就可以开始实现了。
这帖比较啰嗦,主要想吐槽下Android的开发环境,这么多年了,都还没让NDK开发者爽。不过gradle也有它比较强大的地方吧,本人才疏学浅,望指正。
后记:AndroidStudio 2.2正式发布后,NDK开发这块已经很成熟了,建议使用新平台了.
原创文章,转载请注明: 转载自贝壳博客
博客不错,嘎嘎!