【问题标题】: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。奇怪的。

  • Xcode 10.2.1
  • 斯威夫特 4
  • 部署目标:10.0
  • 使用CocoaPods
  • 其他依赖项:Alamofire

【问题讨论】:

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

标签: ios swift xcode xcodebuild


【解决方案1】:

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

这就是这两个版本之间存在大小差异的原因。

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

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

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

忽略--strip-bitcode,因为--sign未通过

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 1970-01-01
    • 2021-08-07
    • 2010-09-05
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多