年前升级了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工程的配置问题?
这种方法是在stackoverflow看到的,把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
的链接,暂时没搞明白,以后搞明白了,再来修改一下。