iOS 11 应用提交:“符号文件过多”
Posted
技术标签:
【中文标题】iOS 11 应用提交:“符号文件过多”【英文标题】:iOS 11 app submission: "Too many symbol files" 【发布时间】:2018-12-22 10:01:17 【问题描述】:我的目标是 ios 11,现在在提交应用程序后,我收到一封来自 Apple 的电子邮件,其中包含警告“符号文件过多”。
看起来 CocoaPods 框架包含在不需要的架构中。
谁能展示正确的设置是什么,以避免在 iOS 11 上包含不需要的框架?
【问题讨论】:
这里有同样的问题。到目前为止,您有任何解决方案吗?我从支持的架构中删除了 armv7 和 armv7s,但由于某些原因,仍然会创建这些架构的 dsym。 @SebastianBoldt 不幸的是,问题仍然存在。你找到解决办法了吗? 【参考方案1】:“符号文件过多”警告告诉您,您的项目比 CocoaPods 框架具有更多限制性约束。您的目标是 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
【讨论】:
【参考方案2】:为避免出现此警告,您只需归档应用程序的 dSYM 文件,而不需要归档库。为此,您需要更改库的构建配置,不要生成 dSYM 文件。只需在配置中搜索“调试信息格式”并将其从 DWARF with dSYM File 更改为仅 DWARF。在屏幕截图中,您将找到 Stripe iOS 框架的示例。
【讨论】:
【参考方案3】:如果您将以下几行放入 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
【讨论】:
【参考方案4】:这是有效架构的问题,当您拥有像 armv7 和 armv7s 这样的“有效架构”时,就会出现此问题。要解决此问题请按照以下步骤操作
第 1 步: 首先,我们检查我们从哪里获得 Apple 报告的“UUID 字符串”。
-
打开 Xcode → 管理器窗口 → 选择应用程序 → 选择存在此问题的存档。
右键单击该存档 → 选择“在 Finder 中显示”
右键单击存档文件 → 选择“显示包内容”
在“dSYMs”文件夹中,您将看到几个文件。
打开终端并将路径更改为“dSYM”
现在运行此命令“dwarfdump -u FileName.dSYM”,这将为您提供 UUID 字符串列表,其中包括 (arm64)、(arm7) 等(如果需要,请检查所有文件)
第 2 步:
转到项目 → 构建设置 → 搜索“有效架构”并将其设置为“arm64”(调试和发布两者)。
转到项目 → 构建设置 → 搜索“调试信息格式”并将其设置为“DWARF”
第 3 步:
转到 podfile 并在其中添加以下代码,因为 Pod 具有有效的架构 arm64、armv7 和 armv7s。
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
第 4 步:
转到项目的 info.plist 并将“UIRequiredDeviceCapabilities”添加/设置为“arm64”。 这是代码
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>arm64</string>
</array>
第 5 步:
现在准备构建并重复“步骤 1”以检查您构建中的 UUID 字符串。
【讨论】:
按照您的步骤操作后,我仍然可以看到存档中存在相同的 UUID。我可以尝试上传并期望没有问题吗? @Yogesh Saindane以上是关于iOS 11 应用提交:“符号文件过多”的主要内容,如果未能解决你的问题,请参考以下文章
当我提交带有犰狳的 iOS 应用程序时,BLAS 符号被拒绝为私有(ITMS-90338:非公共 API 使用)
将 IOS 表情符号转换为 web 或 android 表情符号代码
从声称 SDK 12.0 小于 SDK 11 的 xcode 提交 iOS 应用程序的问题