为啥 unsigned xcarchive 比有符号大?
Posted
技术标签:
【中文标题】为啥 unsigned xcarchive 比有符号大?【英文标题】:Why unsigned xcarchive is larger than signed?为什么 unsigned xcarchive 比有符号大? 【发布时间】:2019-05-09 11:31:15 【问题描述】:我使用以下命令生成签名 xcarchive:
xcodebuild -workspace app.xcworkspace -scheme app -configuration 'Release' -sdk iphoneos archive -archivePath build/signed.xcarchive
构建 unsigned xcarchive 我只是在末尾附加:
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO
我很好奇为什么未签名的 xcarchive 有 332 MB 和签名的 222 MB?
我发现,例如 libswiftCore.dylib
在已签名的 xcarchive 中只有 23.3 MB,而在未签名的情况下只有 95.4 MB。奇怪的。
CocoaPods
其他依赖项:Alamofire
【问题讨论】:
我想知道它是否剥离了不同的架构。我无法重现您的问题,但我的猜测是 libswiftCore.dylib 的签名版本中缺少架构。你介意发布otool -L [PATH TO libswiftCore.dylib]
的输出吗
@ThomasBartelmess 的签名和未签名 libswiftCore.dylib 的输出完全相同。
【参考方案1】:
通过使用opendiff
比较每个构建的输出进行进一步调查后,我发现对于签名构建xcodebuild
在每个dylib
上运行bitcode_strip
,这显着减小了大小。
这就是这两个版本之间存在大小差异的原因。
在未签名的构建 xcodebuild
运行的情况下更具体:
builtin-swiftStdLibTool --copy --verbose ...
并且没有参数--sign
它不会剥离位码。来自构建输出的消息:
忽略--strip-bitcode,因为--sign未通过
因此,这似乎是xcodebuild
的预期行为。
【讨论】:
以上是关于为啥 unsigned xcarchive 比有符号大?的主要内容,如果未能解决你的问题,请参考以下文章