一. 利用在Java文件中创建的Jni接口生成对应的.h文件
有种方式:
第一种方法:找到文件的目录
以JniTest.java为例
图1C:\self_project\NDK\app\src\main\java
执行命令
javah -classpath . -jni prictise.com.myapplication.model.JniTest,就会在C:\self_project\NDK\app\src\main\java目录下生成相应的.h文件
'javah' 不是内部或外部命令,也不是可运行的程序或批处理文件。
解决方式见我的另一篇文章
配置完成之后,一定要重新打开那个文件所在的目录,然后执行
图2第二种方法:自动生成法
1.
Program: javah
Parameters: -v -jni -d $ModuleFileDir$/src/main/jni $FileClass$
Working directory: $SourcepathEntry$
图32. $ModuleFileDir$/src/main/jni,可以更改成自己想要的目录
图4二:生成相应的so文件
1. 配置Android.mk文件,同时生成多个so文件
图52. 配置Application.mk文件
图63. 生成相应的so库
进入到相应的目录,执行命令
图7命令:C:\self_progress\ndk-bundle\ndk-build
图84. 配置build.gradle, 然后就可以使用啦
图9后话:
要记得在gradle.properties文件中加入
android.useDeprecatedNdk=true
三:Java和Jni开始互相调用
1. 给函数定义别名
https://www.2cto.com/kf/201307/227148.html
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, TAG,__VA_ARGS__)
2. 日志的打印
__android_log_print(ANDROID_LOG_DEBUG,"__BING__","sizeof(gMethods[0]) = %lu",sizeof(gMethods[0]));
4. 静态注册和动态注册
https://www.jianshu.com/p/b71aeb4ed13d
5. 调用过程
https://www.cnblogs.com/likwo/archive/2012/05/21/2512400.html
6. 获得类签名的方法
javap -s 类名,-p是显示所有的
网友评论