年前升級了Cocoapods庫,從0.39升級到了1.2.0-beta版,然後用模擬器和真機測試都是沒有問題的,均可以成功編譯。今天測試人員要測試包,准備archive打包時,卻提示:ld: library not found for -lMantle,瞬間感覺哪兒不對,明明可以運行,真機測試也沒問題,怎麼打包出現找不到Mantle庫的問題,然後就開始分析。
首先到Cocoapods官網,找到Troubleshooting,發現對該問題有解決辦法,根據提示步驟修改,在Edit Scheme->Build裡,添加靜態庫Mantle,編譯發現問題依然存在,看來不是靜態庫的問題。緊接著把後面的方法也試了一遍,還是無果,排除升級Cocoapods的影響。
這種方法是在stackoverflow看到的,把Pods工程裡:Build Settings->Build Active Architectures Only設置為NO,問題還是存在,喝口水,繼續找問題。
於是在Build Phases->Link Binary With Libraries裡添加Mantle.framework庫,滿懷期待地看著又一次出錯,問題依然沒有解決,又喝了兩口水,繼續找問題。
覺得應該是修改庫的管理過程中,本地的鏈接引用沒有被刪除,導致在打包時無法找到Mantle庫。於是立即到:Build Settings->Other Linker Flags裡,把-lMantle刪除掉,打包編譯成功,順利解決了問題。
回顧問題的解決方法,我猜測是新版的Xcode在鏈接本地庫時,沒有從Pods工程裡搜索導致的問題,具體是新版Xcode沒有主動搜索,還是升級後的Cocoapods限制了Other Linker Flags的鏈接,暫時沒搞明白,以後搞明白了,再來修改一下。