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

时间:2021-05-23 04:13:17

准备工作: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 

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



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

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

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

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

之后在配置 Common

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

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

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

生成的文件

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

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

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

编写如上.c文件,导入我们之前生成的头文件和方法,以下開始生成.so配置的插件,跟javah配置类似,只是在这之前我们须要配置一下Application.mk/Android.mk文件,假设Application.mk未配置,默认编译Android.mk文件,编写例如以下Andriod.mk文件。在这之前我们能够先不用能够去了解这两个mk文件的变量究竟有啥作用。具体用来干啥。配置完之后能够再去具体了解一下

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



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

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



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



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

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

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



so的调用和測试:

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">



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

这并不是易事,由于即使解析出来了,也是一些汇编语言,还须要继续深入。才干获得根本意义上的所须要的东西

在这里。博主给大家推荐一个so反编译工具,IDA ,是我认为眼下逆向so最好的工具

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

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

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

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

总而言之中的一个个包括比較多的函数的so逆向起来是很麻烦且工作量大的project,嘿嘿,当然仅仅要有兴趣做起来就不是难事,就像我一样。没事就喜欢钻研这些玩意儿

好了这篇博客就这么多内容。能够慢慢去揣摩一下