自定义Framework

第一次要制作framework,把制作过程分享一下,遇到了很多坑
简单的版本可以通过XCode创建一个framework project,如下图

自定义Framework
文章图片
图一
这种可能很自动生成framework,但是如果过程中需要继承到pod,引用第三方库,就会显得束手无策。
在强大互联网的搜索下,找到了一个方法,通过创建target方式,但是这个有个弊端,下面会讲到,先看看操作过程
1.创建target,选择framework

自定义Framework
文章图片
图二 2.点击下一步,按照图中,选择对应选项

自定义Framework
文章图片
图三 3.生成target工程中会有如下目录,可以在该目录下去编辑存放代码

自定义Framework
文章图片
图四 4.紧接着按照pod方式接入,在podfile文件中引入需要的第三方库

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

自定义Framework
文章图片
图六
7.在product中就可以看到生成的framework,通过show in finder就可以找到生成的工具
自定义Framework
文章图片
图七
8.如果要编译release库,请在EditScheme中编辑

自定义Framework
文章图片
图八
在这里选择想要的模式
自定义Framework
文章图片
图九
9.在这里选择静态库,我这边选择是static Library
自定义Framework
文章图片
图十 正常情况下是可以编译生成framework,然后接下来怎么提供给第三方用。
1.直接把xxx.framework拖入Frameworks文件夹,或者在Build Phases -> Link Binary With Libraries -> + -> Add Other ,选中对应的framework

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

自定义Framework
文章图片
图十三
3.这时候在编译,正常是可以通过了。
4.然后引入后可能发现找不到framework的类,即使把文件暴露到public中
接下来Archive发布版本

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

自定义Framework
文章图片
图十五
但是我们就是需要设置为yes,这时候怎么处理呢?
这时候需要把我们的库设置为支持bitcode的
1.首先要把Mach-O Type设置为Static Library

自定义Framework
文章图片
图十六 【自定义Framework】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
文章图片
图十七

    推荐阅读