提交应用

时间:2015-12-16 13:14:27

标签: ios xcode app-store appstore-approval

我将我的应用提交到应用商店并收到以下警告(不是错误):

  

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

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

4 个答案:

答案 0 :(得分:27)

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

短版:由于项目设置不当,正在生成冗余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将它们添加到项目(或更精确地工作空间)中。我需要保证我的应用程序不会安装在任何早于iPhone5的设备上,所以我只在Valid Architectures项目的arm64设置了Build Setting。在这种情况下,我还应该为Valid Architectures项目目标设置Pod相同(可能有多个目标取决于您通过Pod添加了多少个框架)。通过这样做,Pods项目在构建过程中不会产生冗余的dSYM文件。完成所有targets设置后,转到Product - > Archive进行重新存档。您应该再次检查dSYM文件的uuid(s)。

我希望自己能理解:)

答案 1 :(得分:2)

此设置不会影响Crashlytics报告。

答案 2 :(得分:0)

假设您的目标是iOS 11,但您的cocoapods框架的最低部署目标小于iOS 11,然后在podfile的末尾添加此目标:

post_install do |installer| 
    installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config| 
            config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '11.0'
        end
    end 
end

“符号文件太多”警告告诉您,您的项目比cocopods框架具有更多的限制性约束。 enter image description here

答案 3 :(得分:-5)

在构建设置中禁用bitcode。

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