iOS開發(fā)之導(dǎo)入第三方SDK后出現(xiàn)linker報(bào)錯(cuò)

? ? ? ? 今天筆者在實(shí)現(xiàn)一個(gè)分享功能時(shí),沒有使用cocoapods安裝第三方,直接采用拖入的方式加入的第三方SDK。分享功能沒有使用友盟,而是直接使用第三方軟件自帶的分享SDK:

圖片中的三個(gè)SDK基本能實(shí)現(xiàn)QQ好友、QQ空間、微信好友、朋友圈、微博、微博好友分享,如果讀者需要詳細(xì)了解分享的實(shí)現(xiàn)功能,可以私聊評論,我看到會發(fā)實(shí)現(xiàn)Demo給你,今天這里只描述報(bào)錯(cuò)問題及其解決方法,或許我的下一篇文章會詳細(xì)介紹分享的實(shí)現(xiàn),需要了解的讀者可以多多關(guān)注。

? ? ? ? 好了,廢話不多說,直接來一張圖:

沒錯(cuò),就是如圖中顯示的報(bào)錯(cuò)信息,拖入第三方后會有“l(fā)inker command failed with exit code 1 (use -v to see invocation)”這樣的錯(cuò)誤警告。筆者剛開始也挺納悶的,都是按照標(biāo)準(zhǔn)的配置順序來集成的,編譯的時(shí)候還是出現(xiàn)了問題。在筆者的印象中出現(xiàn)這種錯(cuò)誤一般有幾種情況:

1、重復(fù)引用一個(gè)類文件兩次或者引入的一個(gè)類與項(xiàng)目中存在的類同名

如何解決這個(gè)問題呢?可在項(xiàng)目中找到下圖位置:

打開箭頭所指的選項(xiàng),挨個(gè)查找是否有重名的類文件,如果有則刪除一個(gè)。

2、Valid Architectures參數(shù)設(shè)置(缺少或增多)

Valid Architectures參數(shù)包括armv7,armv7s,i386, x86_64, arm64,當(dāng)然在項(xiàng)目中不可能全部都用到,一般都是使用armv7,armv7s和arm64。所以關(guān)鍵來了,根據(jù)iOS系統(tǒng)的不同,是否添加arm64是個(gè)問題,如果需要就添加,不需要就不要添加,否則會出現(xiàn)神經(jīng)刀。

3、Bitcode的設(shè)置,YES or NO

筆者所遇到的linker報(bào)錯(cuò)就是這個(gè)類型的,設(shè)置成為NO就編譯通過了。

何為bitcode,根據(jù)蘋果的官方介紹,bitcode是被編譯程序的一種中間形式的代碼。包含bitcode配置的程序?qū)贏pp store上被編譯和鏈接,bitcode允許蘋果在后期重新優(yōu)化程序的二進(jìn)制文件,而不需要重新提交一個(gè)新的版本到App store上。可能解釋的不夠明確,那就來點(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è)置。不過,我們現(xiàn)在需要考慮的是三個(gè)平臺:iOS,Mac OS,watchOS。對于iOS,bitcode是可選的;對于watchOS,bitcode是必須的;而Mac OS是不支持bitcode。所以,如果我們的工程需要支持bitcode,則必要要求所有引入的第三方庫都支持bitcode。

而筆者拖入的三個(gè)第三方,可能有不支持bitcode的,所以設(shè)置為NO就能編譯過了。

4、Other Linker Flags屬性設(shè)置

找到Build settings->Linking->Other Linker Flags,將此屬性修改成-all_load或-ObjC,要根據(jù)項(xiàng)目的需要去選擇添加。

5、筆者V587

筆者已入坑,哈哈。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容