“太多的符号文件”;在成功提交应用程序后

我下载了Xcode 6 GM,今天向应用商店提交了两个Swift应用。这两款游戏都通过了所有上传前验证和其他必须通过的内容,并成功提交。但后来我收到了苹果公司的两封邮件……每个节目一个,他们都这么说:

亲爱的开发者,

我们发现你方最近发货的“;xxxxxxxx"(我的应用程序名称删除)。您的交付是成功的,但您可能希望在下次交付时纠正以下问题:

太多的符号文件-这些符号在任何二进制文件中都没有相应的片[1431D977-72BC-308F-AB71-71529F25400B.]符号,158 c72a7 - 98 ac - 3 - f07 b2be b413——88427591。符号,44973 eac - 563 - e - 340 - c - b549 55 - a5014a68ba。符号,678 bf06f - 0 - c3d 3 - a09 bfbf - 699 c7079fecd。符号,90907 ddb - 0400 - 38 - ed - bb5f 0 - c12333c0624。符号,b79949 - 5757 - 374 - 93 - 97 b9 - 825 ae1a61b7d。符号,aba05220 - 4 - fb0 - 397 f - afbb a82f4ca——08774。符号,ad70f02a - 4422 - 32 - b8 - 8 - c40 cf9b45a2ccc6。符号,B0CC9F7D-C542-3E18-A518-B28B7ECABE80。符号,bf6a4c3b - 6 - fa5 - 3 - c51 - 8404 - 19 - c2f132458d。符号,c9d6e078 - 8 ea2 - 39 - d9 - 8 -迪- 476916 - a69cee。符号,cf5320df - ab31 - 3845 bad5 f6e51045d396。符号,d4967aa3 - 8 fb0 - 3712 b0de f4144af8f4b——7。符号,d813b314 - ad37 - 31 - d4 b675 - 442052994495。符号,DF42A13F-08D8-3E71-B221-FC357E0B60F5。符号,F5F636C2-F0E0-3CA7-8F7D-C49A36CD5C65.symbols]

在你纠正了这些问题后,你可以使用Xcode或应用程序加载器上传一个新的二进制文件到iTunes Connect。

问候,

App Store团队

我猜这真的与我或我的应用程序无关……这只是Swift应用程序提交第一天的一个怪癖吗?这两款应用程序仍在“等待批准”中;模式。我当然想不出我能改变什么来让他们说的话消失!有人提交了Swift应用程序并得到了回应吗?你觉得我该无视它,静观其变吗?

59286 次浏览

对我来说,一切都很简单。我也有同样的问题,整整一个星期都不知道该怎么办。

提交存档申请后,您将在一个小弹出窗口中看到用于分发的证书。它后面有一个复选框,您应该取消勾选。之后,你将提交它,并得到一封关于符号文件的电子邮件。但这不是问题。这只是一个警告;不是错误!如果你取消勾选该复选框,你的应用程序将被正确发送。希望它能对你有所帮助。

复选框和弹出框的截图:

复选框和弹出框的截图

如果在项目存档中包含库的调试信息,但不包括二进制文件,就会发生这种情况。

  1. 在Xcode中打开Organizer窗口
  2. 右键单击有此问题的存档,并选择“在Finder中显示”。
  3. 右键单击存档文件并选择“Show Package Contents”
  4. 在“dSYMs”文件夹中,您将看到几个文件。如果你在这些文件上运行dwarfdump控制台命令,你会得到一个UUID字符串列表:

    dwarfdump -u MyFile.dSYM
    

I'm sure you will find some matching UUIDs from Apple's email.

To avoid this warning you need to include with your archive only the dSYM files of your application and not the libraries. For this you need to change the build configuration of the libraries to not generate a dSYM file. Just search for "debug information format" in configuration and change it from DWARF with dSYM File to DWARF only.

For example, in the screenshot below you will find the Stripe iOS framework.

Xcode project settings screenshot

我有这个问题,由于该项目具有有效的架构arm64,其中CocoaPods目标具有有效的架构Arm64, armv7和armv7s

要检查哪个目标具有哪个有效的体系结构,请执行以下步骤

  1. 在Xcode ->窗口->组织者
  2. 选择存档并在Finder中显示
  3. .xcarchive文件上,显示包内容
  4. 打开终端,给出dSYMs文件夹的路径。

  5. 输入命令dwarfdump --uuid *,它将显示具有有效体系结构的uuid列表。

UUID将与苹果的警告邮件匹配

假设主项目和可可荚目标具有相同的有效架构。通过这样做,它将解决问题。

如果你在使用CocoaPods时遇到了这个问题,把这个添加到你的Podfile中:

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

它只会为你的Pod目标(不是主应用目标)设置Debug Information Format为DWARF

如果你正在使用CocoaPods,并且你的应用被设置为只使用arm64(即在你的项目的info.plist中只有arm64)

<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>

那么你可以尝试在Podfile中添加以下脚本来解决这个问题。

post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
config.build_settings['ARCHS'] = 'arm64'
end
end
end

将所有项目的目标(不是Pods中的目标)设置为arm64

Xcode项目设置

CocoaPods Github issue reference

有同样的问题修复它有相同的“一般”=>“部署信息”=>“部署目标”为我的所有目标。

在Xcode中,查看Build Settings中的“Strip Debug Symbols During Copy” (COPY_PHASE_STRIP)。启用时,调试符号将从您的 .app并放置到. dsym文件中。否则你的。app就包含这些 符号。(默认情况下,从发布版本中删除调试符号 出于混淆的原因。您可能不应该更改此设置 对于发布配置)

确保在项目建立设置中选中此选项

https://possiblemobile.com/2015/03/symbolicating-your-ios-crash-reports/

为我工作通过启用比特码-它是关闭之前

启用Bitcode -是

enter image description here

我的问题是我的build.xcconfig文件中的一行。 我必须删除

IPHONEOS_DEPLOYMENT_TARGET = 11.0

,它将项目设置为仅为arm64构建(而不是arm7)。 按照@miOS的步骤,我可以看到pods项目正在为两者构建

上述方法有助于排除故障,但无法解决问题。我们在iOS 12上有项目,但pod 10导致了一堆armv7文件。更新pod到iOS 12立即解决。