应用程序名称包含撇号和空间时的符号崩溃日志(已部署的应用程序)

时间:2012-11-30 17:54:05

标签: ios special-characters symbolicatecrash symbolicate

我在App Store上有一个崩溃的应用程序。我已经在SO上尝试了几个解决方案来表示我的应用程序,在不同的时间使用组织器,终端和仪器。到目前为止没有任何工作 - 我的应用程序中的方法报告中的行永远不会被象征化,即使是Apple方法的行也是如此。环顾四周后,似乎这可能与应用程序名称有关,这与“Angie's List”一致 - 同时包含撇号和空格。现在更改应用名称为时已晚,因为它在商店中存在。我没有看到任何解决方案,并希望在正确的方向上推动。

1 个答案:

答案 0 :(得分:1)

通常应用名称无关紧要,除非符号化脚本中存在我怀疑的错误。您是否检查过是否有正确的dSYM?

如果您向下滚动最新的崩溃日志,请检查Binary Images下方的第1行,它将如下所示

0x1000 -   0x24cfff +YourApp armv7  <f6012c517d783486ab53e45d948b92a2> /var/mobile/Applications/A8EC3C1F-44AF-169A-BC0E-FBBC0F04CDF5/YourApp.app/YourApp

f6012c517d783486ab53e45d948b92a2是导致崩溃的可执行文件的UUID。

您可以使用终端找到正确的dSYM,如下所示:

mdfind "com_apple_xcode_dsym_uuids == F6012C51-7D78-3486-AB53-E45D948B92A2"

字符串F6012C51-7D78-3486-AB53-E45D948B92A2是上面的字符串,重新格式化为大写和8-4-4-4-12组。我猜这个命令不会返回任何内容。

如果您有dSYM(例如在.xcarchive中),您可以按如下方式在终端中检查其UUID:

dwarfdump --uuid YourApp.app.dSYM 

如果符号无法自动生效,您可以按照此处发布的说明手动尝试:iOS crash reports: atos not working as expected

如果应用程序中包含空格或撇号等特殊字符,则默认的Apple工具链将无法对其进行符号化。原因是工具链中使用的工具otool无法处理。无论你如何传递文件名。因此,要解决此问题,您必须执行以下操作:

  1. 重命名dSYM包并删除所有特殊字符,例如从My App's.app.dSYMMyApps.app.dSYM
  2. 打开包内的内容并向下导航至Contents/Resources/DWARF
  3. 像上面那样重命名文件
  4. 现在再试一次。避免这一切的最佳方法:从不在您的应用名称中使用特殊字符。如果您想调整屏幕上显示的名称,请使用CFBundleDisplayName或相应的plist条目。