准备工作: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 文件,看以下的步骤,以及配置要求

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





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

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

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}



之后在配置 Common



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



生成的文件



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



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





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





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



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





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





so的调用和測试:

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



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

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

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

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

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

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

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

  1. Eclipse ADT插件 匹配的sdk tools版本

    Eclipse android ADT插件最后的版本为ADT 23.0.7 (August 2015),google不再更新. 和之匹配的android tools版本为SDK Tools r24.1 ...

  2. Eclipse中JSP生成的class文件去了哪里?

    转自:http://www.cnblogs.com/xing901022/p/4352999.html 首先应该了解的是Tomcat在Eclipse的映射关系,参考前一篇博文所述:Tomcat的服务器 ...

  3. Eclipse spket插件 内置js文件

    这一篇将怎么在spket内置js文件,而不用用户自己去添加.    1. 在开发的Eclipse的 运行配置将下面几个插件勾选上.     2. 在org.eclipse.ui.startup拓展里执 ...

  4. gulp插件实现压缩一个文件夹下不同目录下的js文件(支持es6)

    gulp-uglify:压缩js大小,只支持es5 安装: cnpm: cnpm i gulp-uglify -D yarn: yarn add gulp-uglify -D 使用: 代码实现1:压缩 ...

  5. Eclipse中JSP生成的类文件存放在哪

    Jsp页面看上去和HTML相似,但它实际上是作为Servlet运行的. 当JSP页面第一次被访问时,web容器解析jsp文件并将其转化为相应的java文件,该文件声明了一个servlet类,该类称为页 ...

  6. 使用Ajax生成的Excel文件并下載

    很久沒有寫文章啦,今天分享一個如何在ASP.NET MVC里使用Ajax下載生成文件的方法,以下只是個人心得: 大家都應該知道,在ASP.NET MVC里,如果通過Ajax調用后臺控制器時,可以返回一 ...

  7. Windows 环境搭建cocos2dx 3.x Eclipse的环境

    安装JDK,该步骤网上太多,不再赘述; 安装NDK,同样,直接去Google找到最新的NDK,下载解压到某个盘符根目录即可; 简便起见,使用ADT Bundle,而不要去使用Eclipse的原生包,可 ...

  8. Python开发环境(1):Eclipse+PyDev插件

    电脑:小米笔记本电脑Pro 15.6寸(i5-8250U),操作系统:Windows 10,JDK版本:1.8.0_152(环境变量已配置) Step 1.下载Eclipse 根据我的CPU型号,选择 ...

  9. 搭建andiord sdk和安装eclipse adt插件的个人小体会

    由于以前就已经搭建好了java jdk的运行环境这里就不多说了,不过这几天看了一篇博客才明白jdk变量环境设置的某些要义,不在是人云亦云而不知其所以然. 其博客的地址:http://www.cnblo ...

随机推荐

  1. Advanced Fruits HDU杭电1503【LCS的保存】

    Problem Description The company "21st Century Fruits" has specialized in creating new sort ...

  2. HDU 2196 Computer 树形DP经典题

    链接:http://acm.hdu.edu.cn/showproblem.php? pid=2196 题意:每一个电脑都用线连接到了还有一台电脑,连接用的线有一定的长度,最后把全部电脑连成了一棵树,问 ...

  3. 【翻译自mos文章】怎么startup/shutdown PDB?

    怎么startup/shutdown PDB? 来源于: 12c: How to Startup/Shutdown PDB's? (文档 ID 1592247.1) 适用于: Oracle Datab ...

  4. 【前端福利】用grunt搭建自己主动化的web前端开发环境-完整教程

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学.不用! 1. 前言 各位web前端开发者.假设你如今还不知道grunt或者听说过. ...

  5. mysql基础综述(四)

    1.数据库的简单介绍 1.1 数据库,就是一个文件系统,使用标准sql对数据库进行操作 1.2 常见的数据库 oracle  是oracle公司的数据库,是一个收费的大型的数据库 DB2,是IBM公司 ...

  6. 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)

    相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); ...

  7. 英语发音规则---Q字母

    英语发音规则---Q字母 一.总结 一句话总结: 1.Q/que发[k]音? Iraq [ɪ'rɑ:k] n. 伊拉克 cheque [tʃek] n. 支票 2.Qu-发[kw]? quality ...

  8. 2017-3-7 leetcode 66 119 121

    今天纠结了一整天============================================================== leetcode66 https://leetcode.c ...

  9. 剑指offer——04重建二叉树(Python3)

    思路:在数据结构中,有一个条件反射,谈及二叉树,就递归.所以在实现重建二叉树时,也应该用到递归的思想. 在前序遍历中,根节点处于第一个:在中序遍历中,根节点的左边为左子树节点,根节点右边为右子树节点. ...

  10. HDU4920 矩阵乘法

    嗯嗯 就算是水题吧. (缩完行就15行) 题意:两个n*n的矩阵相乘(n<=800),结果对3取模 思路:先对3取模,所以两个矩阵里面会出现很多0,所以可以先枚举一个矩阵,只有当该位置不是0的时 ...