“太多符号文件”在提交应用时发出警告

我将我的应用程序提交到app store并收到以下警告(不是错误):

符号文件太多 – 这些符号在任何二进制文件中都没有对应的切片[XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX.symbols,XXXXXX-XXXXXX-XXXXXX-XXXXXX-XXXXXX.symbols]

是什么导致了这个问题 我该如何解决? 它会给Crashlytics带来崩溃报告问题吗?

同样的问题发生在我身上,这就是为什么会发生这种情况和解决方案。

简短版本 :由于项目设置不当,正在生成冗余dSYM文件。 在我的例子中,“项目”由一个主要的xcproject和几个cocoapod项目组成,后者的Build Setting\Valid Architectures设置比前者更广泛。 因此,XCode正在为该pod项目生成冗余dSYM文件,而Apple检测到这些dSYM文件是无用的,因为主项目设置为更受约束的级别。

一堆废话版本

转到Window – > Organizer并选择您提交的存档版本,然后right click – > Show in finder以找到该.xcarchive文件。 然后使用terminal导航到.xcarchive(它是像.app这样的包)然后到dSYMs目录,运行dwarfdump --uuid *来显示该dSYM文件的uuids。 检查投诉电子邮件中的uuid是否在列表中。 电子邮件说这些dSYM文件是多余的,因此我们应该在构建存档时阻止生成它们。

对我来说,我在我的应用程序中使用了AFNetworking和其他第三方框架,并通过CocoaPods将它们添加到项目(或更精确地工作空间)中。 我需要保证我的应用程序不会安装在任何早于iPhone5s的设备上,所以我只在我的项目的Build Setting中将Valid Architectures设置为arm64 。 在这种情况下,我还应该为Pod项目目标设置相同的Valid Architectures (根据您通过Pod添加的框架数量,可能有多个目标)。 通过这样做, Pods项目将不会在构建过程中生成冗余的dSYM文件。 正确设置所有targets后,转到Product – > Archive以重新存档。 您应该再次检查dSYM文件的uuid,以防万一。

我希望自己能理解:)

Crashlytics报告不会受此设置的影响。

在构建设置中禁用bitcode。

我遇到了类似的问题,并确定启用bitcode将在app存档中生成BCSymbolMaps。 禁用bitcode可解决此问题。