? ? ? ? 今天筆者在實(shí)現(xiàn)一個(gè)分享功能時(shí)惊搏,沒(méi)有使用cocoapods安裝第三方,直接采用拖入的方式加入的第三方SDK忧换。分享功能沒(méi)有使用友盟恬惯,而是直接使用第三方軟件自帶的分享SDK:
圖片中的三個(gè)SDK基本能實(shí)現(xiàn)QQ好友、QQ空間亚茬、微信好友酪耳、朋友圈、微博、微博好友分享碗暗,如果讀者需要詳細(xì)了解分享的實(shí)現(xiàn)功能颈将,可以私聊評(píng)論,我看到會(huì)發(fā)實(shí)現(xiàn)Demo給你言疗,今天這里只描述報(bào)錯(cuò)問(wèn)題及其解決方法晴圾,或許我的下一篇文章會(huì)詳細(xì)介紹分享的實(shí)現(xiàn),需要了解的讀者可以多多關(guān)注噪奄。
? ? ? ? 好了死姚,廢話不多說(shuō),直接來(lái)一張圖:
沒(méi)錯(cuò)勤篮,就是如圖中顯示的報(bào)錯(cuò)信息都毒,拖入第三方后會(huì)有“l(fā)inker command failed with exit code 1 (use -v to see invocation)”這樣的錯(cuò)誤警告。筆者剛開(kāi)始也挺納悶的碰缔,都是按照標(biāo)準(zhǔn)的配置順序來(lái)集成的账劲,編譯的時(shí)候還是出現(xiàn)了問(wèn)題。在筆者的印象中出現(xiàn)這種錯(cuò)誤一般有幾種情況:
1金抡、重復(fù)引用一個(gè)類(lèi)文件兩次或者引入的一個(gè)類(lèi)與項(xiàng)目中存在的類(lèi)同名
如何解決這個(gè)問(wèn)題呢瀑焦?可在項(xiàng)目中找到下圖位置:
打開(kāi)箭頭所指的選項(xiàng),挨個(gè)查找是否有重名的類(lèi)文件竟终,如果有則刪除一個(gè)蝠猬。
2、Valid Architectures參數(shù)設(shè)置(缺少或增多)
Valid Architectures參數(shù)包括armv7,armv7s,i386, x86_64, arm64统捶,當(dāng)然在項(xiàng)目中不可能全部都用到榆芦,一般都是使用armv7,armv7s和arm64。所以關(guān)鍵來(lái)了喘鸟,根據(jù)iOS系統(tǒng)的不同匆绣,是否添加arm64是個(gè)問(wèn)題崎淳,如果需要就添加愕把,不需要就不要添加,否則會(huì)出現(xiàn)神經(jīng)刀嚣镜。
3橘蜜、Bitcode的設(shè)置,YES or NO
筆者所遇到的linker報(bào)錯(cuò)就是這個(gè)類(lèi)型的徽职,設(shè)置成為NO就編譯通過(guò)了佩厚。
何為bitcode可款,根據(jù)蘋(píng)果的官方介紹,bitcode是被編譯程序的一種中間形式的代碼筋讨。包含bitcode配置的程序?qū)?huì)在App store上被編譯和鏈接摸恍,bitcode允許蘋(píng)果在后期重新優(yōu)化程序的二進(jìn)制文件,而不需要重新提交一個(gè)新的版本到App store上壁袄∈嚷撸可能解釋的不夠明確缭召,那就來(lái)點(diǎn)通俗點(diǎn)的:
? ? ? ? 實(shí)際上,在Xcode 8中萄凤,我們新建一個(gè)iOS程序時(shí)搪哪,bitcode選項(xiàng)默認(rèn)是設(shè)置為YES的。我們可以在”Build Settings”->”Enable Bitcode”選項(xiàng)中看到這個(gè)設(shè)置惑朦。不過(guò)行嗤,我們現(xiàn)在需要考慮的是三個(gè)平臺(tái):iOS垛耳,Mac OS堂鲜,watchOS。對(duì)于iOS哥纫,bitcode是可選的痴奏;對(duì)于watchOS,bitcode是必須的擅憔;而Mac OS是不支持bitcode暑诸。所以辟灰,如果我們的工程需要支持bitcode,則必要要求所有引入的第三方庫(kù)都支持bitcode西采。
而筆者拖入的三個(gè)第三方继控,可能有不支持bitcode的,所以設(shè)置為NO就能編譯過(guò)了狱杰。
4仿畸、Other Linker Flags屬性設(shè)置
找到Build settings->Linking->Other Linker Flags朗和,將此屬性修改成-all_load或-ObjC,要根據(jù)項(xiàng)目的需要去選擇添加千埃。
5忆植、筆者V587
筆者已入坑,哈哈耀里。