iOS 静态库(静态库依赖、三方依赖、资源处理等)


### 目录
一、 基本概念
     1. 静态库动态库区别
     2. 库的版本
     3. iOS 设备的CPU架构
     4. ARM处理器指令集
     5. i386|x86_64 指令集
     6. Xcode中指令集相关选项
二、打包framewor静态库
     1. 创建项目-》创建静态库项目
     2. 静态库如何开发调试?
     3. 脚本合成静态库
     4. 自己打包的静态库依赖第三方.a和.framework静态库?
     5. 自己打包的静态库依赖第三方框架比如YYModel、AFN?
     6. 静态库依赖的图片、xib等资源处理?
     7. -ObjC / -all_load / -force_load 什么鬼

文章中的demo资源代码可以从这里下载
更多内容欢迎关注简书

静态库和动态库

  • 静态库 -> .a或者.framework的库

  • 动态库 -> .dylib或者.framework的库

区别:

  • 静态库在系统中多次使用就有多份拷贝 (比如A应用里有个xxx.a的静态库、B应用里有一个xxx.a的静态库,那么在系统内存里就会占用两份)

  • 动态库是由系统动态加载到内存,而且只加载一次,多个程序共用节省内存

我们自己制作的动态库苹果不允许上架到App Store 所以这里不做介绍 下面主要说一下静态库

库的版本

Debug版本 -》 真机Debug版本 / 模拟器Debug版本

包含完整的符号信息方便调试
不会对代码进行优化

Release版本 -》真机Release版本 / 模拟器Release版本

不包含完整的符号信息
执行代码进行过优化
执行速度会更快些

几个概念

iOS 设备的CPU架构

  • 在模拟器上支持:

      iPhone4s-5:  i386 架构
      iPhone5s-8 Plus: x86_64 架构
    
  • 在真机设备上支持:

      armv6: iPhone、iPhone 2、iPhone 3G、iPod Touch(第一代)、iPod Touch(第二代)
      armv7: iPhone 3Gs、iPhone 4、iPhone 4s、iPad、iPad 2
      armv7s: iPhone 5、iPhone 5c (静态库只要支持了armv7,就可以在armv7s的架构上运行)
      arm64: iPhone 5s、iPhone 6、iPhone 6 Plus、iPhone 6s、iPhone 6s Plus、iPad Air、iPad Air2、iPad mini2、iPad mini3
    

ARM处理器指令集

  • 几乎所有手机处理器都基于ARM处理器的,ARM处理器特点是体积小、低功耗、低成本、高性能,所以在嵌入式系统中应用广泛

      armv6|armv7|armv7s|arm64都是ARM处理器的指令集
      这些指令集都是向下兼容的
    

i386|x86_64 指令集:i386和x86_64 是Mac处理器的指令集

  • i386是针对intel通用微处理器32位处理器的
  • x86_64是针对x86架构的64位处理器

所以当使用iOS模拟器的时候会遇到i386|x86_64(ios模拟器没有arm指令集)

模拟器32位处理器测试需要i386架构。
模拟器64位处理器测试需要x86_64架构。
真机32位处理器需要armv7或者armv7s架构。
真机64位处理器需要arm64架构
命令查看静态库支持的架构:

通过 lipo -info - 》 拖入模拟器或者真机.framework的路径 查看静态库支持的架构

Xcode中指令集相关选项(Build Setting中)

1.png

1. Architectures

指定工程被编译成支持哪些指令集类型.

支持的指令集越多,就会编译出很多个指令集代码的数据包,对应生成二进制包就越大,也就是ipa包越大.

2. Valid Architectures

限制可能被支持指令集的范围.

xcode编译出来的二进制包类型最终从这些类型产生,而编译出哪些指令集的包,将由Architectures与Valid Architectures这些交集来确定,面会举例说明.

3. Build Active Architecture Only

指定只对当前连接设备所支持的指令集编译.

当设置为YES时是为了debug编译的速度更快,它只会编译当前的architecture版本

当设置为NO时,会编译所有的版本,所以一般d

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值