iPhone 崩溃日志显示“版本:???”
Posted
技术标签:
【中文标题】iPhone 崩溃日志显示“版本:???”【英文标题】:iPhone crash logs say "Version: ???" 【发布时间】:2010-11-09 21:44:51 【问题描述】:我正在开发一个 iPhone 应用程序并为 beta 测试进行临时分发。我的用户正在向我发送这样的崩溃日志:
Identifier: MyAppName
Version: ??? (???)
Code Type: ARM (Native)
我不明白如何用真实的版本号替换这些问号。我已将我的 Info.plist 配置为包含一个 CFBundleVersion 和一个 CFBundleShortVersionString,但这并没有帮助...崩溃日志仍然只包含问号而不是我期望的版本号。
如何设置我的版本以便它显示在崩溃日志中?
编辑显然,由于 iPhone CrashReporter 中可能存在错误,因此无法正确设置“版本”。但是有解决方法吗?在崩溃日志元数据中插入版本号(例如内部版本号或 SCM 修订号)的其他方式?
【问题讨论】:
嘿丹 - 听起来你做的一切都是正确的。 Info.plist 中的值应该是我认为唯一的版本号......也许这是一个错误? 我在手机上看到的所有崩溃日志,来自几个发布应用程序,都有版本:??? (???),所以我认为就是这样。 【参考方案1】:最简单的方法是保存您分发的所有二进制文件的 UDID,并将它们与故障转储中的 UDID 进行比较。每个构建的 UDID 都不同。
要检索 UDID:
$ dwarfdump -u /path/to/MyApp.app/MyApp
UUID: 864F3D54-F165-3356-3292-2C9C48E97C55 (armv6) /path/to/MyApp.app/MyApp
并将其与崩溃日志进行比较:
Binary Images:
0x1000 - 0x5ffff +MyApp armv6 <864F3D54F165335632922C9C48E97C55> /var/mobile/Applications/5FB3933B-348E-42D7-B99F-76DE284D2148/MyApp.app/MyApp
【讨论】:
最好的情况是,我猜。 是啊……有版本号的系统,用起来真的很方便。 非常有帮助,感谢@rpetrich,如果这可以帮助某些人,请搜索所有 Xcode 4 档案:find ~/Library/Developer/Xcode/Archives/ -name <YOURAPPEXE> -print0 | xargs -0 dwarfdump -u | grep <PORTION OF UDID UPPERCASE>
。我认为使用mdfind
可以实现相同的目的,但看起来像聚光灯没有索引.xcarchive
文件内容。【参考方案2】:
这似乎适用于所有 iPhone 应用程序,包括来自 Apple 的应用程序。您可以在 Console 中查看您设备的所有 iPhone 应用程序崩溃日志:
FILES/~/Library/Logs/CrashReporter/MobileDevice/...
该列表中的所有内容都显示为我未知的版本,除了 MobileSafari,它的信息略有不同:
OS Version: iPhone OS 2.2.1 (5H11)
Date: 2009-02-15 02:19:06 -0600
所有其他应用程序,包括 Apple 的日历和邮件应用程序,都会显示带有问号的版本号。
似乎其他开发者已经注意到the same thing。这可能是 iPhone 的 CrashReporter 程序中的一个错误。
【讨论】:
谢谢。有什么解决方法吗?在崩溃日志元数据中插入版本号(例如内部版本号或 SCM 修订号)的其他方式? 不幸的是,我不知道。我已经对这些东西不感兴趣了:)【参考方案3】:对于临时和 Beta 测试,只需更改您的标识符。 MyAppNameV1.0b36
而不是 MyAppName
显然这不适用于您的 App Store 版本,但它会让您通过 beta 测试。
请注意,这可能需要通配符临时配置文件,但可以通过开发人员门户轻松完成。
【讨论】:
我无法使用通配符临时配置文件,但开发人员门户总是需要大量的工作。以上是关于iPhone 崩溃日志显示“版本:???”的主要内容,如果未能解决你的问题,请参考以下文章