深入探索Android热修复技术原理读书笔记 —— so库热修复技术

热修复系列文章:

深入探索Android热修复技术原理读书笔记 —— 热修复技术介绍

深入探索Android热修复技术原理读书笔记 —— 代码热修复技术

深入探索Android热修复技术原理读书笔记 —— 资源热修复技术

1. SO库加载原理

Java Api 提供以下两个接口加载一个 so 库

System. loadLibrary (String libName):传进去的参数:so 库名称, 表示的 so 库文件,位于apk压缩文件中的 libs 目录,最后复制到 apk 安装目录下。

System, load (String pathName):传进去的参数:  so 库在磁盘中的完整 路径。加载一个自定义外部 so 库文件。

上述两种方式加载一个 so 库,实际上最后都调用 nativeLoad 这个 native 法去加载 so 库,这个方法的 fileName:so 库在磁盘中的完整路径名。

代码+图文的方式简述 so 库加载原理,下面的代码示例,stringFromJNI -> Java_com_taobao_jni_MainActivity_stringFromJNI 静态注册的 native 法,test->test 动态注册的 native 方法。

深入探索Android热修复技术原理读书笔记 —— so库热修复技术

深入探索Android热修复技术原理读书笔记 —— so库热修复技术

我们知道 JNI 编程中,动态注册的 native 方法必须实现 JNI_OnLoad 方法,同时实现一个 JNINativeMethod [] 数组,静态注册的 native 方法必须是 Java+完整路径+方法名的格式。

深入探索Android热修复技术原理读书笔记 —— so库热修复技术

 

总结下:

动态注册的 native 方法映射通过加载 so 库过程中调用 JNI_onLoad 方法调用完成。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfygy.html