好的,所以我在这个问题上咬牙切齿,我真诚地希望我犯了一个愚蠢的错误(涉及到一些深夜)。
简短的背景故事,我们正在构建一个需要品牌化的产品,因为多个客户将共享 90% 相同的 UI 和代码,并带有一些配置选项来打开/关闭事物以及不同的颜色、字体和图像等。
除 .xcassets 文件夹外,一切正常。我每个客户有 1 个,目前他们具有相同的资产名称,具有不同的图像。例如,每个 .xcassets 都有一个ic_settings
,但每个的内容都不同。
我已经检查了复制包资源构建阶段,对于每个目标,实际上每个目标只有 1 个 .xcasset 文件夹。
<redacted image>
<redacted image>
当我运行该应用程序时,它会正确加载 appIcon(我必须将其重命名为 appIcon- <target>
,因为 Xcode 中的下拉菜单显示了所有内容并且无法知道哪个是哪个)。它还显示正确的包名称和启动 screen.xib。
下面是图片本身。如您所见,图像完全不同:
<redacted image>
<redacted image>
但是当我运行客户 1 和客户 2 时。所有图像都是客户 1 的。
我不知道这在物理上是如何实现的,请告诉我:
- 我没有疯
- 我犯了一些我看不到的简单错误
- 这不是 Xcode 错误,也不需要人类所见过的最复杂的工作。可能重命名所有图像以附加目标名称:-(。
笔记
我已经尝试在模拟器和真实设备上清理、构建、重置模拟器、删除派生数据等。
如果我将唯一图像添加到其中一个文件夹,我就可以使用它。直觉是 Xcode 正在合并文件夹????
解决方法
标记的答案是正确的,它是cocoapods。这是一个已知问题,目前最好的解决方法(我发现)是使用这个:https ://github.com/CocoaPods/CocoaPods/issues/1546#issuecomment-61907975