我正在进行一些概念测试,使用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文件什么也没做,这个问题还在那里。 我甚至停止从Xcode本身启动的相同应用程序的旧执行(使用STOP按钮),但没有运气。
所以,我肯定迷路了。我无法通过命令行将我最近创建的.app启动到模拟器上。
使用9.3(iPhone 4s)模拟器和9.3(iPhone 6plus)模拟器失败了。 我的XCode工具是我的XCode 7.3.1中包含的工具。 我正在使用“ElCapitán”。
我想不出别的什么。
我希望能够通过“命令行工具”上传和运行我的.app。 我希望它可能以某种方式,或者至少看起来我真的很接近成功。
我可能忽略了任何其他暗示?
问候和感谢。
答案 0 :(得分:5)
成功回答问题的另一个案例:)
简短版本:我正在构建一个“真正的ios设备”编译版本,然后尝试将其安装到模拟器上。更改xcrun和xcodebuild(体系结构和路径)参数可以解决问题,现在,当从模拟器运行时,应用程序就像魅力一样。
长版: 出了什么问题?我在调用xcodebuild时(错误地)选择的体系结构和路径 定义我的编译体系结构的参数之一是隐式声明“ARM”(-sdk iphoneos),但Simulator运行时引擎使用的体系结构是i386(我们在MAC中)。 正如预期的那样,一旦将“real-device-compiled-.app”安装到模拟器上,模拟器本身就不会理解如何启动它,然后就会发生神秘的崩溃。
是什么给了我线索? 在Stack Overflow中我在其他地方找到的其他2个问题。在这里寻找额外的信息:
Apps manually installed in simulator crashes upon load
xcodebuild: simulator or device?
是什么让我检查其他2个主题? 我发现一个.log文件,而不是默认的和/ var /log /system.log
RANT:您可以在现代MAC上找到MANY .log文件的问题! / RANT
无论如何,在发现哪个.log文件对我有用的过程中,我发现了这些:
最后一个是好的。在这个.log文件的末尾,我在尝试启动“糟糕构建的.app”文件时发现了其他信息。日志说的是这样的:
Program specified by service does not contain one of the requested architectures
然后“架构”这个词给了我一些解决我的问题以及寻找什么的提示。
就是这样。 如果有人在将来发现他/她处于相同的情况,我希望我上面写的所有这些信息都会有用。
问候。
PS:如果你找不到你麻烦的模拟器(及其相关的.log文件)所在的文件夹,那么(可以安装数十个模拟器), 可以使用一个恶魔插件称为̶X̶C̶o̶d̶e̶W̶a̶y̶.̶一旦该插件被安装并运行正常,̶可以检查路径的你的iOS8上+̶模拟器这样做在Xcode:̶
XCODE̶-̶&GT;̶WINDOWS̶-̶&GT;̶̶X̶C̶o̶d̶e̶W̶a̶y̶̶-̶&GT;̶去iOS8上+̶模拟器夹FINDER将打开,̶而且会有您的.log文件̶:̶)̶̶
您可以阅读本文下面的评论,并查看简短而正确的方法:)
答案 1 :(得分:2)
xcrun simctl launch booted somebundle.id.from.me
并未崩溃。它正确地向您报告错误,表明启动失败。
错误Domain = FBSOpenApplicationErrorDomain Code = 1表示启动应用程序时出错。是的,您可能已经知道,但更具体地说,代码1表示一般故障,而不是我可以用来确定确切问题的东西。 1意味着&#34;这个错误出了问题,但我们没有更好的错误代码可用于它&#34;
有关出现问题的更多相关信息,建议您在启动期间观看模拟器 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)与您的示例非常有帮助,以便错误消息可以被适当地更新以传播回用户而不是那个&#34 ;(NULL)&#34;