静态库与动态库介绍

这篇文章主要介绍静态库和动态库的区别、支持的平台架构、架构的拆分与合并,以及APP Store上架时可能遇到的问题。

一、存在形式

静态库:.a.framework

动态库:.dylib .framework

二、使用区别

静态库:链接时,静态库会被完整的复制到可执行文件中,被多次使用就有多分冗余拷贝

动态库:链接时,不复制,程序运行时由系统加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。

三、iOS的架构

模拟器:

CPU架构 机型
i386 iPhone4s-iPnone5
x86_64 iPhone5s-iPhone X

真机:

CPU架构 机型
armv7 iPhone3s-iPhone4s
armv7s iPhone5-iPhone5c
arm64 iPhone5s-iPhone X

 

四、terminal查看静态库支持的框架

lipo -info 静态库名字

lipo -info framework下的二进制文件名字

五、引用动态库上架条件

1、最低支持iOS8.0

2、需要删除i386、x86_64架构包,如果不删除,构建版本是会报错

六、例子

以环信SDK为例,如何进行架构包拆除及生成

cd 到pods文件夹具体三方的.framework目录下,执行以下指令

1.生成armv7架构包
lipo HyphenateLite -thin armv7 -output HyphenateLite_armv7

2.生成armv64架构包
lipoHyphenateLite -thin armv64 -output HyphenateLite_arm64

3.删除原来的架构包,合并armv7和armv64
lipo -create HyphenateLite_armv7 HyphenateLite_arm64 -output HyphenateLite

4.最后再删除HyphenateLite_armv7和HyphenateLite_arm64

你可能感兴趣的:(ios)