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

我在App Store上有一个崩溃的应用程序。 我已经尝试了几个解决scheme来象征我的应用程序,在不同的时间使用组织者,terminal和仪器。 到目前为止没有任何工作 – 即使在Apple方法的行中,来自应用程序中方法的报告中的行也不会被符号化。 看了一会儿后,似乎这可能与应用程序名称有关,这个名字是“Angie's List”的名字,同时带有一个撇号和一个空格。 现在更改应用程序名称为时已晚,因为它是在商店中生效的。 我没有看到任何地方的解决scheme,并会赞赏在正确的方向推。

通常应用程序名称并不重要,除非我怀疑符号化脚本中存在错误。 你有没有检查你是否有正确的dSYM?

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

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

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

您可以使用terminalfind正确的dSYM,如下所示:

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

stringF6012C51-7D78-3486-AB53-E45D948B92A2是上面的string重新格式化为大写字母和8-4-4-4-12组。 我猜这个命令不会返回任何东西。

如果你有一个dSYM(例如.xcarchive),你可以在terminal中检查它的UUID,如下所示:

 dwarfdump --uuid YourApp.app.dSYM 

如果符号不能自动工作,您可以尝试按照这里发布的指示手动执行: iOS崩溃报告:atos不按预期工作

如果应用程序中有特殊字符(如空格或撇号),则默认的Apple工具链将无法对其进行符号化。 原因是工具链中使用的工具otool无法处理。 不pipe你如何传递文件名。 所以要解决这个问题,你必须做到以下几点:

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

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

Interesting Posts