1. 前言:
看C走了不少弯路, 单纯的看看概念写写基础代码, 结果没过多久就忘了, 索性重新快速过了一遍C, 先把基础概念搞清楚, 知道是什么意思, 然后就打算正式开始入手NDK开发, 在学习NDK开发的过程中顺便再加深对C的学习, 学习NDK开发并没有找什么书籍, 就把B站的开源项目ijkplayer当作辅助资料.
2.先写一个示例代码 :
先用as完成一个demo, 后续系列文章围绕这个demo展开.
- 创建类JniUtils, 里面先创建一个本地方法.
public class JniUtils {
public native String getStringFromC();
}
- rebulild工程, 得到.class文件
-
在Terminal中执行javah命令:
-
然后在debug路径下生成了.h文件
-
然后main路径下新建jni目录并将h文件剪切过来:
-
在jni路径下将.h文件复制生成.c文件, 并对方法进行修改, 先完成一个生成so文件并成功调用的小demo, 至于语法, 后边详细分析:
- 在build.gradle文件中编写so文件名与制定架构下的so文件:
https://zhuanlan.zhihu.com/p/21359984 这篇文章对so的分析还不错;
-
build gradle以后会在build文件夹下生成so文件, 然后复制到main目录下:
-
应用层这样写, 然后大功告成:
- 实现了java调用c代码, 下一篇文章实现c调用java代码;