1

我在 App Store 上有一个应用程序崩溃了。我在 SO 上尝试了几种解决方案来象征我的应用程序,在不同的时间使用 Organizer、Terminal 和 Instruments。到目前为止没有任何效果 - 我的应用程序中方法的报告中的行从未符号化,即使 Apple 方法的行是符号化的。环顾一圈后,似乎这可能与应用程序名称有关,该名称与“Angie's List”类似——带有撇号和空格。现在更改应用程序名称为时已晚,因为它已在商店上线。我还没有在任何地方看到解决方案,并且希望朝着正确的方向推进。

4

1 回答 1

1

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

如果您向下滚动最新的崩溃日志,请检查下面的第一行Binary Images,它看起来像这样

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 崩溃报告:atos not working as expected

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

  1. 重命名 dSYM 包并删除所有特殊字符,例如 from My App's.app.dSYMtoMyApps.app.dSYM
  2. 打开包内的内容并向下导航到Contents/Resources/DWARF
  3. 像上面那样重命名文件

现在再试一次。避免这一切的最佳方法:切勿在您的应用名称中使用特殊字符。如果要调整屏幕上显示的名称,请使用CFBundleDisplayName或相应的 plist 条目。

于 2012-12-01T14:38:50.460 回答