iOS静态库和动态库

呈现方式

静态库:.a, .framework
动态库:.framework, .dylib(现在苹果改成了.tbd)

区别

静态库
  • 编译时被链接到目标代码中,如果有多处引用存在多次冗余拷贝,占用内存
  • 需要依赖.a+.h+资源
动态库
  • 运行时调用,不会产生冗余调用,占用内存小
  • framework文件可以直接使用
静态库架构及机型系统对照

静态库对应真机和模拟器两种形式,以下先列举下不同机型对应的架构:

  • 模拟器
    • iPhone4s~5 : i386
    • iPhone5s~6plus : x86_64
  • 真机
    • iPhone3gs~4s : armv7
    • iPhone5~5c : armv7s
    • iPhone5s~6plus : arm64
  • 机型和系统对照
    • 4s: iOS6+
    • 5: iOS6+
    • 5s/5c: iOS7+
    • 6: iOS8+
    • 6s: iOS9+
生成静态库步骤
  • 选择需要暴露的头文件,Build Parses->Copy Files添加,生成后在目录下的include里会找到这些文件


    iOS静态库和动态库_第1张图片
    暴露头文件

    生成后的头文件
  • command+B搞定
生成静态库命令
  • 查看架构信息 lipo -info xx.a/aa.a
    模拟器打包出来的架构
  • 合并静态库,主要场景是在模拟器和真机需要合并时,lipo -create xx.a yy.a -output zz.a
  • 分离静态库,主要将三方提供的库拆解成自己想要的,lipo xx.a -thin armv7 -output yy.a

你可能感兴趣的:(iOS静态库和动态库)