您的位置:首页 > 编程语言 > Java开发

Windows环境下教你用Eclipse ADT 插件生成.h/.so文件,Java下调用JNI,轻松学习JNI

2016-07-25 19:50 441 查看
http://blog.csdn.net/jspping/article/details/47780307




准备工作:Eclipse ADT IDE 开发工具,NDK ,Java 环境,博主的配置是:Windows x86 , ADT Build: v22.3.0-887826 , JAVA 1.7, NDK  android-ndk-r9

首先我们需要知道在 Linux 下编译 Project 生成 so 可以用 make/mm ,但是在 WINDOWS 就不行了,这个就不多说了,大伙都明

白,然而今天写的这篇博客就是教大家怎么在Windows 配置自己的ADT开发插件也具备这样的功能,方便快速高效的开发,本

篇博客暂时没有涉及 Studio so 插件生成,因为博主习惯 ADT 了 ,准备好上述所有的准备之后,我们开始进行后阶段的讲解

①首先我们创建一个Demo来测试我们的配置是否成功

下图是我刚创建的一个Demo,其中JNITools 就是调用so的地方,在没生成so之前,建议先不要加载so文件,把注释的全删

掉,之后就开始配置ADT生成.h文件,用来导入Java class/method 






②写完这样的Demo类之后,继续下面的操作,生成 .h 文件,看下面的步骤,以及配置要求











点击program 再点左上角的新建 ,可以看到我的program下面有JAVAH/NDK 这是我已经配置好了的,下面继续教大家配置

免命令行的快速生成操作配置






Arguments:-classpath ${project_loc}\bin\classes -d ${project_loc}\jni -jni ${java_type_name}






之后在配置 Common






每次改完配置记得Apply一下,.h文件生成的配置就OK了,下面说生成的使用操作






生成的文件






头文件的生成就完成了,就下来就是写.c文件并且配置.so文件生成的插件






编写如上.c文件,导入我们之前生成的头文件和方法,下面开始生成.so配置的插件,跟javah配置类似,不过在这之前我们需要配置一下Application.mk/Android.mk文件,如果Application.mk未配置,默认编译Android.mk文件,编写如下Andriod.mk文件,在这之前我们可以先不用可以去了解这两个mk文件的变量到底有啥作用,具体用来干啥,配置完之后可以再去详细了解一下






②开始配置ADT生成.so文件的插件





















别忘了Apply,下面继续说.so的生成






so的调用和测试:






整个配置到这里就讲完了,下面就跟大家说说关于so的一些反编译技巧,这其实是个技术活,相信接触JNI的朋友都知道,

这并非易事,因为即使解析出来了,也是一些汇编语言,还需要继续深入,才能获得根本意义上的所需要的东西

在这里,博主给大家推荐一个so反编译工具,IDA ,是我觉得目前逆向so最好的工具







总而言之一个包含比较多的函数的so逆向起来是非常麻烦且工作量大的工程,嘿嘿,当然只要有兴趣做起来就不是难事,就像我一样,没事就喜欢钻研这些玩意儿

好了这篇博客就这么多内容,可以慢慢去揣摩一下
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JNI NDK