最近开始一个React Native的新项目。按惯例,在创建完项目后,先集成CodePush热更新功能。
这种活已经干过不止一两次了,当然没啥问题,直接上手开干。
可问题恰恰出在了本以为应该很顺利的地方。
首先,在用 cpcn-client 工具给项目安装 cpcn-react-native 包时,Android版一切正常,但iOS版却有个莫名其妙的什么unicode编码错误。
我的项目刚刚创建,还什么代码都没做改动,不可能是自己的代码的问题。
刚开始我猜测是网络的问题导致的,这种问题在开发过程中经常遇到。于是开启了XX上网方式,然后再试。可问题依旧。
可之前的项目中没遇到过这种情形啊。于是我想试试旧项目会不会有这种情况发生。
打开一个旧项目,为了安全起见,特意将旧项目复制到了一个新的文件夹进行试验。用 cpcn-client 工具给项目重新安装 cpcn-react-native 包。一切正常!这也太奇怪了!
至此,不得不仔细查看 cpcn-client 打印出来的日志。从如天书一般的日志中大致可得知,cpcn-react-native 包实际上已经安装了,是在执行 pod install 时失败了。
既然是这样,那我试试不用 cpcn-client 工具,直接在命令行中执行此操作看看。
于是在项目根目录下执行以下命令:
npx pod-install
怀着忐忑的心情等待。。。。
然后,成功了!
好吧。问题虽然解决了,但我并不知道是什么原因造成的。对比新项目与旧项目,因为旧项目是较早之前创建的,用的React Native的版本是0.6x,而新项目的版本是0.7x。所以,我猜测这问题是由于React Native的版本不同导致的。
这个问题虽然解决了,但马上遇到了另一个问题。
在测试热更新功能是否可用时,又是iOS版,在 cpcn-client 上点击“发布新版本”时,日志栏中提示以下错误:
"CFBundleShortVersionString" key needs to specify a valid semver string
从错误日志来看,应该是版本号的问题。这个问题在以前的项目中同样没有遇到过。不得不说React Native就是坑多!抱怨归抱怨,还是得想办法解决问题。
打开 XCode,给项目重新设了个版本号“1.0.1”,回到 cpcn-client ,再次点击“发布新版本”,问题依旧!
可从错误日志来看,确实是版本号的问题啊。
那么,现在这个 “CFBundleShortVersionString” 的值究竟是什么呢?
打开 /ios/项目名/info.plist ,发现 “CFBundleShortVersionString” 的值是 “$(MARKETING_VERSION)” 。那么问题很可能出在这里。cpcn-client 可能将它当成了一个字符串,而不是一个变量。
于是用 “1.0.1” 替换掉 “$(MARKETING_VERSION)” 。
回到 cpcn-client ,再次点击“发布新版本”,正常了!
=================
以上就是最近在新项目中集成 CodePush 热更新时遇到的坑,以及折腾过程。而这些坑在之前却没遇到过。
这一圈折腾下来,整整花了我一天的时间!
希望这篇文章对其他开发者能有帮助,少点折腾的时间。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容