5

我使用以下命令在设备(不是模拟器)上启动我的 iOS 应用程序(应用程序已安装)。

instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          LPSimpleExample-cal \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

10 次中有 6 次有效。如果出现错误,我会收到以下消息:

2013-10-07 16:45:51.553 instruments[9891:1207] unable to locate CFBundleIdentifier for path: LPSimpleExample-cal
2013-10-07 16:45:51.555 instruments[9891:1207] Recording cancelled : At least one target    failed to launch; aborting run
Instruments Trace Error : Error Domain=com.apple.instruments Code=1 "Error Starting   Recording" UserInfo=0x7faccbef8fa0 {NSLocalizedDescription=Error Starting Recording,   NSLocalizedRecoverySuggestion=At least one target failed to launch; aborting run}
Instruments Trace Error : Failed to start trace.


对我来说,仪器似乎在这里有一个错误。我尝试在不同的场景中启动该应用程序超过 100 次,但我无法分析错误模式。设备崩溃日志说:

Process:         DTMobileIS [34956]
Path:            /Developer/Library/Daemons/DTMobileIS
Identifier:      DTMobileIS
Version:         ??? (???)
Code Type:       ARM (Native)
Parent Process:  lockbot [34938]
Date/Time:       2013-10-07 15:29:05.474 -0700
OS Version:      iOS 6.1.3 (10B329)
Report Version:  104    
Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000

异常类型EXC_BAD_ACCESS (SIGSEGV)表示正在访问的对象已被释放。ASIGSEGV是分段错误,这意味着您正在尝试访问无效的内存地址。参考:iOS 崩溃日志中的异常类型

除了使用 bundleIdentifier,我还尝试指定完整的应用程序路径或完整的 bundleIdentifier:

# with full app path
instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          /Users/mj/Desktop/apps/LPSimpleExample-cal.app \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

# with full bundleIdentifier
instruments \
          -w c717fa22472d7b691ae5763af90e1e44244ad85a \
          -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate \
          -D "/Users/mj/Desktop/apps/trace" \
          /Users/mj/Desktop/apps/LPSimpleExample-cal.app \
          -e UIARESULTSPATH /Users/mj/Desktop/apps \
          -e UIASCRIPT /Users/mj/Desktop/apps/_run_loop.js

配置详情

  • 仪器版本:5.0 (51166)
  • XCode 版本:5.0 (5A1413)
  • 设备类型:iPhone 5 - 6.1.3、iPhone 5C - 7.02、iPhone 5S - 7.0.2

在哪些情况下仪器无法在设备上启动应用程序或您何时收到错误消息,是否有更多信息unable to locate CFBundleIdentifier for path: LPSimpleExample-cal

4

2 回答 2

0

当我尝试在连接到服务器主机的 iDevice 上的 Xcode Server 控制下运行带有仪器的 iOS 应用程序时遇到了这个问题。然而,该应用程序之前从未安装在目标 iDevice 上。我只能推测错误信息

instruments ... unable to locate CFBundleIdentifier for path: ...

尽管错误消息报告了 Xcode Server 主机的文件系统中的路径,但实际上是指 iDevice 的文件系统(该应用程序不存在)。在我使用我的开发机器在目标设备上手动安装了一次应用程序后,服务器主机上的错误消息消失了,仪器再次工作。

我的收获是 Xcode Server(和/或工具?)的错误消息非常糟糕。当您收到此类错误消息时,谁需要敌人?

于 2014-06-27T11:53:46.373 回答
0

你在 Jenkins 中使用 Calabash 吗?

在哪些情况下仪器无法在设备上启动应用程序或 > 您何时收到错误消息无法找到路径的 CFBundleIdentifier:LPSimpleExample- cal ,是否有更多信息?

我在 Jenkins 上使用 Calabash 时遇到了问题,帮助我解决的问题是在应用程序文件夹(xcodeproj 所在的位置)中启动仪器(calabash)。不要忘记在此文件夹中复制构建的应用程序。

如果我不回答这个问题,请原谅。

于 2014-03-10T14:58:07.143 回答