美文网首页
iOS 静态库Framework

iOS 静态库Framework

作者: 淘代码者 | 来源:发表于2017-11-06 16:11 被阅读0次

    最近维护一个旧项目,使用到openssl,但是从SVN更新下来代码,缺少openssl.framework,于是乎各种百度搜索,先是从阿里demo中找到openssl。这里有个小插曲,拿到阿里的demo打开,运行没发现openssl这个文件夹在哪啊,但是一个.m文件确实还用到了,但是为啥子不存在这个文件夹呢?一脸懵逼。于是乎在finder中查找openssl文件夹,原来在这里啊!


    Snip20171106_1.png

    终于找到了,问题这下可解决了吧,于是在项目中导入openssl这个文件夹,开始编译,然后问题从这里开始了,报了一堆错误,项目中导入文件的方式是图一这种导入方式:

    图一

    这也挺简单嘛,改成图二格式不就行了


    图二

    接着编译,又报错了,这次是openssl文件夹内部文件错误,如图三:

    图三

    于是乎有了这篇文章:

    1.新建项目

    选择cocoa Touch Framework

    项目名openssl,这个名称和你最终要创建的XXX.framework中的XXX。

    配置正确的项目名

    2.导入相应的头文件

    Snip20171106_8.png 在openssl.h文件中导入响应的头文件

    3.配置工程

    • 公开头文件
      公开头文件是什么?
    这就是公开的头文件

    怎么公开头文件?


    Snip20171106_12.png

    默认好像是在project中一步操作让其移动到public中

    Snip20171106_13.png
    • 让你的framework支持更多的设备,将此配置成NO
    Snip20171106_15.png
    • 让你的framework是静态库,默认是动态库
    Snip20171106_16.png
    • 让你的framework支持最低版本
    Snip20171106_17.png

    4.编译

    选择Generic iOS Device 和任何一个模拟器 各自编译一次。

    Snip20171106_20.png

    5.查看和合并静态库

    查看静态库

    Snip20171106_22.png Snip20171106_23.png

    查看支持的CPU框架

    Snip20171106_24.png

    使用的终端命令:

    lipo -info openssl的文件路径

    合并真机和模拟器静态库

    Snip20171106_25.png

    合并生成的是一个openssl.framework中的openssl文件,选择模拟器或者真机中任何一个openssl.framework替换掉其中openssl文件。至此这个你选择的openssl.framework 就是最终的openssl.framework。

    6.导入到项目中使用

    ps:

    如果静态库中有Category类,就要在使用静态库项目的配置中添加-ObjC或者-all_load
    如果创建的framework类中使用了.tbd,则项目中也要导入.tbd动态库

    引自:iOS中,Framework和.a的打包及使用
    合并静态库时遇到的问题参考
    iOS 制作FrameWork 以及FrameWork通过包合并支持arm64 armv7 i386 架构
    参考链接:
    iOS Framework lipo报错 lipo: can't map input file
    iOS开发--使用lipo命令制作模拟器与真机通用静态库
    iOS 10 打包静态库支持armv7 静态库打包 .a armv7

    相关文章

      网友评论

          本文标题:iOS 静态库Framework

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