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 ...
随机推荐
- RabbitMQ详解(下)
一:序 通过<RabbitMQ详解(上)>一文中,我们可以知道RabbitMQ的一些基本的原生用法,如交换机的创建及消息的投递,但是在企业中我们大部分都是把RabbitMQ集成到Sprin ...
- 小程序TS报错 "无法重新声明块范围变量。此处也声明了xx "
初学者简单的方法,目前还没有遇到问题 想法很简单,当export导出,骗eslint认为是一个模块. 如果有新的问题欢迎留言,我也在学习 1 import utilsApi from '../util ...
- MySQL(Zip版)安装配置
MySQL官网下载地址:MySQL 将压缩包内文件夹解压至任意目录,以mysql-5.7.40版本为例 第一步 添加环境变量 将mysql-5.7.40-winx64文件夹内的bin文件夹添加到环境变 ...
- 2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上。一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻
2022-12-28:有n个黑白棋子,它们的一面是黑色,一面是白色, 它们被排成一行,位置0~n-1上.一开始所有的棋子都是黑色向上, 一共有q次操作,每次操作将位置标号在区间[L,R]内的所有棋子翻 ...
- 2021-12-09:二叉树展开为链表。 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左
2021-12-09:二叉树展开为链表. 给你二叉树的根结点 root ,请你将它展开为一个单链表: 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左 ...
- Selenium - 元素操作(3) - 下拉框操作
Selenium - 元素操作 下拉框才做可以分为两类: select标签的下拉框:使用Select类进行操作: 非select标签的下拉框:一般是 ul,li, div 等标签组成,使用元素定位的方 ...
- values_list() 元组形式显示查询结果
values_list() 元组形式显示查询结果 name,age为数据库的两个列 Student.objects.values_list('name','age') values_list() 元组 ...
- 【Python】爬虫下载视频
Python爬虫下载视频 前言 这两天我一时兴起想学习 PS ,于是去我的软件宝库中翻出陈年已久的 PhotoshopCS6 安装,结果发现很真流畅诶! 然后去搜索学习视频,网上的视频大多浮躁,收费, ...
- ol设置最佳可视范围和限制缩放
目前随着科技发展,智慧城市的不断发展,GIS方面的技术也是层出不穷,如市场流行的 OPENLAYERS, CESIUM, THREE等,但是也会有很多棘手的问题,比如不同分辨率下,图层的显示范围,禁止 ...
- Jenkins(1)-安装教程
我用的服务器是阿里云服务器, 服务器系统: CentOS7.9, 不同的操作系统需要下载不同的软件包, 对应的链接如下https://www.jenkins.io/zh/download/ 1) 软件 ...