美文网首页
iOS封装FrameWork最全教程

iOS封装FrameWork最全教程

作者: cd5e2b81487d | 来源:发表于2018-11-14 11:15 被阅读30次

    第一部分:封装frameWork
    1.首先准备好,我们要封装的功能模块,我这里是一个录制面部信息和声音信息的功能模块(这个模块要上传视频到服务器,所以需要用到AFNetworking这个库)。


    要封装的功能模块.png

    注意下这个库里面有资源文件:xib和图片文件,图片文件,我们后面会用bundle将其单独拉出来。
    2.新建Framework工程,开始封装


    新建工程
    工程界面
    3.把我们要封装的功能模块,直接拖进项目
    拖入功能模块.png

    我这里是直接拖到文件夹外侧的


    项目展示

    4.我们进行相关项目的配置(都在Build Settings中设置)
    (1)设置frameWork支持的架构,由于ARCHS这个宏,默认已经有armv7,arm64了,那我们再新增一个armv7s即可


    设置支持的架构
    增加armv7s

    (2)设置Framework支持的系统版本,我这里选择的是9.3


    设置系统版本

    (3)由于我们是创建静态库,所以选择Static Library


    设置Mach-O Type

    5.下面我们将要暴露给别人使用的文件拖到Public中


    拖动前
    拖到后

    6.将我们第5步中所有暴露在Public中的头文件,都写在我们创建Framework项目时生成的头文件中,这个文件后面会自动暴露给用户


    增加头文件

    7.编译一下,发现了AFNetwoking报错


    缺少AFNetwoking的报错

    由于我们的功能使用了AFNetwoking,所以我们pod安装下。
    (1)创建pod file


    先pod init
    (2)找到pod file文件并写入pod 'AFNetworking'
    找到pod File
    写入pod指令

    (3)pod install


    执行安装

    8.在我们的pch中写入import。至于创建pch文件以及如何设置路径和以前一样,不再赘述


    pch文件写入import

    9.重新打开项目,进行编译,编译成功


    打开项目

    10.我们创建bundle,并把功能模块中的图片拖到bundle,再把bundle移除项目。最后创建一个文件夹,把frameWork和bundle同级放置
    (1)新建bundle


    新建bundle

    (2)拖入图片


    拖入图片
    (3)将项目中涉及到拖入bundle的图片,全部修改加载方式。否则会加载不出图片
    image.png
    (4)移除bundle 资源
    copy bundle Resources中移除

    11.我们在真机,测试机环境下分别编译一次。(这里说明下,网上说的使用Aggregate自动生成的方法,我这边没有尝试成功。)
    (1)然后我们show in Finder


    查看文件

    (2)分别找到真机和模拟器下 Framework中的无后缀文件


    找到没有后缀的文件

    (3)利用"lipo -create 真机路径1 模拟器路径2 -output 存放路径3 "指令合并真机和模拟器的frameWork到一个文件中


    合并指令和生成文件

    (4)组装终极Framework
    (1)我们先建一个文件夹,并把刚才的图片bundle资源拖进去


    image.png
    (2)然后我们将生成的真机的Framework拷贝到这个文件夹FaceVideoFrameWork2
    image.png

    (3)将我们刚才合并生成的文件移除后缀名,复制到我们的Framework中,提示时,直接选择替换

    复制并替换

    12.查看我们合并之后的framework 支持的架构,lipo -info指令


    查看支持的架构

    13.到此为止,我们完整的frameWork就已经完成了,我们只要给别人FaceVideoFrameWork2这个文件夹,就可以使用我们的Framework了。


    image.png

    第一部分:新建测试项目,使用封装的Framework
    (1)将上面封装出来的FaceVideoFrameWork2文件夹直接拖入项目


    拖入项目

    (2)编译下,会提示缺少AF的相关文件,因为我们的frameWork中使用到了AF,所以我们测试项目中要进行 pod install下

    (3)解决了缺少AF的报错以后,再编译-运行 一次发现下面的崩溃。提示说:在bundle中没有找到CTIDFMVideoViewController这个nib文件 运行崩溃

    这是由于我们的framework中有xib资源文件,所以要将Framework也加入到copy Bundle Resources


    添加framework到资源文件中
    (4)加入到资源文件以后,再运行一次,发现已经可以成功使用 成功获取framework在bundle中的path

    相关文章

      网友评论

          本文标题:iOS封装FrameWork最全教程

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