iOS将多个框架合并为一个

时间:2016-08-09 06:30:44

标签: ios

在观看WWDC 2016视频优化应用启动时间后,Apple建议开发人员可以将多个框架(动态库而非静态)合并为一个,以改善应用冷启动时间。 https://developer.apple.com/videos/play/wwdc2016/406/

所以我在这里下载了一个虚拟项目:

https://github.com/stepanhruda/dyld-image-loading-performance

尝试使用以下命令将两个框架合并为一个:

libtool -static -o new.framework SwiftyJSON.framework Shimmer.framework

控制台返回

error:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't map file: SwiftyJSON.framework (Invalid argument)`

error:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't map file: Shimmer.framework (Invalid argument)

所以我的问题是如何将几个框架合并为一个?我们可以使用libtool来做它以及如何做到这一点吗?非常感谢。

3 个答案:

答案 0 :(得分:2)

我可以使用

将两个框架(仅限静态库)合并为一个
UIScrollView

来自这个github的脚本可能会有所帮助 https://gist.github.com/evands/8ba4f227b00ae14a9303

P.S。合并静态库不会减少冷启动时间

答案 1 :(得分:2)

对于动态框架 lipo -create path/yourFramework1 path/yourFramework2 -output path/yourFramework

对于.a库

  • 其中sim / lib.a包含i386
  • 其中dev / lib.a包含armv7

lipo -create '/sim/lib.a' '/dev/lib.a' -output 'lib.a'

输出包含i386和armv7

答案 2 :(得分:0)

如果您要合并由cocoapods创建的框架,则可以使用 pod-merge 插件:https://github.com/grab/cocoapods-pod-merge