Android静态库和动态库的区别

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

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


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

 

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

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

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

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

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

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

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值