成功提交我的应用后,"符号文件太多"

Jim*_*ber 162 xcode xcodebuild app-store ios app-store-connect

我今天下载了Xcode 6 GM并向应用程序商店提交了两个Swift应用程序.两者都通过了所有上传前验证以及他们必须通过并成功提交的所有其他内容.但后来我收到两封来自Apple的电子邮件......每个节目一封,他们都说了这个:

亲爱的开发者,

我们发现您最近交付的"xxxxxxxx"(我的应用名称已移除)存在一个或多个问题.您的投放成功,但您可能希望在下次投放时更正以下问题:

符号文件太多 - 这些符号在任何二进制文件中都没有相应的切片[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]

纠正问题后,您可以使用Xcode或Application Loader将新二进制文件上传到iTunes Connect.

问候,

App Store团队

我猜这真的与我或我的应用程序无关......而这只是Swift应用程序提交日期的一个怪癖?这两款应用仍处于"等待审批"模式.我当然想不出任何我可以改变的东西,让他们说的消失了!还有其他人提交Swift应用程序并获得响应吗?我想我应该忽略它并等待看看会发生什么?

Mik*_*kin 83

如果要将库的调试信息包含到项目存档中但不包含二进制文件,则会发生这种情况.打开包含项目的管理器窗口.在右键菜单中选择"在查找器中显示".再次使用右键单击项目的存档文件以查看包的内容.在dwarfdump文件夹中,您可以找到一批文件.如果您对这些文件运行console命令,您将获得UUID字符串列表:

dwarfdump -u MyFile.dSYM
Run Code Online (Sandbox Code Playgroud)

我相信你会从Apple的电子邮件中找到一些UUID.

要避免此警告,您需要包括仅归档dSYM应用程序的文件而不归档库.为此,您需要更改库的构建配置以不生成dSYM文件.只需在配置中搜索"调试信息格式"并将其从仅更改DWARF with dSYM FileDWARF.在屏幕截图中,您将找到Stripe iOS框架的示例.

在此输入图像描述

  • 文件夹中的 `dwarfdump -u *` 查看所有 UUID (15认同)
  • 删除 dSYM 文件是否意味着与第 3 方相关的任何崩溃将不再在 Crashlytics(或任何其他崩溃报告工具)上进行符号化? (7认同)

wzb*_*zon 60

如果您在使用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
Run Code Online (Sandbox Code Playgroud)

它仅将调试信息格式设置为DWARF仅适用于所有Pod目标(不是主应用程序目标)

  • 这为我解决了。不要忘记`pod install` (6认同)

Jer*_*hen 12

如果你正在使用Pods和你的应用程序设置arm64(你的项目的info.plist中只有arm64)

<key>UIRequiredDeviceCapabilities</key>
<array>
    <string>arm64</string>
</array>
Run Code Online (Sandbox Code Playgroud)

您可以尝试在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
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

ref:https://github.com/CocoaPods/CocoaPods/issues/7111


miO*_*iOS 9

我有这个问题,因为该项目具有有效的架构arm64,其中可可豆荚目标具有有效的架构arm64,armv7和armv7s.

要检查哪个目标具有哪个有效体系结构,请执

  1. 在xCode - > Window - > Organizer中
  2. 选择存档并在Finder中显示
  3. .xcarchive文件上,显示包内容
  4. 打开终端并给出dSYMs文件夹的路径.

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

UDID将与Apple的警告电子邮件相匹配

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


Tar*_*era 7

通过启用位码为我工作 - 它之前关闭

启用位码 - 是

在此处输入图片说明


len*_*den -3

对我来说一切都很简单.我有同样的问题,不知道一周做什么.

提交成功的应用程序后,您会在小弹出窗口中看到要分发的证书.之后有一个复选框,您应该取消选中它.之后,您将提交它并收到有关符号文件的电子邮件.但这不是问题.这只是警告而不是错误!如果您取消选中该复选框,您的应用将会被正确发送.我希望它可能有所帮助

复选框和弹出窗口的屏幕截图:

  • 这不是解决问题的有效方法.这是避免症状,而不是解决问题.有关如何上传不需要的符号的说明,请参阅Mikhails答案.此答案可防止上传*any*符号,从而通过iTunesConnect破坏崩溃符号 (31认同)
  • 是的,但这会剥离包装中的所有符号,因此您不会收到符号化的崩溃报告?(他们现在甚至使用TestFlight在App Store应用程序中提供符号化的崩溃报告吗?) (6认同)
  • 不要这样做,如果这样做,您将无法在 App Store 上分析您的应用程序是否存在崩溃错误 (3认同)