4

我正在进行我的一些概念验证测试,使用 xcodebuild 和 xcrun 来创建 .app 并将其部署到我的 ios 模拟器上(或者甚至将 .app 目录交付给我的最终客户端)。

无论如何,问题是我成功地处理了从头开始创建 .app 文件(嗯,目录)所需的所有步骤,但是在我执行接下来的两行后,尤其是第二行,我得到了应用程序崩溃,一旦我尝试上传然后在模拟器上运行.app:

xcrun simctl install booted $(PWD)/build/Debug-iphoneos/APP_NAME.app
xcrun simctl launch booted somebundle.id.from.me    <- CRASH

无论我尝试什么,xcrun 命令都会在 system.log 中产生这个错误:

Error Domain=FBSOpenApplicationErrorDomain Code=1 "(null)"

显然我的应用程序已安装到模拟器上(我已经多次删除它以创建全新安装),它甚至可以启动(启动画面从出现在模拟器桌面上的图标开始),但是当我期望时,我得到的第一件事通过启动屏幕的应用程序是前面提到的崩溃行错误(在 system.log 文件中)。

有人说我的模式定义面板中可能有一些虚幻的空变量。我已经检查过了,但事实并非如此。没有任何变数。

其他一些人说旧版本的应用程序可能在模拟器的任务调度程序中仍然存在。确实,有时我在那里发现我的任务是过去的旧任务,但是按两次“home”进入模拟器任务管理器,将其杀死,然后尝试再次使用 xcrun 重新启动我的 .app 文件什么也没做,crahs还在那里。我什至停止了从 Xcode 本身启动的同一个应用程序的旧执行(使用 STOP 按钮),但没有运气。

所以,我肯定迷路了。我无法通过命令行将我最近创建的 .app 启动到模拟器上。

9.3 (iPhone 4s) 模拟器和 9.3 (iPhone 6plus) 模拟器都失败了。我的 XCode 工具是我的 XCode 7.3.1 中包含的工具。我正在使用“El Capitán”。

我想不出别的了。

我希望能够通过“命令行工具”上传和运行我的 .app。我希望以某种方式有可能,或者至少看起来我真的很接近成功。

我可能忽略的任何其他提示?

问候和感谢。

4

2 回答 2

7

另一个成功自我回答问题的案例:)

短版:我正在构建一个“真正的 ios 设备”编译版本,然后尝试将其安装到模拟器上。更改 xcrun 和 xcodebuild(架构和路径)参数可以解决问题,现在从模拟器运行该应用程序就像一个魅力。


长版:有什么问题?调用 xcodebuild 时我(错误地)选择的架构和路径定义我的编译架构的参数之一是隐式声明“ARM”(-sdk iphoneos),但模拟器运行时引擎使用的架构是 i386(我们在苹果电脑)。正如预期的那样,一旦“real-device-compiled-.app”安装到模拟器上,模拟器本身就无法理解如何启动它,然后就会发生神秘的崩溃。

是什么给了我线索?我在其他地方发现的另外 2 个问题,在 Stack Overflow。在此处查找额外信息:

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

xcodebuild:模拟器还是设备?

是什么导致我检查其他 2 个线程?我在其他地方找到了一个 .log 文件,而不是默认和乏味的 /var/log/system.log

RANT:您可以在现代 MAC 上找到的许多 .log 文件存在问题!/兰特

不管怎样,在发现哪个 .log 文件对我有用的过程中,我发现了这些:

  • $HOME/Library/CoreSimulator/CoreSimulator.log (无论如何,对我的问题不是很有用)。
  • $HOME/Library/CoreSimulator/[UGLY_HASH_CORRESPONDING_TO_THE_SIMULATOR_YOU_ARE_USING]/system.log

最后一个是好的。在此 .log 文件的末尾,我在尝试启动“构建错误的 .app”文件时发现了其他信息。日志是这样说的:

Program specified by service does not contain one of the requested architectures

然后“架构”这个词给了我解决我的问题和寻找什么的提示。


就是这样。万一将来有人发现他/她自己处于同样的情况,我希望我上面写的所有这些信息都会有用。

问候。


PS: If you can't find what's the folder where your troublesome Simulator (and its associated .log file) live, (there can be literally dozens of installed Simulators), y̶o̶u̶ ̶c̶a̶n̶ ̶u̶s̶e̶ ̶a̶n̶ ̶A̶l̶c̶a̶t̶r̶a̶z̶ ̶p̶l̶u̶g̶i̶n̶ ̶c̶a̶l̶l̶e̶d̶ ̶X̶C̶o̶d̶e̶W̶a̶y̶.̶ ̶O̶n̶c̶e̶ ̶t̶h̶i̶s̶ ̶p̶l̶u̶g̶i̶n̶ ̶i̶s̶ ̶i̶n̶s̶t̶a̶l̶l̶e̶d̶ ̶a̶n̶d̶ ̶p̶r̶o̶p̶e̶r̶l̶y̶ ̶r̶u̶n̶n̶i̶n̶g̶,̶ ̶y̶o̶u̶ ̶c̶a̶n̶ ̶c̶h̶e̶c̶k̶ ̶t̶h̶e̶ ̶p̶a̶t̶h̶ ̶o̶f̶ ̶y̶o̶u̶r̶ ̶i̶O̶S̶8̶+̶ ̶S̶i̶m̶u̶l̶a̶t̶o̶r̶ ̶d̶o̶i̶n̶g̶ ̶t̶h̶i̶s̶ ̶f̶r̶o̶m̶ ̶X̶C̶o̶d̶e̶:̶

X̶c̶o̶d̶e̶ ̶-̶>̶ ̶W̶i̶n̶d̶o̶w̶s̶ ̶-̶>̶ ̶X̶C̶o̶d̶e̶W̶a̶y̶ ̶-̶>̶ ̶G̶o̶ ̶t̶o̶ ̶i̶O̶S̶8̶+̶ ̶S̶i̶m̶u̶l̶a̶t̶o̶r̶ ̶F̶o̶l̶d̶e̶r̶ ̶F̶i̶n̶d̶e̶r̶ ̶w̶i̶l̶l̶ ̶o̶p̶e̶n̶,̶ ̶a̶n̶d̶ ̶t̶h̶e̶r̶e̶ ̶w̶i̶l̶l̶ ̶b̶e̶ ̶y̶o̶u̶r̶ ̶.̶l̶o̶g̶ ̶f̶i̶l̶e̶ ̶:̶)̶ ̶

您可以阅读下面的评论并查看简短而正确的方法:)

于 2016-06-22T08:58:04.753 回答
2

xcrun simctl launch booted somebundle.id.from.me没有崩溃。它正确地向您报告一个错误,表明启动失败。

Error Domain=FBSOpenApplicationErrorDomain Code=1 表示启动您的应用程序时出现问题。是的,您可能已经知道,但更具体地说,代码 1 表示一般故障,而不是我可以用来确定确切问题的东西。1 表示“此错误出问题了,但我们没有更好的错误代码可用于它”

有关问题所在的更多相关信息,我建议您在启动期间查看模拟器system.log。您的问题表明您正在查看 system.log,但听起来您正在查看主机 system.log,这对您来说并不是很有用。例如:

Terminal 1 $ tail -F ~/Library/Logs/CoreSimulator/[UDID]/system.log
Terminal 2 $ xcrun simctl launch booted somebundle.id.from.me

然后回到终端 1 并在错误后中断。查看这些日志,找出任何可能相关的内容。

我怀疑您手动处理的应用程序包格式不正确,并且设备的 system.log 中可能存在适当的详细信息。如果是这种情况,将雷达归档 ( http://bugreport.apple.com ) 与您的示例将非常有帮助,这样可以适当更新错误消息以传播回用户而不是“(null )”。

于 2016-06-22T09:02:58.483 回答