開(kāi)發(fā)中遇到的一些看似不起眼的警告炕贵,往往卻是問(wèn)題的所在!
這不野崇,這次我就遇到了這個(gè)坑称开,為了提醒自己不要輕易忽略警告,以此文章記錄一下,埋坑的艱辛鳖轰。
我是在集成友盟分享SDK的時(shí)候清酥,使用cocoapods導(dǎo)入的友盟分享組件,在命令行敲下pod install只會(huì)蕴侣,安裝也完成了焰轻,就是出現(xiàn)以下一些警告,我大概瀏覽了一下昆雀,看不出所以然辱志,就沒(méi)管, 繼續(xù)在集成。
[!] The ULife [Debug] target overrides the OTHER_LDFLAGS build setting defined in Pods/Target Support Files/Pods-ULife/Pods-ULife.debug.xcconfig'. This can lead to problems with the CocoaPods installation - Use the$(inherited)` flag, or - Remove the build settings from the target.
[!] The ULife [Release] target overrides the OTHER_LDFLAGS build setting defined in Pods/Target Support Files/Pods-ULife/Pods-ULife.release.xcconfig'. This can lead to problems with the CocoaPods installation - Use the$(inherited)` flag, or - Remove the build settings from the target.
直到我開(kāi)始使用友盟的一些類庫(kù)時(shí)狞膘,使用也是沒(méi)有問(wèn)題的揩懒,可當(dāng)我編譯時(shí),卻出現(xiàn)了以下錯(cuò)誤信息:
Undefined symbols for architecture arm64: “OBJC_CLASS$_UMSocialManager”, referenced from: objc-class-ref in AppDelegate.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
咋一看挽封,還以為是不支持64位呢已球,可是官方明明寫(xiě)著支持64位的,也就沒(méi)有去懷疑官方辅愿,就開(kāi)始各種清理緩存智亮,重復(fù)編譯,各種谷歌渠缕,百度,可終究沒(méi)有可行的辦法褒繁。去友盟問(wèn)客服亦鳞,溝通成本太高,每次掉線棒坏,重新連接又是一個(gè)新人燕差,也未能解決。
實(shí)在沒(méi)有辦法了坝冕,我又重新pod update一下徒探,這次發(fā)現(xiàn)依然是上面提到的警告信息,這次我沒(méi)有忽略喂窟,而是仔細(xì)的看了下测暗,大概知道了,產(chǎn)生此警告的原因是項(xiàng)目 Target 中的一些設(shè)置磨澡,CocoaPods 也做了默認(rèn)的設(shè)置碗啄,如果兩個(gè)設(shè)置結(jié)果不一致,就會(huì)造成問(wèn)題稳摄。
警告中稚字,提示要想使用cocoapods中的設(shè)置,需要在項(xiàng)目中定義PODS_ROOT 和 Other Linker Flags的地方,把他們的值用$(inherited)替換掉胆描。
大致解決辦法知道了瘫想, 開(kāi)始在Build Settings中的PODS_ROOT和Other Linker Flags處進(jìn)行修改,添加一項(xiàng)$(inherited)昌讲,Other Linker Flags我這里沒(méi)有替換掉国夜,而是添加一項(xiàng),怕我本來(lái)的項(xiàng)也是有用的剧蚣,就沒(méi)有替換支竹。
最后修改后,我再次編譯鸠按,竟然通過(guò)了礼搁,我喜極而泣的寫(xiě)下了這篇文章來(lái)記錄下這次忽略警告的教訓(xùn)經(jīng)歷。
注:在我在網(wǎng)上搜索時(shí)目尖,有說(shuō)馒吴,點(diǎn)擊項(xiàng)目文件 project.xcodeproj,右鍵顯示包內(nèi)容瑟曲,用文本編輯器打開(kāi)project.pbxproj饮戳,刪除OTHER_LDFLAGS的地方,保存洞拨,回到 Xcode扯罐,編譯也能通過(guò)。這種刪除內(nèi)容的解決辦法烦衣,我一般不輕易使用的歹河,所以我沒(méi)有去證實(shí)這種做法,若有興趣花吟,你可以嘗試下秸歧,不過(guò)做好備份哦~~