在模拟器中手动安装的应用程序在加载时崩溃

Posted

技术标签:

【中文标题】在模拟器中手动安装的应用程序在加载时崩溃【英文标题】:Apps manually installed in simulator crashes upon load 【发布时间】:2015-12-30 14:05:40 【问题描述】:

我正在使用 xcrun simctl install booted MyPath/MyApp.appios 模拟器(Xcode 7、iOS 9)上安装 MyApp

这按预期工作,应用程序已安装在模拟器上。

但是,手动或使用 xcrun simctl launch booted com.company.MyApp 启动应用程序会失败。返回错误:

处理命令时遇到错误 (domain=FBSOpenApplicationErrorDomain, code=1): 操作失败 完成。 (FBSOpenApplicationErrorDomain 错误 1。)

应用从 Xcode 导出(请注意,从 Xcode 运行应用或从源代码重新构建应用不是可靠的解决方案)。

这不是特定于应用程序的,因为以这种方式安装的任何应用程序都会崩溃并出现相同的错误。

系统日志报告相同的错误,但包含一些附加信息。

com.apple.CoreSimulator.SimDevice.CA35ED48-DDAA-4CF0-8C69-C206CC55A6EB.launchd_sim[4200] (UIKitApplication:com.company.MyApp[0xe9ec][4281]):程序指定 按服务不包含请求的架构之一:R

SpringBoard[4217]:无法获取 pid 'UIKitApplication:com.company.MyApp[0xe9ec]': 没有这样的进程(错误 3)

SpringBoard[4217]:引导失败

跳板[4217]:应用程序 'UIKitApplication:com.company.MyApp[0xe9ec]' 自愿退出。

SpringBoard[4217]:CGContextSaveGState:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

SpringBoard[4217]:CGContextTranslateCTM:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

SpringBoard[4217]:CGContextRestoreGState:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

SpringBoard[4217]:CGContextSaveGState:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

SpringBoard[4217]:CGContextTranslateCTM:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

SpringBoard[4217]:CGContextRestoreGState:无效上下文 0x0。如果你 想看回溯,请设置CG_CONTEXT_SHOW_BACKTRACE 环境变量。

com.apple.CoreSimulator.SimDevice.CA35ED48-DDAA-4CF0-8C69-C206CC55A6EB.launchd_sim[4200] (UIKitApplication:com.company.MyApp[0xc82f][4282]): 程序指定 按服务不包含请求的架构之一:R

SpringBoard[4217]:无法获取 pid 'UIKitApplication:com.company.MyApp[0xc82f]': 没有这样的进程(错误 3)

SpringBoard[4217]:引导失败

跳板[4217]:应用程序 'UIKitApplication:com.company.MyApp[0xc82f]' 自愿退出。

architectures 错误改变了变量。 R、f 等

是什么导致了这个问题?我该如何解决?

【问题讨论】:

这似乎与您看到的问题相同:discuss.appium.io/t/… 您的应用似乎缺少所需的 x86 架构,如果不重新编译项目,您无法修复。 我也面临同样的问题。您找到任何解决方案了吗? 【参考方案1】:

我有同样的问题,但使用 Xamarin。在 Visual Studio 中,我通过转到 iOS 项目属性并在“iOS Build”下将“支持的架构”从“i386”更改为“i386 + x86_64”来解决它。

希望你能适应 XCode。

【讨论】:

啊,为什么这是 Xamarin 中的默认设置,但它不起作用?!谢谢!【参考方案2】:

我在 Xcode 6 中使用目录“Release-iphoneos”而不是“Release-iphonesimulator”中的 .app 文件时遇到了这个问题。此文件有多个版本,您需要更改安装命令中的路径以指向正确的版本。

如果此 .app 文件是由某人/其他人发送给您的,则它可能是来自错误目录的副本(不是为模拟器构建的)

【讨论】:

【参考方案3】:

如果您使用了错误的 sdk,就会发生这种情况。如果项目是使用物理设备 sdk 构建的,当您尝试在模拟器上打开它时,它会在启动时崩溃。

如果您使用 xcrun xcodebuild 从命令行构建它,请检查 sdk 是“iphonesimulator”而不是“iphoneos”

例如 xcrun xcodebuild -scheme <yourScheme> -configuration Debug -project <yourProject>.xcodeproj -sdk iphonesimulator build

【讨论】:

【参考方案4】:

当你说你从 Xcode 导出时,你是指从 iOS App Archive 导出吗?如果是这样,你错过了一个重要的事实,即这些包是为 iOS 而不是模拟器构建的,正如 Nanoc 指出的那样,这是完全不同的架构。

您正试图为您的问题找到一个不可能的解决方案。

【讨论】:

这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review Bruce,OP 表示“从源代码重新构建应用程序不是一个可靠的解决方案”,因此他的问题没有解决方案。

以上是关于在模拟器中手动安装的应用程序在加载时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

dyld:库未加载Xcode11

由于找不到 FileProvider 类,在模拟器上重新安装后应用程序崩溃

X3850 X5安装ESXI6.0U3需要手动加载LPe11000驱动

从Xcode 10部署到运行iOS 12的iPhone时,应用程序立即崩溃

加载谷歌地图时应用程序崩溃没有任何错误

模拟器或物理设备上的“未安装应用程序”android? [复制]