JNI静态注册

往期推荐

Android NDK–JNI接口

如何编译可执行程序

Android NDK–了解c语言

单机和弱联网游戏内购,白嫖的机会来了

AS+smalidea插件动态调式

一: 新建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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值