iOS将多个框架合并为一个 [英] iOS merge several framework into one

查看:768
本文介绍了iOS将多个框架合并为一个的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在观看WWDC 2016视频优化应用程序启动时间之后,苹果建议开发人员可以将多个框架(动态库不是静态的)合并为一个,以缩短应用程序的启动时间. https://developer.apple.com/videos/play/wwdc2016/406/

After watching the WWDC 2016 video optimizing App Startup time, Apple suggested developer can merge several frameworks (dynamic library not static) into one to improve the app cold start time. https://developer.apple.com/videos/play/wwdc2016/406/

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

So I downloaded a dummy project here:

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

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

And try to merge two frameworks into one using the following command:

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来做到这一点,以及如何做到吗?非常感谢.

So my question is how to merge several framework into one? Can we use libtool to do it and how to do it? Many thanks.

推荐答案

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

For dynamic frameworks 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'

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

输出包含i386和armv7

output contains i386 and armv7

这篇关于iOS将多个框架合并为一个的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆