软件测试之SDK开发——[!] The 'Pods-XXX' target has frameworks with conflicting names: masonry.framework.

出现 The 'Pods-XXX' target has frameworks with conflicting names这个错误,是因为工程里同时pod了两个相同名字的framework,最简单的方式是只pod一个。但是这通常是理想情况。
我的SDK依赖第三方动态库masonry.framework用来布局界面。直接依赖第三方库有一个好处就是不需要修改和维护第三方库。并且对于大多数情况都适用。
1、app中以framework形式存在masonry.framework不会报错
2、app中以源码形式存在masonry不会报错
3、pod工程以源码形式存在masonry不会报错,但是需要你的代码兼容主版本的masonry库
4、pod工程以framework形式存在masonry.framework就会报The ‘Pods-XXX’ target has frameworks with conflicting names: masonry.framework错误

但是恰好有个业务pod 是以framework形式pod masonry的。我这里想到了以下几种方法
1、删掉app里面pod的源masonry.framework,想都不用想,放弃
2、在SDK的podspec里不强制pod masonry,建议用户pod,我不是很喜欢这种方式,我想让用户一键就可以pod成功,不需要额外做一些事情
3、直接把masonry的代码集成到sdk中,以framework的方式让用户pod,这种方式亲测是可以解决问题的。但是framework维护起来又很费事
4、把masonry的代码集成到SDK中,并修改前缀,防止命名冲突。这个工作量谁改谁知道。
5、把masonry.framework移除掉,重构masonry的代码

好吧,我选择了第5种,直接将masonry.framework移除掉,并重构了相关代码。如果后面还遇到类似问题,我会尝试第三种和第四种方法。

你可能感兴趣的:(软件测试)