往期推荐
一: 新建Android工程
1.下载安装eclipse工具,打开该工具,如下图所示。
2.打开eclipse软件之后,依次选择File=>New=>Android Application Project选项,如下图所示。
3.点击Android Application Project选项后,弹出弹窗,如下图所示。
Application Name:手机桌面的应用程序的名称。
Project Name:创建应用程序的项目名,项目名通常不加空格。
Package Name:应用程序的包名,Android 系统就是通过包名来区分不同应用程序的。
Minimum Required SDK:最低兼容版本。
Target SDK:已经做过测试,不需要向前做兼容的操作。
Compile With:测试编译版本。
Theme:创建应用程序的模板类型。
4.填写信息,完成后,点击Next按钮进入New Android Application页面,如下图所示。
5.继续点击Next进入Configure Launcher Icon页面,继续点击Next进入Create Activity页面,选择模板Empty Activity或Blank Activity,然后点击Finish按钮,一个安卓应用程序就创建完成,如下图所示。
二:义Native方法
1.在“yijindaxue”工程中依次找到“src”目录下的“com.yijindaxue”目录下的“MainActivity.java”文件,双击打开该文件,如下图所示。
2.在“MainActivity.java”文件中定义一个普通方法public String
getText(),在普通方法的基础上加一个关键字native,通过native来进行修饰,public native String getText(),这样定义native方法就完成了。如果文件名字前出现“*”,表示该文件没有保存,需要CTRL+S保存,如下图所示。
三:生成.h头文件
1.在“yijindaxue”工程下选中src目录右键选择最后一项properties,点击该选项弹出弹窗,复制Location对应的值,也就是文件路径D:\Android \data\yijindaxue\src,复制成功后关闭对话框,如下图所示。
2.接下来点击左下角“windows”图标,输入“cmd”命令打开窗口,输入“D:”切换到D盘,然后执行该“cd D:\Android\data\yijindaxue\src”命令进入src目录,紧接着执行“javah -jnicom.yijindaxue.MainActivity”命令生成“.h”头文件,如下图所示。
3.回到“yijindaxue”工程界面,选中src目录右键F5刷新,就可以看到有一个com_yijindaxue_MainActivity.h文件,双击打开该文件,如下图所示。
四:新建jni文件夹
1.选中“yijindaxue”工程,右键依次选择New=>Folder,点击该选项弹出弹窗,在Folder name处输入文件名“jni”,此名称不可更改,最后点击“Finish”完成jni文件夹的创建,如下图所示。
2.将之前创建好的“.h“文件移动到jni文件夹里面。jni文件夹除存放.h文件,还要存放.c源文件及两个.mk文件。下面就来新建这三个文件。
五:新建.c源文件
1.选中“jni”目录右键依次选择New=>File,点击该选项弹出弹窗,输入“yijindaxue.c”,此名称可以更改,最后点击“Finish”完成“yijindaxue.c”文件的创建,如下图所示。
2.接下来编写相应的C代码。使用“#include”命令导入之前生成的头文件,然后将头文件中的函数复制过来,删除“;”,改成{},在对应的类型后面添加两个变量名env和obj,修改一下就可以,如下图所示。
.c文件已经编写好了,接下来新键两个.mk配置文件。
六: 新建两个.mk配置文件
选中“jni”目录,右键依次选择New=>File,点击该选项弹出弹窗,输入“Android.mk”,此名称不可更改,最后点击“Finish”完成“Android.mk”文件的创建,如下图所示。
编写Android.mk配置文件,如下图所示。
接下来新建Application.mk配置文件。
选中“jni”目录,右键依次选择New=>File,点击该选项弹出弹窗,输入“Application.mk”,此名称不可更改。
最后点击“Finish”完成“Application.mk”文件的创建,如下图所示。
编写Application.mk配置文件,如下图所示。
七:编译动态链接库
在“yijindaxue”工程选中jni目录右键选择最后一项“properties”,点击该选项弹出弹窗,复制“Location”对应的值,也就是文件路径D:\Android\data\yijindaxue\jni,复制成功后关闭对话框,如下图所示。
接下来点击左下角“windows”图标,输入“cmd”命令打开窗口,输入“D:”切换到D盘,然后执行“cd D:\Android\data\yijindaxue\jni”命令进入jni目录,紧接着执行“ndk-build”命令生成动态链接库“.so”文件,如下图所示。
八:加载so库
在“yijindaxue”工程中依次找到“src”=>“com.yijindaxue”目录下的“MainActivity.java”文件,添加一个静态语句块。
在里面编写“System.loadLibrary(“yijindaxue”)”加载动态链接库,记得这里要去头和去尾。然后在onCreate方法中添加一个Toast弹窗,调用之前定义的native方法,如下图所示。
九:运行应用程序
打开雷电模拟器,选中“yijindaxue”工程=>右键选择Run As选项=> 点击Android Application运行该应用程序。
小结:
JNI静态注册,它的流程是:
1、新建Android工程。
2、在.java文件中声明native方法,执行javah命令生成.h文件。
3、新建jni文件夹及.c文件,编写C代码,jni文件名不可更改。
4、编写两个.mk文件:Android.mk & Application.mk,文件名不可更改。
5、编译动态链接库.so文件。
6、编写java代码加载so库,记得这里要去头和去尾。
7、运行该程序。
如果你也对安卓逆向感兴趣。可以加下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程
安卓逆向交流学习:1139349849
vx:Yjxiaox