一、安装codepush服务

npm install code-push-cli -g
code-push -v

二、创建codepush账号

code-push register
code-push login
code-push logout

三.添加应用

Usage: code-push app add <appName> <os> <platform>

选项:
-v, --version 显示版本号 [布尔]

示例:
app add MyApp ios react-native Adds app "MyApp", indicating that it's an iOS React Native app
app add MyApp windows react-native Adds app "MyApp", indicating that it's a Windows React Native app
app add MyApp android cordova Adds app "MyApp", indicating that it's an Android Cordova app

四.查看和删除应用

code-push app list
code-push app remove

五.集成codepush sdk

1.npm install --save react-native-code-push

六.配置ios和android

1.安装rnpm
npm i -g rnpm
2.链接
rnpm link react-native-code-push
中途输入2个enter

3.配置android

只要把本地的服务器和端口随便填一个就能从codepush获得最新代码了

4.配置ios
1.单击项目->PROJECT->info->configurations里面点击加号->添加一个duplicate release->名称为Staging
2.选中build settings->加号->user-defined setting->输入CODEPUSH_KEY->去命令行查code-push deployment ls -k tk_ios,接着输入key->
debug和staging 设置成一样的。
3.打开info.plist的Codepushdeploymentkey的内容为$(CODEPUSH_KEY)
4.查看appdelegate,发现多了一段代码,判断开发环境和生产环境的
#ifdef DEBUG
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
#else
jsCodeLocation = [CodePush bundleURL];
#endif

七.使用codepush进行热更新
1.设置更新策略,什么时候进行更新
下面是加载就更新的例子
1.1导入codepush
import codePush from 'react-native-code-push'
1.2 在componentDidMount 中调用codePush.sync();

2.发布更新

1.发布测试

code-push release-react tk_ios ios --t 1.0.0 --dev false --d Staging --des "1.改变背景为红色" --m true
code-push release-react tk_android android --t 1.0.0 --dev false --d Staging --des "1.超大字体" --m true

2.发布生产环境

2.1安卓
code-push release-react tk_android android --t 1.0.0 --dev false --d Production --des "1.修复搜索页返回bug" --m true
2.2 ios
code-push releaselease-react tk_ios ios --t 1.0.0 --dev false --d Production --des "1.修复搜索页返回bug" --m true

--t 版本
--dev 是否启用开发者模式
--d Production ,Staging是生产环境还是测试环境
--des 更新说明
--m 强制更新

查询更新
code-push deployment ls tk_ios
code-push deployment ls tk_android

查询历史
code-push deployment history tk_android Production
code-push deployment history tk_android Staging

3.测试
1.需要要ios的js打包,放到xcode,要不然每次都是本地直接更新了
react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output release_ios/main.jsbundle --assets-dest release_ios/
2.把打包的拉倒xcode,不要copy needed
3.去appdelegate里面 设置jsCodeLocation = [CodePush bundleURL];,把其他注释掉

查看push的版本

code-push deployment history tk_android Production

安卓的打包

1.在项目根目录执行
React-native bundle --entry-file index.android.js --bundle-output ./android/app/src/main/assets/index.android.jsbundle --platform android --assets-dest ./android/app/src/main/res/ --dev false

2.在项目根目录执行

cd android && ./gradlew assembleRelease

http://www.devio.org/2016/07/23/react-native-%E5%8F%91%E5%B8%83APP%E4%B9%8B%E7%AD%BE%E5%90%8D%E6%89%93%E5%8C%85APK/

问题:Couldn't follow symbolic link
1.https://juejin.im/post/599bcdaf518825242927bd1b
2.https://github.com/facebook/react-native/issues/11212

问题:Duplicate file 安卓打包的时候出现

1.解决方法是把$(rn_project)\android\app\src\main\res文件夹下的带有drawable-xxxx的文件夹删掉就可以了

问题:null is not an object(evaluating _this3._foot.setNativeProps)

问题:can only update a mounted or mounting component, this usually means you called setstate on an unmounted component
https://www.cnblogs.com/zyl-Tara/p/7998590.html

https://www.jianshu.com/p/a9d1f5aa719a

问题:安卓隐藏底部bar
https://stackoverflow.com/questions/32704336/how-to-access-activity-from-a-react-native-android-module

问题:Only the original thread that created a view hierarchy can touch its views

https://developer.android.com/training/system-ui/navigation.html

问题:如何修改安卓的包名

进入 Androidmanifest.xml 文件,找到 package 名称,选中需要修改的部分。
比如原包名为
com.faqiang.android
如果需要修改中间的 faqiang ,那么我们就选中 faqiang ,
依次进行 右键 - > Refactor -> Rename , (Mac 快捷键为 fn + shift+F6)
然后选择 Rename package , 输入要修改目标的名称 ,直接点击 Refactor , 左下方继续点击 Do Refactor , 等待修改成功~!

问题:cannot add a child that doesn't have a yoganode to a parent without a message function()

http://www.mianbeian.org/

react native 热更新的更多相关文章

  1. React Native热更新(iOS)-Pushy

    React Native的出现,使的开发iOS代码出现了更便捷的方式.由于RN是使用脚本语言编写的,实现了"解释执行"的方式,而这种执行方式的修改只需替换脚步即可,不需要重新发布程 ...

  2. iOS 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  3. react-native热更新之CodePush详细介绍及使用方法

    react-native热更新之CodePush详细介绍及使用方法 2018年03月04日 17:03:21 clf_programing 阅读数:7979 标签: react native热更新co ...

  4. 写给iOS开发者的React Native学习路线(转)

    我是一名iOS开发者,断断续续一年前开始接触React Native,最近由于工作需要,专职学习React Native也有一个多月了.网络上知识资源非常的多,但能让人豁然开朗.迅速学习的还是少数,我 ...

  5. 🙈 如何隐藏你的热更新 bundle 文件?

    如果你喜欢我写的文章,可以把我的公众号设为星标 ,这样每次有更新就可以及时推送给你啦. 前段时间我们公司的一个大佬从一些渠道得知了一些小道消息,某国民级 APP 因为 Apple App Store ...

  6. React Native环境配置和简单使用

    # 前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会 ...

  7. React Native实践之携程Moles框架

    编者:本文来自携程框架研发部高级经理魏晓军在第二期[携程技术微分享]上的分享,以下为整理后的文字实录.视频回放可点击这里.关注携程技术中心微信公号ctriptech,可获知更多微分享课程信息. 因为支 ...

  8. RN学习1——前奏,app插件化和热更新的探索

    react_native_banner-min.png React Native(以下简称RN)有大量前端开发者的追捧.前端开发是一个活跃的社区,一直尝试着一统前后端,做一个全栈开发,RN就是他们在客 ...

  9. 搭建带热更新功能的本地开发node server

    引言 使用webpack有一段时间了,对其中的热更新的大概理解是:对某个模块做了修改,页面只做局部更新而不需要刷新整个页面来进行更新.这样就能节省因为整个页面刷新所产生开销的时间,模块热加载加快了开发 ...

随机推荐

  1. adb shell top 命令详解

    [?25l[0m[H[J 当前系统时间 Tasks: 552 total, 1 running, 510 sleeping, 0 stopped, 0 zombie 任务(进程) 系统现在共有552个 ...

  2. redis 为什么快

    redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大. 不过,因为一般的内存操作都是简单存取操作,线程占用时间相对较短,主要问题在io上,因此,redis这种模型是 ...

  3. K-means + PCA + T-SNE 实现高维数据的聚类与可视化

    使用matlab完成高维数据的聚类与可视化 [idx,Centers]=kmeans(qy,) [COEFF,SCORE,latent] = pca(qy); SCORE = SCORE(:,:); ...

  4. 微软职位内部推荐-Software Engineer II-Data Mining

    微软近期Open的职位: Are you looking for a big challenge? Do you know why Big Data is the next frontier for ...

  5. Amazon Seller Central is Temporarily Unavailable

    Seller Central is Temporarily Unavailable We apologize for the inconvenience. Our technical staff is ...

  6. Seven super tips for successful selling on Amazon

    Check for orders daily: To ship quickly you need to find out about orders promptly. We will e-mail y ...

  7. 转载笔记:DropDownList无限级分类(灵活控制显示形式)

    主要使用递归实现,数据库结构: 最终样式:  1protected void Page_Load(object sender, EventArgs e) 2    { 3        if (!Pa ...

  8. rest_framework之渲染器

    渲染器简介 什么是渲染器 根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件. 渲染器的作用 序列化.友好的展示数据 渲染器配置 首先要在settins.py中将rest_framew ...

  9. 动态规划——最长公共子序列LCS及模板

    摘自 https://www.cnblogs.com/hapjin/p/5572483.html 这位大佬写的对理解DP也很有帮助,我就直接摘抄过来了,代码部分来自我做过的题 一,问题描述 给定两个字 ...

  10. OpenCV学习笔记——图像平滑处理

    1.blur 归一化滤波器Blurs an image using the normalized box filter.C++: void blur(InputArray src, OutputArr ...