这主要是因为在编译过程的多个阶段可能都产生了asset产物,导致New Build System出现了错误。可以暂时切换Legacy build system ,但是后续xcode 迭代将会废弃该选项,只能选择new build system ,所以建议还是新系统的解决。
在一些pod库中,图片是通过s.resource 来导入,这会导致cocoapod会将pod库中的图片直接复制到主工程中的Assets.car中,如果本来主工程中有同名文件,就会被覆盖
s.resource = 'xxx/Assets/*.xcassets'
解决问题的方式是使用如下方式来导出pod中的文件
s.resource_bundles = {
'xxxAsset' => ['xxx/Assets/*.xcassets']
}
使用s.resource_bundles导出的话,会把图片拷贝到单独的一个bundle中,因此在pod中使用图片只能采用下面这种方式:
UIImage *image = [UIImage imageNamed:@"your-image-name"
inBundle:[NSBundle pod1_bundle]
compatibleWithTraitCollection:nil];
不过由于不是所有的第三方库我们都可以修改,并且我的工程中被覆盖的只是appIcon.assets,也就是app的图标文件,我只需要将主工程中的AppIcon.assets修改一下名称,就可以解决,不需要再进行复杂的修改
![](https://img.haomeiwen.com/i589368/d7736041059c2f0c.png)
网友评论