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】:

这是有效架构的问题,当您拥有像 armv7armv7s 这样的“有效架构”时,就会出现此问题。要解决此问题请按照以下步骤操作

第 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 应用程序命名

当我提交带有犰狳的 iOS 应用程序时,BLAS 符号被拒绝为私有(ITMS-90338:非公共 API 使用)

将 IOS 表情符号转换为 web 或 android 表情符号代码

从声称 SDK 12.0 小于 SDK 11 的 xcode 提交 iOS 应用程序的问题

分析iOS Crash文件:符号化iOS Crash文件的3种方法

我可以通过昵称提交我的 iOS 应用吗?