为什么未签名的xcarchive比已签名的大?

4

我使用以下命令生成已签名的 xcarchive:

xcodebuild -workspace app.xcworkspace -scheme app -configuration 'Release' -sdk iphoneos archive -archivePath build/signed.xcarchive

为了生成一个 未签名 的 xcarchive,我只需要在末尾添加:
CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO

我很好奇为什么未签名的xcarchive有332MB,而已签名的只有222MB?
我发现例如在已签名的xcarchive中,libswiftCore.dylib只有23.3MB,在未签名的中有95.4MB。很奇怪。
  • Xcode 10.2.1
  • Swift 4
  • 部署目标:10.0
  • 使用CocoaPods
  • 其他依赖项:Alamofire

Difference


我想知道它是否剥离了不同的架构。我无法重现你的问题,但我的猜测是在libswiftCore.dylib签名版本中缺少架构。你介意发布otool -L [PATH TO libswiftCore.dylib]的输出吗? - Thomas Bartelmess
@ThomasBartelmess 签名和未签名的 libswiftCore.dylib 输出完全相同。 - Wojciech Kulik
1个回答

0

通过使用 opendiff 比较每个构建的输出后,我进一步调查发现,在签名构建中,xcodebuild 在每个 dylib 上运行 bitcode_strip,从而显着减小了大小。

这就是为什么这两个构建之间存在大小差异的原因。

更具体地说,在未签名构建的情况下,xcodebuild 运行:

builtin-swiftStdLibTool --copy --verbose ...

并且没有参数 --sign,它不会剥离位码。来自构建输出的消息:

由于未传递 --sign,因此忽略 --strip-bitcode

因此,这似乎是 xcodebuild 的预期行为。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接