美文网首页
iOS 制作静态framework

iOS 制作静态framework

作者: jeckHao | 来源:发表于2018-08-28 17:39 被阅读0次

    前言

    虽然制作静态framework已经很普遍了,度娘一搜一大把,但是还是把自己做的记录一下吧。
    库从本质上来说是一种可执行代码的二进制格式,可以被载入内存中执行。库分静态库和动态库两种。
    iOS中的静态库有 .a 和 .framework两种形式;动态库有.dylib 和 .framework 形式,后来.dylib动态库又被苹果替换成.tbd的形式。

    静态库与动态库的区别

    静态库和动态库是相对编译期和运行期的:静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要改静态库;而动态库在程序编译时并不会被链接到目标代码中,只是在程序运行时才被载入,因为在程序运行期间还需要动态库的存在。
    总结:同一个静态库在不同程序中使用时,每一个程序中都得导入一次,打包时也被打包进去,形成一个程序。而动态库在不同程序中,打包时并没有被打包进去,只在程序运行使用时,才链接载入(如系统的框架如UIKit、Foundation等),所以程序体积会小很多,但是苹果不让使用自己的动态库,否则审核就无法通过。
    处。

    创建framework静态库

    • 第一步,新建项目


      创建项目.png
      创建项目名.png
    • 第二步,导入需要打包的源文件。


      image.png
    • 第三步,暴露头文件。


      暴露头文件.png
    • 第四步,然后设置编译模式,在Xcode菜单【Product】--->【Scheme】--->【Edit Scheme...】中。


      设置编译模式1.png
      设置编译模式2.png
      修改生成的Mach-O格式.png
    • 第五步,编译生成静态库
      编译时,需要用release模式下的真机和模拟器各自编译一次。

    注意,需要用release模式下的真机和模拟器各自编译一次,不需要debug

    编译生成静态库.png
    • 第六步,合并framework
      我们需要的是这两个文件:
      合并文件.png
      来到终端:
      输入 lipo -info加真机上的这个文件路径 回车
      lipo -info.png
      前面的不用管,看最后 armv7 arm64 说明是真机,如此方法测试模拟器文件,需得到i386 x86_64才对。
      接下来重点:合并
      lipo -create 真机路径 模拟器路径 -output 真机路径
      因为我们是合并到真机路径上,所以合并完成后需要按上面的方法进行测试,还是拖入真机路径,这时候需要得到的是:armv7 i386 x86_64 arm64
    //合并reslease和debug的framework
    lipo -create /Users/hgm/Desktop/Release-iphoneos/HHCommentExten.framework/HHCommentExten /Users/hgm/Desktop/Release-iphonesimulator/HHCommentExten.framework/HHCommentExten -output /Users/hgm/Desktop/iPhone/HHCommentExten
    

    /Users/hgm/Desktop/为Release-iphoneos和Release-iphonesimulator在你本机的位置。合并之后,把 HHCommentExten拖入到HHCommentExten.framework即可使用。

    完毕:这只是将没有粘连的代码整合到静态framework,其中没有关联其他静态类库,因为我还没有做相关需求,所以先写到这里吧。

    相关文章

      网友评论

          本文标题:iOS 制作静态framework

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