美文网首页
静态库打包

静态库打包

作者: Carden | 来源:发表于2017-04-26 15:16 被阅读56次

为什么把代码打包成库?

  • 不想让别人看到.m文件

  • 直接Link编译好的二进制代码,节省编译时间

  • 方便代码的管理

  • Link代码的不同形式本质区分静态库和动态库

静态库和动态库的区别?

  • 系统库 = 动态库 = 编译APP时才载入 = 动态引用不拷贝到目标程序 = 节省应用大小 = 也称共享库。

  • .dylib和.tbd结尾 ∈ 系统动态库

  • 系统动态库即导即用 = 不需要Link依赖

  • 自定义动态库导入 = 必须在Embedded Binaries中导入 = 编译底层逻辑与静态库相同 = 会拷贝到目标程序中 = 其实就是个假的动态库,哈哈 = 而且自定义动态库苹果不让上架,自己悄悄玩

  • 编译APP时拷贝的二进制代码到目标程序 = 静态库嵌入

  • 手动添加依赖库 = 静态库Link。例如CoreVideo.framework

  • 静态库低耦合性 = 个个独立自动避免重复Link

Framework认识?

  • Framework = Headers + binary + bundle +(Info.plist + Modules)

  • Headers = .h文件集合

  • binary = .m文件编译成的二进制集合(不包含依赖库) = 正好解释为什么三方SDK非要我们自己去添加依赖,而不是一起打包到SDK里

  • bundle = 资源文件集合 = 资源提取用[NSBundle mainBundle]

Framework创造?

新建工程 只需导入,不需要添加进Target 支持版本 导入完成 选择membership为public否则头文件异常 选择需要公开的的.h文件 默认动态库Dynamic Library,选择Static Library库 编译:动态库链接报错 tbd = 系统动态库新格式 = dylib的后辈。解决:.tbd删掉+add other再次添加 + 前往/usr/lib + 选择dylib
选择编译环境:Debug:真机+模拟 Release:真机+模拟。终端命令:lipo -create 测试模拟库 测试真机库 发布模拟库 发布真机库。将四个文件合4为1

右击Product + show in finder + 拷贝到目标文件夹 + 第三方静态库也拷贝到文件夹

静态库版本(4种)

1.真机-Debug版本

2.真机-Release版本

3.模拟器-Debug版本

4.模拟器-Release版本

静态库的合并

1、 检测.a的类型

$ lipo -info libCZTools.a

2、 合并.a。好处:既可以在真机上调试,也可以在模拟器上调试;缺点:如果静态库太大,合并打包后,会非常大,因此很多第三方的静态库的.a是区分版本的

lipo -create Debug-iphoneos/libTools.a Debug-iphonesimulator/libTools.a -output libTools.a

相关文章

  • iOS静态库与动态库的区别与打包

    iOS静态库与动态库的区别与打包iOS静态库与动态库的区别与打包

  • iOS打包.a静态库步骤

    打包静态库流程 1.创建静态库 2.实现类 3.公开.h文件 4.打包模拟器静态库 5.打包真机静态库 6.合并模...

  • 目录一、库二、静态库、动态库、Framework三、打包静态库 1、.a静态库和.framework静态库的区别 ...

  • iOS 打包动态库和静态库

    打包注意,真机下打包的静态库只能在真机下运行,模拟器下打包的静态库只能在模拟器下运行 1.打包.a静态库 在.h和...

  • 使用cocoapods打包静态库(依赖私有库,开源库,私有库又

    之前整理过一种打包静态库的方法: 打包静态库(源码中包含其他静态库以及开源库)。不过这种方式的缺点很明显:1. 需...

  • Code signing "QuCore-ThirdParty.

    检查QuCore-ThirdParty.framework为debug版本静态库,尝试使用release版本静态库打包

  • 静态库制作总结

    静态库打包的完整正确步骤确定是静态库.a的肯定是静态库.framework的需要设置链接类型:target -> ...

  • cocoapods打包静态库,引用了AFNetworking等三

    接上篇cocoapods打包静态库(静态库引用.a,.Framework, .bundle文件,本文讲解再引入AF...

  • 打包静态库.a

    以xcode9.1为例,创建新的静态库工程,如图 设置需要暴露的头文件添加Headers, 步骤为:TARGET-...

  • 静态库打包

    为什么把代码打包成库? 不想让别人看到.m文件 直接Link编译好的二进制代码,节省编译时间 方便代码的管理 Li...

网友评论

      本文标题:静态库打包

      本文链接:https://www.haomeiwen.com/subject/ismizttx.html