IOS開發——引入framework報錯referenced from的解決辦法
今天項目需要引入百度錢包的SDK,需要將百度提供的靜態庫(framework)拖進項目里。如圖所示:
我把它放到了項目里vender/BaiDu文件夾下,然後編譯報錯,如圖所示:
在此之前,已經按照百度錢包SDK接入文檔把相應的一些配置做好了。
一、遇到這種問題,首先檢查是不是系統在編譯階段無法搜索到這個framework並編譯,這需要按下圖,配置一些東西,告訴xcode到哪裡去找這個framework
根據實際情況,填入路徑,因為我是放在vender/BaiDu,所以填法如圖
二、再檢查Build Phases里的Link Binary With Libraries里,有沒有加入這個靜態庫,如果沒有,點擊+號,彈出一個對話框,點擊add other,找到那個framework,加進來。然後,再此編譯,看看是否還報錯。
三、重點
我的錯誤仍然在,說明不是因為找不到靜態庫,而是編譯靜態庫里的東西時,出了錯誤,那麼我們回到錯誤本身,如圖所示
它的意思是,1這個文件里使用2這個東西報了錯。然後我進入這個framework里看,確實存在BaiduWallet_Protal這個文件,說明很可能在這文件裡面,用到了MFMessageComposeViewController。
這極有可能是MFMessageComposeViewController是某個三方框架里的東西,或者是ios官方某個框架里的東西,由於我已經按照接入文檔把百度SDK需要的三方庫全部導入了,所以排除第一項,然後我去百度「MFMessageComposeViewController」,得出結論,這個東西依賴一個靜態庫messageUI.framework,然後,與上文第二步的方法類似,添加這個靜態庫,如圖
再編譯,發現對應那一行的錯誤已經不見了
還剩下兩個錯,同理。研究發現JSValue和JSContext是依賴JavaScriptCore.framework的東西,所以,把JavaScriptCore.framework添加進工程,再次編譯,就沒有錯誤了。
備註:
1、如果導入sdk時有demo,可以關注關注demo里引入了哪些靜態庫,或者說引入了哪些框架,通常demo是純凈的不會引入一些無關的東西,所以如果你的工程報錯,可以走捷徑,先看看是不是demo里有的框架或者靜態庫,你沒有。
2、一二步驟,是基於導入靜態庫時出錯需要做的事。如果你報錯的場景與我不同,可以重點關注三的思路。希望對您有幫助!
※索尼終於發布一款正常的機皇,價格實惠
※那些吸引人的廣告,我怎麼就全信了
※Linux版「永恆之藍」來襲 360發布Samba漏洞警報
※真正的黑科技,有了它終於可以跟貼膜說拜拜了!也不用擔心手機會碎屏!
※除了《勇者斗惡龍》新手游之外,Square Enix刻期還正式發售了《乖離性百萬亞瑟王VR》
TAG:安卓網 |
※引入Skaffold:簡單且可重複的Kubernetes開發
※WOAW 引入 Daily Paper 最新「Transcend Borders」系列
※Opera 62發布:引入Task Completer新工具 改善Dark模式
※Hiddentag引入海外備受追捧的品牌「the skin face」新
※厲害了wuli微軟 要將 Linux 引入 Windows Store
※微軟正在為Office測試Home Place Banner 引入更多通知和交互內容
※Antilatency將6DoF VR引入Oculus Go
※Chrome OS即將引入虛擬桌面功能 名為「Virtual Desks」
※Fuchsia中代號為Armadillo引入新的系統UI
※Adobe為Premiere Rush CC引入視頻變速工具
※Google引入新文件分享工具Fast Share,或為AirDrop有力競爭者
※谷歌將Chrome引入VR頭盔Daydream
※谷歌希望將類iPhone Face ID的功能引入Android
※Windows 10引入Windows Sandbox沙盒子系統
※谷歌為Chrome for Android引入更方便的多標籤頁瀏覽功能
※蘋果或將Imagination光線跟蹤IP引入未來的5G iPhone
※Facebook Messenger更新:自動翻譯外語 引入AR體驗
※女權當道!Marvel Studios 計劃將《Ms. Marvel》都引入 MCU
※Chrome OS 68穩定版引入Material Design 2.0元素
※VSCode 引入 Python 語言伺服器;Canonical 請求幫助測試 Ubuntu 伺服器安裝程序