升级Cocoapods引起的Mantle库找不到的问题及解决方法

年前升级了Cocoapods库,从0.39升级到了1.2.0-beta版,然后用模拟器和真机测试都是没有问题的,均可以成功编译。今天测试人员要测试包,准备archive打包时,却提示:ld: library not found for -lMantle,瞬间感觉哪儿不对,明明可以运行,真机测试也没问题,怎么打包出现找不到Mantle库的问题,然后就开始分析。

1. 升级Cocoapods引起的问题?

首先到Cocoapods官网,找到Troubleshooting,发现对该问题有解决办法,根据提示步骤修改,在Edit Scheme->Build里,添加静态库Mantle,编译发现问题依然存在,看来不是静态库的问题。紧接着把后面的方法也试了一遍,还是无果,排除升级Cocoapods的影响。

2. Pod工程的配置问题?

这种方法是在*看到的,把Pods工程里:Build Settings->Build Active Architectures Only设置为NO,问题还是存在,喝口水,继续找问题。

3. 链接引用有问题?

于是在Build Phases->Link Binary With Libraries里添加Mantle.framework库,满怀期待地看着又一次出错,问题依然没有解决,又喝了两口水,继续找问题。

4. 把Mantle从本地库改成Cocoapods管理过程有问题?

觉得应该是修改库的管理过程中,本地的链接引用没有被删除,导致在打包时无法找到Mantle库。于是立即到:Build Settings->Other Linker Flags里,把-lMantle删除掉,打包编译成功,顺利解决了问题。


回顾问题的解决方法,我猜测是新版的Xcode在链接本地库时,没有从Pods工程里搜索导致的问题,具体是新版Xcode没有主动搜索,还是升级后的Cocoapods限制了Other Linker Flags的链接,暂时没搞明白,以后搞明白了,再来修改一下。

上一篇:Xhprof分析php性能


下一篇:PHP流程控制中不经常使用的替代语法