NDK开发->⑴生成so文件及其调用

1. 前言:

看C走了不少弯路, 单纯的看看概念写写基础代码, 结果没过多久就忘了, 索性重新快速过了一遍C, 先把基础概念搞清楚, 知道是什么意思, 然后就打算正式开始入手NDK开发, 在学习NDK开发的过程中顺便再加深对C的学习, 学习NDK开发并没有找什么书籍, 就把B站的开源项目ijkplayer当作辅助资料.

2.先写一个示例代码 :

先用as完成一个demo, 后续系列文章围绕这个demo展开.

  1. 创建类JniUtils, 里面先创建一个本地方法.
public class JniUtils {    
       public native String getStringFromC();
}
  1. rebulild工程, 得到.class文件
  2. 在Terminal中执行javah命令:


    NDK开发->⑴生成so文件及其调用_第1张图片
    javah命令.png
  3. 然后在debug路径下生成了.h文件


    NDK开发->⑴生成so文件及其调用_第2张图片
    头文件路径.png
  4. 然后main路径下新建jni目录并将h文件剪切过来:


    NDK开发->⑴生成so文件及其调用_第3张图片
    新建jni目录.png
  5. 在jni路径下将.h文件复制生成.c文件, 并对方法进行修改, 先完成一个生成so文件并成功调用的小demo, 至于语法, 后边详细分析:


    NDK开发->⑴生成so文件及其调用_第4张图片
    编写C文件.png
  6. 在build.gradle文件中编写so文件名与制定架构下的so文件:
    https://zhuanlan.zhihu.com/p/21359984 这篇文章对so的分析还不错;
    NDK开发->⑴生成so文件及其调用_第5张图片
    不同架构下的so文件.png
  7. build gradle以后会在build文件夹下生成so文件, 然后复制到main目录下:


    NDK开发->⑴生成so文件及其调用_第6张图片
    生成的so文件.png
  8. 应用层这样写, 然后大功告成:


    NDK开发->⑴生成so文件及其调用_第7张图片
    java层调用c代码.png
  9. 实现了java调用c代码, 下一篇文章实现c调用java代码;

你可能感兴趣的:(NDK开发->⑴生成so文件及其调用)