去除友盟等第三方SDK失败的解决办法(clang: error: no such file or directory:xx)


背景

前端时间产品经理决定使用百度统计,使得 工程B 中原统计sdk-友盟统计,需要被去除。之前尝试去除过一次,但是因有些错误不知如何解决,暂且注释了功能代码,友盟sdk暂时保留了下来。
最近迭代暂缓,尝试改个思路解决此问题。

新思路

  1. 新建工程,pod集成友盟sdk
  2. pod删除友盟sdk,编译,看是否通过
  3. 如果通过,对比build settings与 工程B 区别,根据新项目配置修正 工程B 中相关配置。

实践

经测试,发现1.2步骤后,新工程可以编辑通过。
而工程B中pod移除友盟后,报错如下:
ld: framework not found “UMMobClick”
在工程B中全局搜索 UMMobClick,发现设置中依旧存在相关配置,如图

手动删除 "UMMobClick"项后编译,报错如下:
clang: error: no such file or directory: 'SystemConfiguration' Command Ld failed with a nonzero exit code
此时,真的是一脸懵逼了。这SystemConfiguration库跟友盟有啥关系啊!上次搁置就是这种错误,不知如何解决。

此次,根据上面思路3,观察新项目去除友盟后相同位置的配置,如图:

观察发现,每个库名上面后又一个-framework标识。于是,对比可得,项目B中是否也把原UMMobClick上面的-framework标识删除再编译,就可以了呢?
经测试,真的可以了!

结论

删除第三方SDK时,如果配置未自动清理。手动删除时,必须一起删除其上一行的-framework配置。
如图: