【发布时间】:2016-06-13 17:40:46
【问题描述】:
我正在尝试在运行 iOS 7.1 的真实手机上运行我的 Swift 应用程序的企业签名版本。
如果我通过 Xcode 界面创建企业签名应用程序,该应用程序可以完美运行。 如果我在命令行上通过 xcodebuild 和 codesign 创建企业签名应用程序,则应用程序在打开时崩溃并显示以下日志:
Dyld Error Message:
Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /var/mobile/Applications/96578E7F-7FE6-4603-82F2-8941561225D8/Foo.app/Foo
Reason: no suitable image found. Did find:
/private/var/mobile/Applications/96578E7F-7FE6-4603-82F2-8941561225D8/Foo.app/Frameworks/libswiftCore.dylib: code signature invalid for '/private/var/mobile/Applications/96578E7F-7FE6-4603-82F2-8941561225D8/Foo.app/Frameworks/libswiftCore.dylib'
Dyld Version: 324
当我通过命令行创建 IPA 时,IPA 总是包含相同的 libswiftCore.dylib
$ md5 cli/Payload/Foo.app/Frameworks/libswiftCore.dylib
MD5 (cli/SwiftSupport/libswiftCore.dylib) = 0fe0370b5585a88a89d230b7501aee31 <- same every time; matches what is provided by Xcode
$ md5 /Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib
MD5 (/Applications/Xcode6-Beta5.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos/libswiftCore.dylib) = 0fe0370b5585a88a89d230b7501aee31 <- Same!
当 Xcode UI 生成 IPA 时,很明显它正在以某种方式对 libswiftCore.dylib 进行签名或修改
$ md5 ui/Payload/Foo.app/Frameworks/libswiftCore.dylib
MD5 (ui/Payload/Foo.app/Frameworks/libswiftCore.dylib) = df73f604b1370b19721dfa7de298340f <- different every time
我尝试在 codesign 上使用 --deep 选项,但没有成功。
在通过命令行构建/代码设计时,如何让 libswiftCore.dylib 正确签名?
【问题讨论】: