在哪里可以获得其他iOS版本的iOS系统符号

请注意:我正在寻求一个可以下载符号的地方,或者得出一个确定的答案,即苹果禁止这样的网站。 这个“重复”的问题与我在问题中提到的问题类似:唯一的build议答案是访问物理设备或find另一个开发人员。

我已经使用了crashdump,但是只有我的应用程序代码中的行符号化了; 系统代码没有。 它看起来像这样:

Thread 0 Crashed: 0 libobjc.A.dylib 0x39c195d0 0x39c16000 + 13776 1 QuartzCore 0x33aefcad 0x33ade000 + 72877 2 QuartzCore 0x33af3105 0x33ade000 + 86277 <snip> 13 UIKit 0x33d862b9 0x33d2f000 + 357049 14 MyApp 0x0005ef87 main (main.m:14) ... Thread 7: 0 libsystem_kernel.dylib 0x3a101e30 0x3a101000 + 3632 1 CoreFoundation 0x31ef82bb 0x31e61000 + 619195 2 CoreFoundation 0x31ef7031 0x31e61000 + 614449 3 CoreFoundation 0x31e6a23d 0x31e61000 + 37437 4 CoreFoundation 0x31ec8c4b 0x31e61000 + 425035 5 MyApp 0x0016f293 +[UA_ASIHTTPRequest runRequests] (UA_ASIHTTPRequest.m:4795) 6 Foundation 0x3283b231 0x3278a000 + 725553 7 libsystem_c.dylib 0x3a06b0e1 0x3a05a000 + 69857 

我从这个问题收集,这是因为崩溃来自iOS 6.1.4设备,并且我的〜/ Library / Developer / Xcode / iOS DeviceSupport文件夹中没有iOS 6.1.4的符号。

不幸的是,iOS 6.1.4是一个仅限于iPhone 5的版本,而且我没有物理访问可以更新到6.1.4的iPhone 5,所以将符号从设备中取出。 有什么地方可以下载不同iOS版本的符号(没有运行这些版本的设备),还是这些被认为是苹果机密?

我从真实设备(二手手机市场),iOS Fireware和Xcode的iOS SDK收集了大部分系统符号。

你可以在这里下载你需要的版本:

iOS系统符号文件(7.0-9.2)

iOS系统符号文件(9.2.1-10.2)

阅读iOS系统的符号了解更多details.If我得到新的符号文件,我将它添加到谷歌驱动器共享folder.You可以按照最新的更新从上面的github库。

如何使用

  1. 当您需要表示崩溃报告时,请检查Code TypeOS Version部分。 如:

Code Type: ARM-64

OS Version: iOS 10.2 (14C82)

这意味着你需要10.2 (14C82)系统的arm64版本符号。

  1. find我的共享文件夹中的包,并将其解压到~/Library/Developer/Xcode/iOS DeviceSupport 。 (检查文件的名称和path,应该是~/Library/Developer/Xcode/iOS DeviceSupport/10.2 (14C82)/Symbols )。

  2. 使用Xcode的symbolicatecrash工具来表示您的崩溃报告。 该工具将自动在iOS DeviceSupportpath中search系统符号。

符号列表

7.0 (11A465)10.2 (14C92)有50个版本(如果你计算CPU版本的OS版本,它是85,我有76个)。

这里是从7.010.2的符号列表,以及他们的CPU架构版本。

 | OS Version | collected CPU version | |-------------------|---------------------- | | 10.2 (14C92) | arm64,armv7s | | 10.1.1 (14B150) | arm64,armv7s | | 10.1.1 (14B100) | arm64,armv7s | | 10.1 (14B72c) | arm64,armv7s | | 10.1 (14B72) | arm64,armv7s | | 10.0.3 (14A551) | arm64,armv7s | | 10.0.2 (14A456) | arm64,armv7s | | 10.0.1 (14A403) | arm64,armv7s | | 10.0(14A346) | none | | 9.3.5 (13G36) | arm64,armv7s,armv7 | | 9.3.4 (13G35) | arm64,armv7s,armv7 | | 9.3.3 (13G34) | arm64,armv7s,armv7 | | 9.3.2(13F72) | none | | 9.3.2 (13F69) | arm64,armv7s,armv7 | | 9.3.1 (13E238) | arm64,armv7s,armv7 | | 9.3(13E237) | armv7s,armv7 | | 9.3(13E236) | armv7 | | 9.3(13E234) | none | | 9.3 (13E233) | arm64,armv7s,armv7 | | 9.2.1 (13D20) | arm64,armv7s | | 9.2.1 (13D15) | arm64,armv7s,armv7 | | 9.2 (13C75) | arm64,armv7s,armv7 | | 9.1 (13B143) | arm64,armv7s,armv7 | | 9.0.2(13A452) | arm64,armv7s,armv7 | | 9.0.1(13A404) | arm64,armv7s,armv7 | | 9.0 (13A344) | arm64,armv7s,armv7 | | 8.4.1 (12H321) | arm64,armv7s,armv7 | | 8.4 (12H143) | arm64,armv7s,armv7 | | 8.3 (12F70) | arm64,armv7s,armv7 | | 8.3 (12F69) | arm64,armv7s,armv7 | | 8.2 (12D508) | arm64,armv7s,armv7 | | 8.1.3 (12B466) | arm64,armv7s,armv7 | | 8.1.2 (12B440) | arm64,armv7s,armv7 | | 8.1.1 (12B436) | arm64,armv7s | | 8.1.1 (12B435) | armv7s,armv7 | | 8.1 (12B411) | arm64,armv7s,armv7 | | 8.1 (12B410) | arm64,armv7s,armv7 | | 8.0.2 (12A405) | arm64,armv7s,armv7 | | 8.0.1(12A402) | armv7s,armv7 | | 8.0 (12A366) | arm64,armv7s | | 8.0 (12A365) | arm64,armv7s,armv7 | | 7.1.2 (11D257) | armv7s,armv7 | | 7.1.1 (11D201) | arm64,armv7s,armv7 | | 7.1 (11D167) | arm64,armv7s,armv7 | | 7.0.6 (11B651) | arm64,armv7s,armv7 | | 7.0.4 (11B554a) | arm64,armv7s,armv7 | | 7.0.3 (11B511) | arm64,armv7s,armv7 | | 7.0.2(11A501) | armv7s,armv7 | | 7.0.1(11A470a) | armv7s | | 7.0(11A465) | arm64,armv7s,armv7 | 

缺less符号

我仍然想念这些CPU的符号, 如果你有其中的任何一个,请分享一下

 | missed OS Version | missed CPU Version | description |-------------------|-----------------------|----------------- | 10.0(14A346) | arm64 | iPhone 7 and 7 Plus-only, default OS when leave factory | 9.3.2(13F72) | arm64 | iPad Pro 9.7-inch-only, fix bricked problem | 9.3(13E237) | arm64 | 5s, iPad Air and iPad mini2 only, fix activation problem | 9.3(13E234) | arm64 | 6s, 6s Plus and iPad Pro 9.7-inch only | 8.1.1 (12B435) | arm64 | 5s, iPad Air and iPad mini2 only | 8.0.1(12A402) | arm64 | `8.0.1`was pulled soon after released.Because it has serious bugs | 7.1.2 (11D257) | arm64 | | 7.0.2(11A501) | arm64 | | 7.0.1(11A470a) | arm64 | 5s only 

如何检查符号文件包含的CPU版本

如果您已经有一个系统符号文件,并且想要知道它包含哪个CPU版本,请检查path中的文件,如10.2 (14C92)/Symbols/System/Library/Caches/com.apple.dyld 。 应该有名为dyld_shared_cache_arm64dyld_shared_cache_armv7sdyld_shared_cache_armv7

如果你错过了一个,那就意味着你没有这个CPU版本的符号。

我只知道很长的一段路:下载ipsw文件,并用黑客工具从中提取符号。 也许任何人都可以find方法更容

更新: 我发现解决scheme更简单

我试图象征iOS 7.0.1的符号,但不够(与iOS 6.1.4相同的原因)

接下来的步骤帮助我:

  1. 我编辑.crash文件,并将iOS 7.0.1更改为iOS 7.0
  2. 备份和删除~/Library/Developer/Xcode/iOS DeviceSupport
  3. 从Xcode5(包含iOS 7符号)运行symbolicatecrash

忽略一些这些步骤对我来说没有任何成果。

我希望它可以帮助你。

你应该能够6.1.4的6.1.something SDK的符号链接,类似于我的答案在这里( https://stackoverflow.com/a/19383685/473067 )。 在这种情况下,符号链接应该在Xcode5.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

我们通常使用足够接近的SDK版本来象征性地使用崩溃,但是我们使用自己的符号化脚本而不是Xcode,而且符号并不总是匹配,所以YMMV。