我在 App Store 上有一个应用程序崩溃了。我在 SO 上尝试了几种解决方案来象征我的应用程序,在不同的时间使用 Organizer、Terminal 和 Instruments。到目前为止没有任何效果 - 我的应用程序中方法的报告中的行从未符号化,即使 Apple 方法的行是符号化的。环顾一圈后,似乎这可能与应用程序名称有关,该名称与“Angie's List”类似——带有撇号和空格。现在更改应用程序名称为时已晚,因为它已在商店上线。我还没有在任何地方看到解决方案,并且希望朝着正确的方向推进。
问问题
1489 次
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
链中使用的工具无法处理。无论您如何传递文件名。因此,要解决此问题,您必须执行以下操作:
- 重命名 dSYM 包并删除所有特殊字符,例如 from
My App's.app.dSYM
toMyApps.app.dSYM
- 打开包内的内容并向下导航到
Contents/Resources/DWARF
- 像上面那样重命名文件
现在再试一次。避免这一切的最佳方法:切勿在您的应用名称中使用特殊字符。如果要调整屏幕上显示的名称,请使用CFBundleDisplayName
或相应的 plist 条目。
于 2012-12-01T14:38:50.460 回答