在 Swift 3 中存档项目并获得“由于信号分段错误 11 导致命令失败”

Posted

技术标签:

【中文标题】在 Swift 3 中存档项目并获得“由于信号分段错误 11 导致命令失败”【英文标题】:Archive project in Swift 3 and get "command failed due to signal segmentation fault 11" 【发布时间】:2016-09-28 23:41:55 【问题描述】:

我更新了我的 Swift 3 代码,在设备上运行并且一切正常,但是当我存档项目时,在清理和删除交付的数据后,我有错误“由于信号分段错误 11 导致命令失败”

我的日志

0 迅速 0x000000010a5ffb6d PrintStackTraceSignalHandler(void*) + 45

1 快速 0x000000010a5ff5b6 SignalHandler(int) + 470

2 libsystem_platform.dylib 0x00007fff9560152a _sigtramp + 26

3 libsystem_platform.dylib 0x00007fff5825ab50 _sigtramp + 3267728960

4 swift 0x0000000107d29432 swift::CastOptimizer::optimizeUnconditionalCheckedCastAddrInst(swift::UnconditionalCheckedCastAddrInst*) + 1554

5 swift 0x0000000107db144d processFunction(swift::SILFunction&, bool, unsigned int) + 1901

6 swift 0x0000000107db7f9f (匿名命名空间)::ConstantPropagation::run() + 47

7 swift 0x0000000107d4862d swift::SILPassManager::runOneIteration() + 6077

8 swift 0x0000000107d4d7d6 swift::runSILOptimizationPasses(swift::SILModule&) + 3462

9 swift 0x0000000107a153cb performCompile(swift::CompilerInstance&, swift::CompilerInvocation&, llvm::ArrayRef, int&, swift::FrontendObserver*) + 20107

10 swift 0x0000000107a0e265 swift::performFrontend(llvm::ArrayRef, char const*, void*, swift::FrontendObserver*) + 17029

11 快速 0x00000001079cb82d 主 + 8685

12 libdyld.dylib 0x00007fff8936c5ad 开始 + 1

13 libdyld.dylib 0x000000000000006d 开始 + 1992899265 堆栈转储:

还有这个

    在运行过程中通过#1059521 SILFunctionTransform "Constant Propagation" on SILFunction "@_TTSg5VSC29UIApplicationLaunchOptionsKeyS_s8Hashable5UIKit_P__CSo8NSObjectS2_S0_10ObjectiveC_Ps9AnyObject____TFs17_dictionaryUpCastu2_Rxs8Hashable0_S_rFGVs1

有人可以帮忙或告诉我应该在哪里搜索错误吗?

【问题讨论】:

我也有同样的问题 - 如果我找到解决方案会通知您。 这解决了我的问题:***.com/a/26108868/3874596 @denjiz 谢谢,它也为我解决了) 谢谢@denjiz,他的回答帮助了我)answer for my issue 嗯。降低优化级别如何帮助甚至被标记为正确的解决方案? 【参考方案1】:

在我的例子中,我将 launchOptions 作为函数参数传递给内部的另一个类

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool

迁移到 Swift 3 后,迁移器添加了强制转换以匹配等待参数的类型,该类型为 [NSObject : AnyObject]?(Swift 3 之前)

我所要做的就是更新我的自定义函数以将[UIApplicationLaunchOptionsKey: Any] 作为参数并删除该错误转换。就这么简单

我不必妥协任何优化级别(这甚至不应该是开发人员的最后手段,这绝对不是解决编译器错误/分段错误的方法)。删除演员表后,swift 的整个模块优化都可以正常工作。

【讨论】:

快点!为我节省了一些时间 它有帮助!就我而言,这是对 Amazon 与他们的 Mobile Hub 解决方案一起提供的代码的重用。我猜他们不会经常更新,所以要小心! 我遇到了同样的问题,你的解决方案救了我!就我而言,这是导致问题的 AWS 移动客户端演示代码,但仅在我尝试存档时。 谢谢大家,很高兴听到它有效并为您节省了时间!

以上是关于在 Swift 3 中存档项目并获得“由于信号分段错误 11 导致命令失败”的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 构建成功但存档失败

无法在 Xcode 6.1 中存档正在工作的 6.0.1 Swift 项目/分段错误:11

Xcode 11 存档给出 PhaseScriptExecution 失败

Swift iOS 应用存档错误

问题 XCode 8,Swift 2.3 存档版本在 IOS 9.2.1 -> IOS 9.0 上启动时崩溃

为啥应用存档在 iOS、swift、xcode 9.2 中使用自定义框架失败