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

Dear developer, We have discovered one or more issues with your recent delivery for "xxxxxxxx" (my app name removed). Your delivery was successful, but you may wish to correct the following issues in your next delivery: Too many symbol files - These symbols have no corresponding slice in any binary [1431D977-72BC-308F-AB71-71529F25400B.symbols, 158C72A7-98AC-3F07-B2BE-88427591B413.symbols, 44973EAC-563E-340C-B549-55A5014A68BA.symbols, 678BF06F-0C3D-3A09-BFBF-699C7079FECD.symbols, 90907DDB-0400-38ED-BB5F-0C12333C0624.symbols, 93B79949-5757-374A-97B9-825AE1A61B7D.symbols, ABA05220-4FB0-397F-AFBB-08774A82F4CA.symbols, AD70F02A-4422-32B8-8C40-CF9B45A2CCC6.symbols, B0CC9F7D-C542-3E18-A518-B28B7ECABE80.symbols, BF6A4C3B-6FA5-3C51-8404-19C2F132458D.symbols, C9D6E078-8E2A-39D9-8DEE-476916A69CEE.symbols, CF5320DF-AB31-3845-BAD5-F6E51045D396.symbols, D4967AA3-8FB0-3712-B0DE-7F4144AF8F4B.symbols, D813B314-AD37-31D4-B675-442052994495.symbols, DF42A13F-08D8-3E71-B221-FC357E0B60F5.symbols, F5F636C2-F0E0-3CA7-8F7D-C49A36CD5C65.symbols] After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to iTunes Connect. Regards, The App Store team

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


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

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

复选框和弹出框的截图:


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

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

我相信你会从苹果的邮件中找到一些匹配的uuid。

为了避免此警告,您需要在存档中只包含应用程序的dSYM文件,而不是库。为此,您需要更改库的构建配置,以不生成dSYM文件。只需在配置中搜索“调试信息格式”,并将其从“DWARF with dSYM File”更改为“DWARF only”。

例如,在下面的截图中,你会发现Stripe iOS框架。


我有这个问题,因为该项目有有效的架构arm64,其中CocoaPods目标有有效的架构arm64, armv7和armv7s。

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

在Xcode ->窗口->组织者 选择存档并在Finder中显示 在.xcarchive文件上,显示包内容 打开终端并给出dSYMs文件夹的路径。 输入命令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

AND

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

CocoaPods Github问题参考


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


在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 -是


我的问题是我身材中的一条线。xcconfig文件。 我必须移除

IPHONEOS_DEPLOYMENT_TARGET = 11.0

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


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