美文网首页
iOS cocoapods merge-- 通过减少动态框架来缩

iOS cocoapods merge-- 通过减少动态框架来缩

作者: 吕家老四 | 来源:发表于2019-11-07 15:36 被阅读0次

    引子

    如果您的应用在Podfile中使用use_frameworks指令使用大量cocoapods,则其启动时间(尤其是在main维护过程中dylib加载时间)会变得非常高。 use_frameworks指令将您的pod链接为动态框架,然后在您的应用启动过程中将它们一一加载,从而大大降低了速度。

    如果您看过Apple在2016年WWDC上发表的“优化应用程序启动时间”一文(Optimizing App Startup Time),Apple建议您合并动态框架以缩短应用程序的加载时间。

    所以 cocoapods插件可以做到这一点!介绍cocoapods-pod-merge(gitHub地址

    文件比较


    普通pods配置文件列表 完整的merge配置文件列表

    通过比较多了 两个文件 Gemfile, MergeFile,其中Gemfile 文件是通过ruby tools with bundler操作完配置完成的  (bundler Tools)。

    cd ../PodsMergaeDemo 

    gem install cocoapods-pod-merge

    gem install bundler

    bundle init

    bundle install

    此时生成一个Gemfile 的文件,文件内容截图如下:

    Gemfile文件内容

    接着向Gemfile 文件写入 

    gem 'cocoapods', '1.8.1'     # cocoapods版本可以按自己本地版本填写

    gem 'cocoapods-pod-merge', :path => '../'

    之后这个Gemfile文件就编写完成了,like this

    cocoapods-pod-merge 这个插件是放在本demo 上级目录 注意这个 :path 指向。

    Gemfile文件完整内容

    接着编写MergeFile,这个文件格式什么的跟Podfile格式一样,只是每个group之间以end 结束作为分割。

    例如下图:注意尽量不要在里边填写不必要的字符,也不报错,pod install 时候也检查不出错误。

    MergeFile

    那么MergeFile 暂时也完整填写到这里了。

    接下来是 Podfile 文件填写了,例如下图

    Podfile

    其中:path 指向的是 MergeFile 的group,当然可以另外添加其他不想加入group 的framworks。记着要多填写 一句line:plugin 'cocoapods-pod-merge'

    此后大功告成:

    complete

    输入 bundle exec pod install  , pod install 这样就跟平时咱们 pod install 一样的过程了。

    再回来看自己项目,文件目录如图这样,之后就可以快乐的开发了。

    完整项目目录

    如果您有一组彼此依赖的Pod,并且想要合并它们,请将此标志添加到该组中。

    依赖修改

    错误总结:1 、Could not find gem 'cocoapods-pod-merge' in source at `../`.

    The source does not contain any versions of 'cocoapods-pod-merge'   这里一定要把gemMerge 路由写对

    gemMerge 路由写对

    2、若gem 没有 bundler,记得首先去gem install bundle 

    3、控制台出现错误error而看不懂,一定要仔细回查自己所敲过的每个命令行,仔细排查哪个没有执行到。

    4、执行不成功,记得把demo 中的lib ,cocoapods-pod-merge.gemspec 这两个文件拷贝到自己项目上级目录中。

    使用:之前一般都是 import  AFNetworking, 现在使用group 现象 importNetworking.AFNetworking。 调用方式不用修改。

    后记:小弟第一次在简书写文章,以前的博客都在cocoaChina,如若有问题,谢谢大家不吝赐教。

    demo 地址:https://github.com/Virtue86/PodsMergeDemo

    参考:https://swiftier.co/2019-10-17/announcing-cocoapods-pod-merge

    https://github.com/grab/cocoapods-pod-merge

    相关文章

      网友评论

          本文标题:iOS cocoapods merge-- 通过减少动态框架来缩

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