swift集成WeexSDK踩过的坑

我记得我们在2017年的下半年的时候开始接触的阿里巴巴的weex,由于当时大家都是从0到1的过程,当时大家都很信心饱满,毕竟接触跨平台,对大家也是一种提升,当然在学习的时候也踩了不少的坑,不过最后大家都熬过来了,踩过这些坑后,用起来也挺舒服,有时候我还一度觉得,这weex写起来太爽了,连OC都不想写了,觉得OC有时候还没有weex方便简单,但是weex在某些方面还是不如OC原生的。

当时我们接入跨平台weex的时候就调研过,weex不能兼容swift,所以项目是swift的话是不能用weex,所以当时也没有关心swfit兼容weex的问题,但是在今年我们公司新成立了一个项目,整个项目都是用的swift写的,然后兼容部分OC的代码,同时也发现weex官网上更新,说明weex可以兼容swift了(https://weex.apache.org/zh/guide/extend/extend-ios-with-swift.html#使用-swift-扩展-weex),好嘛,既然weex可以兼容swift了,那我们就赶紧集成吧,不集成还好,一集成,问题就出现了,下面就给大家分享一下在集成过程中碰到的一些坑。

1.首先因为我们之前集成过兼容OC的WeexSDK,所以我们也按照weex官方文档集成我们之前扩展过的WeexSDK

通过pod方式下载SDK库以后,command + B执行编译结果报错了如图

总共出现了3个报错

第一个问题:说WXJSASTParser.h中引用的 #include 找不到了,这个问题为啥找不到了呢? #include是在程序编译之前要处理的内容,与字符串的调用有关,但是在swift项目里已经没有这个库,也就是说swift官方废弃了这个库用了别的代替。

第二个问题:说的是error:could not build module 'CKKWeexSDK'找不到这个库,我们的项目pod的时候设置成自动管理路径的,为什么找不到很是奇怪。

第三个问题:说的是桥接文件报错了,因为swift混编OC 的项目,swift想调用OC 的方法或者对象时,需要把OC的相关类暴露给swift,需要在XXXX +-Bridging-Header.h文件里声明一下,但是我们已经在桥接文件里引用声明了。

这三个问题,我们在网上查阅了一些资料,网上的解决方法我们都试过了,还是不能解决,在看了weex官网上的文档,发现weex官网上任何相关的错误解决方法都没有提到,所以这让我们更加茫然了。

这几个问题一时解决不了,而且项目提测在即,在想着项目提测的优先的前提下,我们换了解决问题的思路,我们考虑是不是weex版本的问题,而现在weex官网的SDK版本已经更新了好几个版本了,想到这里我们就打算用官网提供的版本试试。

pod成功后继续command + B执行编译还是报错如图

这次是WeexSDK里面的两个库找不到,这次报错的和第一次的还不一样,但是发现桥接文件不报错了,很是神奇,路径也没问题,就是找不到,那怎么办,最后我们想,如果把SDK里引用不到的.h文件拿出来,直接放到项目里是不是就能解决这个问题了,想到这里,心里有一点点小激动,说干就干,把上面图里的两个.h文件拖拽出来放在文件里,然后在用到的类里引用一些,再次command + B执行编译,这时候心里有点点小紧张啊,等了估计几分钟,perfect!!!编译成功了,一阵激动啊,差点就因为这个问题影响了项目提测了。

虽然问题解决了,但是我们知道这种解决方法是比较暴力的,也不是最优的选择,只是为了保证项目能够顺利提测,不影响上线,暂时采用了这种流氓的解决方法,后续有时间在彻底研究解决这个问题。

最后总结一下:在整个问题解决的过程中,主要最坑的是weex官网上没有想过问题解决提示,文档写的太过于简单,希望weex官方能够完善,这样有助于开发人员能够更好的集成weex,在集成的过程中我们最好把官方的SDK下载下来,放在我们的自己的私有库里,这样我们可以根据项目的特殊性去做相应的扩展,我们只需要定期把weex官方的最新SDK更新到我们的私有库就可以了。

你可能感兴趣的:(swift集成WeexSDK踩过的坑)