我記得我們?cè)?017年的下半年的時(shí)候開(kāi)始接觸的阿里巴巴的weex揩尸,由于當(dāng)時(shí)大家都是從0到1的過(guò)程宛渐,當(dāng)時(shí)大家都很信心飽滿(mǎn)界斜,畢竟接觸跨平臺(tái)仿耽,對(duì)大家也是一種提升,當(dāng)然在學(xué)習(xí)的時(shí)候也踩了不少的坑各薇,不過(guò)最后大家都熬過(guò)來(lái)了项贺,踩過(guò)這些坑后,用起來(lái)也挺舒服峭判,有時(shí)候我還一度覺(jué)得开缎,這weex寫(xiě)起來(lái)太爽了,連OC都不想寫(xiě)了林螃,覺(jué)得OC有時(shí)候還沒(méi)有weex方便簡(jiǎn)單奕删,但是weex在某些方面還是不如OC原生的。
當(dāng)時(shí)我們接入跨平臺(tái)weex的時(shí)候就調(diào)研過(guò)疗认,weex不能兼容swift完残,所以項(xiàng)目是swift的話(huà)是不能用weex伏钠,所以當(dāng)時(shí)也沒(méi)有關(guān)心swfit兼容weex的問(wèn)題,但是在今年我們公司新成立了一個(gè)項(xiàng)目谨设,整個(gè)項(xiàng)目都是用的swift寫(xiě)的熟掂,然后兼容部分OC的代碼,同時(shí)也發(fā)現(xiàn)weex官網(wǎng)上更新扎拣,說(shuō)明weex可以兼容swift了(https://weex.apache.org/zh/guide/extend/extend-ios-with-swift.html#使用-swift-擴(kuò)展-weex),好嘛赴肚,既然weex可以兼容swift了,那我們就趕緊集成吧二蓝,不集成還好誉券,一集成,問(wèn)題就出現(xiàn)了侣夷,下面就給大家分享一下在集成過(guò)程中碰到的一些坑横朋。
1.首先因?yàn)槲覀冎凹蛇^(guò)兼容OC的WeexSDK,所以我們也按照weex官方文檔集成我們之前擴(kuò)展過(guò)的WeexSDK
通過(guò)pod方式下載SDK庫(kù)以后,command + B執(zhí)行編譯結(jié)果報(bào)錯(cuò)了如圖
總共出現(xiàn)了3個(gè)報(bào)錯(cuò)
第一個(gè)問(wèn)題:說(shuō)WXJSASTParser.h中引用的 #include<string> 找不到了百拓,這個(gè)問(wèn)題為啥找不到了呢琴锭??#include<string>是在程序編譯之前要處理的內(nèi)容,與字符串的調(diào)用有關(guān)衙传,但是在swift項(xiàng)目里已經(jīng)沒(méi)有這個(gè)庫(kù)决帖,也就是說(shuō)swift官方廢棄了這個(gè)庫(kù)用了別的代替。
第二個(gè)問(wèn)題:說(shuō)的是error:could not build module 'CKKWeexSDK'找不到這個(gè)庫(kù)蓖捶,我們的項(xiàng)目pod的時(shí)候設(shè)置成自動(dòng)管理路徑的地回,為什么找不到很是奇怪。
第三個(gè)問(wèn)題:說(shuō)的是橋接文件報(bào)錯(cuò)了俊鱼,因?yàn)閟wift混編OC 的項(xiàng)目刻像,swift想調(diào)用OC 的方法或者對(duì)象時(shí),需要把OC的相關(guān)類(lèi)暴露給swift并闲,需要在XXXX?+-Bridging-Header.h文件里聲明一下尖淘,但是我們已經(jīng)在橋接文件里引用聲明了齿税。
這三個(gè)問(wèn)題咧党,我們?cè)诰W(wǎng)上查閱了一些資料风罩,網(wǎng)上的解決方法我們都試過(guò)了,還是不能解決犀填,在看了weex官網(wǎng)上的文檔蠢壹,發(fā)現(xiàn)weex官網(wǎng)上任何相關(guān)的錯(cuò)誤解決方法都沒(méi)有提到,所以這讓我們更加茫然了九巡。
這幾個(gè)問(wèn)題一時(shí)解決不了图贸,而且項(xiàng)目提測(cè)在即,在想著項(xiàng)目提測(cè)的優(yōu)先的前提下,我們換了解決問(wèn)題的思路求妹,我們考慮是不是weex版本的問(wèn)題乏盐,而現(xiàn)在weex官網(wǎng)的SDK版本已經(jīng)更新了好幾個(gè)版本了佳窑,想到這里我們就打算用官網(wǎng)提供的版本試試制恍。
pod成功后繼續(xù)command + B執(zhí)行編譯還是報(bào)錯(cuò)如圖
這次是WeexSDK里面的兩個(gè)庫(kù)找不到,這次報(bào)錯(cuò)的和第一次的還不一樣神凑,但是發(fā)現(xiàn)橋接文件不報(bào)錯(cuò)了净神,很是神奇,路徑也沒(méi)問(wèn)題溉委,就是找不到鹃唯,那怎么辦,最后我們想瓣喊,如果把SDK里引用不到的.h文件拿出來(lái)坡慌,直接放到項(xiàng)目里是不是就能解決這個(gè)問(wèn)題了,想到這里藻三,心里有一點(diǎn)點(diǎn)小激動(dòng)洪橘,說(shuō)干就干,把上面圖里的兩個(gè).h文件拖拽出來(lái)放在文件里棵帽,然后在用到的類(lèi)里引用一些熄求,再次command + B執(zhí)行編譯,這時(shí)候心里有點(diǎn)點(diǎn)小緊張啊逗概,等了估計(jì)幾分鐘弟晚,perfect!S馍弧卿城!編譯成功了,一陣激動(dòng)啊铅搓,差點(diǎn)就因?yàn)檫@個(gè)問(wèn)題影響了項(xiàng)目提測(cè)了瑟押。
雖然問(wèn)題解決了,但是我們知道這種解決方法是比較暴力的狸吞,也不是最優(yōu)的選擇勉耀,只是為了保證項(xiàng)目能夠順利提測(cè),不影響上線(xiàn)蹋偏,暫時(shí)采用了這種流氓的解決方法便斥,后續(xù)有時(shí)間在徹底研究解決這個(gè)問(wèn)題。
最后總結(jié)一下:在整個(gè)問(wèn)題解決的過(guò)程中威始,主要最坑的是weex官網(wǎng)上沒(méi)有想過(guò)問(wèn)題解決提示枢纠,文檔寫(xiě)的太過(guò)于簡(jiǎn)單,希望weex官方能夠完善黎棠,這樣有助于開(kāi)發(fā)人員能夠更好的集成weex晋渺,在集成的過(guò)程中我們最好把官方的SDK下載下來(lái)镰绎,放在我們的自己的私有庫(kù)里,這樣我們可以根據(jù)項(xiàng)目的特殊性去做相應(yīng)的擴(kuò)展木西,我們只需要定期把weex官方的最新SDK更新到我們的私有庫(kù)就可以了畴栖。