在Android中通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态链接库和动态链接库两种,是在链接的时候才会用到的库,只有C/C++、OC语言才会有链接过程,Java没有

静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,并且静态库文件体积较大。静态链接库的后缀是.a,例如libcjson.a。在调用静态库时,如果对静态库中的函数内容进行改变,不仅需要重新编译静态库,还需要对调用静态库的程序重新编译,将静态库编译到目标代码中。

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,并且动态库的文件体积较小。后缀是.so,例如libcjson.so。在调用动态库时,如果对动态库中的函数内容进行改变,只需要重新编译动态库,不需要对调用动态库的程序重新编译,即不需要干预目标代码,直接用新的动态库替换掉旧的动态库即可。

静态库和动态库的编译和调用场景

1、将C/C++的源码直接编译成静态库,只能提供给底层调用。

注:比较适用于将第三方开源库编译成静态库,也可以将自己写的源码编译成静态库,给自己或其他人的底层调用。

2、将C/C++的源码直接编译成动态库,不需要封装JNI层,提供给底层调用。

注:比较适用于将自己写的源码编译成动态库,也可以将第三方开源库编译成动态库,给自己或其他人的底层调用。

3、将C/C++的源码进行JNI层封装后,编译成动态库,提供给上层调用。

注:比较适用于将自己写的源码进行JNI封装后,连同jar包一起,给自己或其他人的上层调用。

Android静态库和动态库的区别相关推荐

  1. 【Android NDK 开发】Android.mk 配置静态库 ( Android Studio 配置静态库 | 配置动态库与静态库区别 | 动态库与静态库打包对比 )

    文章目录 I . Android Studio 中使用 Android.mk 配置静态库 总结 II . 第三方动态库来源 III . 配置 Android.mk 构建脚本路径 IV . 预编译 第三 ...

  2. C/C++ 静态库和动态库的区别

    可执行目标文件 可重定位目标文件 共享目标文件 静态库和动态库的区别: 生效阶段不同,静态库是在编译阶段就会把其链接到可执行目标文件中:动态库是在程序运行过程中指定路径或者系统动态库路径下寻找. -l ...

  3. android jni通过cmake使用第三方静态库和动态库

    google 官方现在推荐使用cmake来构建jni. 本人正好工作需要使用第三方的静态库和动态库,写此文 权当做个记录. 首先修改app的build.gradle文件 ndk {abiFilter ...

  4. 关于静态库、动态库的区别汇总

    real framework中不可以使用类别 或 不可以不包含类文件 real framework 中直接调用NSClassFromString函数会返回null  需要强制加载指定类 或 直接通过类 ...

  5. Android NDK生成及连接静态库与动态库

    对于Android应用开发,大部分情况下我们使用Java就能完整地实现一个应用.但是在某些情况下,我们需要借助C/C++来写JNI本地代码.比如,在使用跨平台的第三方库的时候:为了提升密集计算性能的时 ...

  6. C++静态库与动态库的区别?

    C++静态库与动态库 这次分享的宗旨是--让大家学会创建与使用静态库.动态库,知道静态库与动态库的区别,知道使用的时候如何选择.这里不深入介绍静态库.动态库的底层格式,内存布局等,有兴趣的同学,推荐一 ...

  7. 静态库与动态库的区别

    静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

  8. 静态库与动态库(共享库)的联系与区别

    提要: 1.静态库                 静态库,也称作归档库(archive),按惯例它们的文件名都以.a结尾.比如,标准C语言函数库/usr/lib/libc.a和X11函数库/usr/ ...

  9. Linux中静态库和动态库(共享库)的区别

    1. 静态库和动态库的制作过程区别 1.1 静态库的制作过程 详见博客:Linux中静态库的制作与使用 1.2 动态库的制作过程 详见博客:Linux中动态库(共享库)的制作与使用 2. 静态库和动态 ...

  10. 静态库与动态库的区别(转)

    静态库与动态库的区别 首先来看什么是库,库(Library)说白了就是一段编译好的二进制代码,加上头文件就可以供别人使用. 什么时候我们会用到库呢?一种情况是某些代码需要给别人使用,但是我们不希望别人 ...

最新文章

  1. python画熊猫代码_用Python Turtle 画可爱的熊猫
  2. JavaScript精要
  3. shell命令获取按键值_linux shell获取键盘输入
  4. NYOJ 767 因子和
  5. 实例5:python
  6. hdu 4864 task 贪心
  7. Windows下的hiberfil.sys文件及其作用
  8. html网页如何限制ip访问量,Nginx 限制IP访问频率
  9. Apache httpd 几个报错的解决记录
  10. 解密android日志xlog,安卓开发技巧2:自定义日志工具类XLog的实现
  11. python内置函数表示2的10次幂_Python常见内置函数用法(二)
  12. 关于计算机合成图像的应用中,数字图像合成技术综述
  13. 多級commentable處理
  14. 学计算机基础专业必备的书,大学计算机基础教程
  15. 五分频电路(50%占空比)
  16. flex弹性盒子(伸缩盒模型)的使用
  17. 概率论 | 联合熵、条件熵、互信息之间的表示、关系及大小
  18. python编程midi键盘按键错乱_键盘按键错乱超简单解决教程
  19. Linux视窗系统:QT使用GPU渲染
  20. USES_CONVERSION的使用和注意

热门文章

  1. Scrum敏捷开发实战分享(上篇):方法介绍、敏捷团队和敏捷流程
  2. 敏捷开发 SCRUM 简介
  3. 第4章 Function语义学
  4. 【转】MapGIS基础系列(三)--服务疑难面面观
  5. oracle中锁表语句,oracle查询锁表解锁语句
  6. 前端实现HTML转PDF
  7. 数列求和再求极限问题
  8. 修改vscode图标
  9. 为什么快捷指令无法将媒体转换为文本_小红书去水印快捷指令重磅更新,连视频封面图都可以下载了...
  10. 安全公司发现雄迈数字摄像机的主控口令“已泄露”