应用程序名称包含撇号和空格时表示崩溃日志(已部署的应用程序) [英] Symbolicate Crash Log when App Name Contains Apostrophe and Space (Deployed App)
问题描述
我在App Store上有个崩溃的应用程序.我在SO上尝试了几种解决方案来象征我的应用程序,并在不同的时间使用了Organizer,Terminal和Instruments.到目前为止,仍然没有任何效果-即使我使用Apple方法的行也从未用我的应用程序中方法的报告中的行进行符号化.环顾了一会儿之后,看来这可能与应用程序名称有关,该名称与"Angie's List"相似-带有撇号和空格.现在更改应用程序名称已经为时已晚,因为它可以在商店中使用.我在任何地方都没有找到解决此问题的方法,希望朝着正确的方向前进.
I have an app on the App Store that is crashing. I have tried several of the solutions on SO to symbolicate my app, using at different times the Organizer, the Terminal, and Instruments. Nothing has worked so far - the lines in the reports from the methods in my app are never symbolicated, even when the lines for Apple methods are. After looking around for a while, it seems as though this might have something to do with the app name, which is along the lines of "Angie's List" - with both an apostrophe and a space. It is too late to change the app name now as it is live on the store. I haven't seen a solution to this anywhere and would appreciate a shove in the right direction.
推荐答案
通常情况下,应用程序名称无关紧要,除非符号脚本中存在我怀疑的错误.您是否检查了可用的正确dSYM?
Usually the app name doesn't matter, unless there is a bug in the symbolication script which I doubt. Did you check if you have the correct dSYM available?
如果您向下滚动查看最新的崩溃日志,请检查Binary Images
下的第一行,它看起来像这样
If you scroll down your latest crash log, check the 1st line below Binary Images
, it will look like this
0x1000 - 0x24cfff +YourApp armv7 <f6012c517d783486ab53e45d948b92a2> /var/mobile/Applications/A8EC3C1F-44AF-169A-BC0E-FBBC0F04CDF5/YourApp.app/YourApp
f6012c517d783486ab53e45d948b92a2
是导致崩溃的可执行文件的UUID.
f6012c517d783486ab53e45d948b92a2
is the UUID of the executable the caused the crash.
您可以使用以下终端找到正确的dSYM:
You can find the correct dSYM using the terminal as follows:
mdfind "com_apple_xcode_dsym_uuids == F6012C51-7D78-3486-AB53-E45D948B92A2"
字符串F6012C51-7D78-3486-AB53-E45D948B92A2
是上面重新格式化为大写和8-4-4-4-12组的字符串.我猜这个命令不会返回任何东西.
The string F6012C51-7D78-3486-AB53-E45D948B92A2
is the above string reformatted to uppercase and 8-4-4-4-12 groups. I guess this command will not return anything.
如果您有dSYM(例如,.xcarchive中的dSYM),则可以在终端中按以下方式检查其UUID:
If you have a dSYM (e.g. in an .xcarchive), you can check its UUID in the terminal as follows:
dwarfdump --uuid YourApp.app.dSYM
如果符号不能自动运行,您可以按照此处发布的说明尝试手动进行:
If symbolication doesn't work automatically, you can try to do it manually by following the instructions posted here: iOS crash reports: atos not working as expected
如果应用程序中包含特殊字符(例如空格或撇号),则默认的Apple工具链将无法对其进行符号化.原因是在工具链中使用的工具otool
无法处理该问题.无论您如何传递文件名.因此,要解决此问题,您必须执行以下操作:
If the application has special characters like spaces or apostrophe's in it, the default Apple toolchain will not be able to symbolicate it. The reason is that the tool otool
, which being used in the toolchain, can't handle that. No matter how you pass the filename. So to fix this, you have to do the following:
- 重命名dSYM软件包并删除所有特殊字符,例如从
My App's.app.dSYM
到MyApps.app.dSYM
- 打开包装内的内容,然后向下导航至
Contents/Resources/DWARF
- 像上面一样在其中重命名文件
- Rename the dSYM package and remove all special chars, e.g. from
My App's.app.dSYM
toMyApps.app.dSYM
- Open the content inside the package and navigate down to
Contents/Resources/DWARF
- Rename the file in there as you did above
现在重试.避免所有这些情况的最佳方法:从不在您的应用程序名称中使用特殊字符.如果要调整屏幕上显示的名称,请使用CFBundleDisplayName
或相应的plist条目.
Now try again. Best way to avoid all this: NEVER use special chars in your apps name. If you want the adjust the name that appears on the screen, use CFBundleDisplayName
or the corresponding plist entries.
这篇关于应用程序名称包含撇号和空格时表示崩溃日志(已部署的应用程序)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!