美文网首页
自定义Framework

自定义Framework

作者: 假装门口当前台 | 来源:发表于2020-08-10 17:14 被阅读0次

    第一次要制作framework,把制作过程分享一下,遇到了很多坑

    简单的版本可以通过XCode创建一个framework project,如下图


    图一

    这种可能很自动生成framework,但是如果过程中需要继承到pod,引用第三方库,就会显得束手无策。

    在强大互联网的搜索下,找到了一个方法,通过创建target方式,但是这个有个弊端,下面会讲到,先看看操作过程

    1.创建target,选择framework


    图二

    2.点击下一步,按照图中,选择对应选项


    图三

    3.生成target工程中会有如下目录,可以在该目录下去编辑存放代码


    图四

    4.紧接着按照pod方式接入,在podfile文件中引入需要的第三方库


    图五

    5.然后通过pod install 或者pod update,去更新第三方
    6.在编译的时候选择xxxx这个工程,选择编译,就可以生产xxxx.framework


    图六
    7.在product中就可以看到生成的framework,通过show in finder就可以找到生成的工具
    图七

    8.如果要编译release库,请在EditScheme中编辑


    图八
    在这里选择想要的模式
    图九
    9.在这里选择静态库,我这边选择是static Library
    图十

    正常情况下是可以编译生成framework,然后接下来怎么提供给第三方用。

    1.直接把xxx.framework拖入Frameworks文件夹,或者在Build Phases -> Link Binary With Libraries -> + -> Add Other ,选中对应的framework


    图十一 图十二

    2.然后直接build,发现各种报错,主要是引用第三方找不到,原因就是framework没有包含第三方的工程,这里我们需要在podfile中去把我们之前引用的pod文件加入需要的工程中,这样我们的framework就可以通过工程pod引入第三方关联到第三方(这个我觉得比较不科学,不那么实用,但是目前也算是一种解决方式)


    图十三

    3.这时候在编译,正常是可以通过了。

    4.然后引入后可能发现找不到framework的类,即使把文件暴露到public中

    接下来Archive发布版本


    图十四

    如果代码中要全Enable bitcode,这时候会发现,包not full bitcode的错误,这是因为我们的framework没有支持,在网上搜索发现是把这个设置为NO


    图十五

    但是我们就是需要设置为yes,这时候怎么处理呢?
    这时候需要把我们的库设置为支持bitcode的

    1.首先要把Mach-O Type设置为Static Library


    图十六

    2.其次,公开的framework,class都是必须public,其中很多用到的参数对象,枚举,结构体,都要是public,不然第三方引用是用不到的,但是可以通过封装去规避,记得在Build Phases中把暴露的类引导放到Headers public 中

    3需要在 Build Settings -> Deployment 中打开 DEPLOYMENT_POSTPROCESSING = YES,
    设置 STRIP_STYLE 为 Debugging Symbols,
    Build Settings -> Compiler Flags添加 -fembed-bitcode 参数。

    图十七

    相关文章

      网友评论

          本文标题:自定义Framework

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