1、创建一个 Android project, 名字叫Why 2 在工程Why中添加一个java类,class名为Jni。这个类是一个JNI接口的Java类,文件名为Jni.java。
2、编写一个C源文件,包含对第三方SO库的调用。在这个C源文件中,需要#include之前生成的.h文件,并实现相应的native方法。在实现方法中,可以调用第三方SO库中的函数。编写Android.mk或CMakeLISts.txt:根据项目使用的构建系统,编写构建脚本,指定源文件、目标SO库名称等。
3、定位Exports选项卡:在IDA的主界面中,找到并点击“Exports”选项卡。这个选项卡列出了.so文件中导出的所有函数。查找目标函数:在导出的函数列表中,查找与Java层代码中调用的native方法名相匹配的函数。
4、定义native方法:在Java类中,使用native关键字声明需要调用的native方法。例如:public native void myNativeMethod;。生成头文件:使用javac编译Java类后,通过javah命令生成对应的C/C++头文件。这个头文件包含了native方法的声明,其命名规则通常为Java_类名_方法名。
5、创建一个Android工程。在Java类中声明native方法。使用javah工具生成头文件。创建jni目录,引入头文件,并根据头文件实现C代码。编写Android.mk文件:这个文件用于指定编译参数和源代码文件。使用NDK编译生成动态库(.so文件)。在Java代码中加载动态库并调用native方法。