年前升級了`Cocoapods`庫,從`0.39`升級到了`1.2.0-beta`版,然後用模擬器和真機測試都是沒有問題的,均可以成功編譯。今天測試人員要測試包,準備`archive`打包時,卻提示:`ld: library not found for -lMantle`,瞬間感覺哪兒不對,明明可以... ...
年前升級了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
的鏈接,暫時沒搞明白,以後搞明白了,再來修改一下。