Android 基础jni ndk cmakeJNI和【NDK】

JNI 学习总结

2019-05-21  本文已影响1047人  0xCAFEBOY

前言

在 Android 项目中,大家都会或多或少接触过 JNI。一般都是底层同事给出动态库 (.so) ,然后集成进项目中。本文你将学到, 静态库与动态库的区别, 什么是ABI,以及动态库的寻找流程

阅读本文大概需要 2 分钟

目录

目录

概念

静态库 & 动态库

众所周知,Android 是基于 Linux 开发的系统,在 Linux 系统中,共有两种库 静态库动态库,区别如下:

区别总结

这里做一个总结,对于静态库来说:

对于动态库来说:

ABI

由于 Android 机型众多,不同的厂商的机型往往使用不同的 CPU 架构,支持不同的指令集。CPU 与指令集的对应关系通过应用的二进制接口描述,这个接口就是 ABI.
ABI 的需要定义的具体内容如下:

总结一下 ABI 的作用,就是在机器代码运行时,精确的定义机器代码如何与系统交互。因此必须为每个 CPU 架构指定 ABI

业务流程

上文了解到了 Android 常用的静态库与动态库的概念及区别,下面我们来总结一下 Android 动态库的加载流程

动态库(.so)的寻找流程

总结一下,流程图如图所示:


动态库(.so)的加载流程图

简单来说,就是先去默认目录(nativeLibraryDir)寻找。若没找到则去对应系统指定目录寻找。


麻烦点个喜欢,您的赞同 & 鼓励是我写作的最大动力!

上一篇 下一篇

猜你喜欢

热点阅读