React Native集成CodePush热更新遇到的坑,以及折腾过程。"CFBundleShortVersionString" key needs to specify a valid semver string
最近开始一个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 热更新时遇到的坑,以及折腾过程。而这些坑在之前却没遇到过。
这一圈折腾下来,整整花了我一天的时间!
希望这篇文章对其他开发者能有帮助,少点折腾的时间。
React Native集成CodePush热更新遇到的坑,以及折腾过程。"CFBundleShortVersionString" key needs to specify a valid semver string的更多相关文章
- React Native拆包及热更新方案 · Solartisan
作者:solart 版权声明:本文图文为博主原创,转载请注明出处. 随着 React Native 的不断发展完善,越来越多的公司选择使用 React Native 替代 iOS/Android 进行 ...
- React Native之code-push的热更新(ios android)
React Native之code-push的热更新(ios android) React Native支持大家用React Native技术开发APP,并打包生成一个APP.在动态更新方面React ...
- CodePush热更新组件详细接入教程
CodePush热更新组件详细接入教程 什么是CodePush CodePush是一个微软开发的云服务器.通过它,开发者可以直接在用户的设备上部署手机应用更新.CodePush相当于一个中心仓库,开发 ...
- Angular团队公布路线图,并演示怎样与React Native集成
本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2015/06/angular-2-react-native-roadmap 前不久在旧 ...
- 将React Native集成至Android原生应用
将React Native集成至Android原生应用 Android Studio 2.1 Preview 4生成的空项目 react-native 环境 0.22.2 初次编译后apk有1.1M, ...
- 将React Native 集成进现有OC项目中(过程记录) 、jsCodeLocation 生成方式总结
将RN集成到现有OC项目应该是最常见的,特别是已经有OC项目的,不太可能会去专门搞个纯RN的项目.又因为RN不同版本,引用的依赖可能不尽相同,所以特别说明下,本文参考的文档是React Native ...
- React Native集成Redux框架讲解与应用
学过React Native的都知道,RN的UI是根据相应组件的state进行render的,而页面又是由大大小小的组件构成,导致每个组件都必须维护自身的一套状态,因此当页面复杂化的时候,管理stat ...
- React Native for Android 热部署图片自己定义方案
情景 热部署时,我们期望升级包中包括js代码与图片资源. bundle的热部署网上已经有两种方案了,一种是用反射,一种是利用RN自带函数.将bundle初始化时直接放到指定文件夹下,之后通过替换bun ...
- React Native错误汇总(持续更新)
错误1 Element type is invalid-: 错误描述: Element type is invalid: expected a String(for built-in componen ...
- 谈谈React Native环境安装中我遇到的坑
谈谈React Native环境安装 这个坑把我困了好久,真的是接近崩溃的边缘...整理出来分享给大家,希望遇到跟我一样问题的小伙伴能尽快找到答案. 首先,这是在初始化App之后,react-nati ...
随机推荐
- 06-打包html资源
/** * loader:1. 下载 2. 使用(配置loader) * plugins:1. 下载 2. 引入 3. 使用 */ const { resolve } = require('path' ...
- 笔记:C++学习之旅 ---string 类、vector和迭代器
string 类 #include <iostream> #include <string> using namespace std; int main() { ...
- ECharts 环形饼图配置
官网文档:https://echarts.apache.org/zh/option.html#series-pie.type 使用案例指导:https://echarts.apache.org/zh/ ...
- Pillow + pytesseract + tesseract-ocr 破解简单的图形验证码
前言: 我们在做WEB UI自动化测试时,会遇到一些图形验证码,今天就来简单介绍下,如何来识别简单的图形验证码. 一.安装 ◇ Pillow pip3 install Pillow ◇ pytesse ...
- 是时候,升级你的 Windows 了「GitHub 热点速览」
不知道多少小伙伴用着 Windows 操作系统,可能会有一个烦恼是有时候操作系统过慢,因为众多拖慢 Windows 系统的组件.Atlas 作为一个修改版的 Windows 系统,能极大提高操作系统运 ...
- 读《图解HTTP》
最近读了一本书<图解HTTP>,读完后在大体上对HTTP协议有了更深层次的了解.以下是我以前不懂的问题,通过阅读此书后,这些问题都有了答案: 问题: URI和URL的区别? cookie到 ...
- 2021-01-06:mysql中,我存十亿个手机号码,考虑存储空间和查询效率,用什么类型的字段去存?
福哥答案2021-01-06: [答案来自此链接:](https://www.zhihu.com/question/438078173)首先提出假设:考虑一下这几个问题:手机号码都是数字吗?都是中国的 ...
- 安装vue cli3以及配置环境 镜像下载
安装vue cli3以及配置环境 镜像下载 1.下载安装Node.js 安装vue cli3之前需要先安装Node.js,方便对vue进行下载 node.js的下载与安装方法在隔壁哟 地址:https ...
- Python对word文档重排版
介绍 舍友从网上下载的word题库文档很乱,手动改了大半天才改了一点,想起python是大名鼎鼎的自动化脚本,于是乎开始了python对word的一顿瞎操作. 分析需求 对文档中的内容进行分析,只留下 ...
- AcWing 423. 采药
辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师. 为此,他想拜附近最有威望的医师为师. 医师为了判断他的资质,给他出了一个难题. 医师把他带到一个到处都是草药的山洞里对他说:"孩子 ...