android rn热更新闪退,rn之热更新--android

CodePush是微软提供的一套用于热更新 React Native 和 Cordova 应用的服务。CodePush 是提供给 React Native 和 Cordova 开发者直接部署移动应用更新给用户设备的云服务。CodePush 作为一个中央仓库,开发者可以推送更新 (JS, HTML, CSS and images),应用可以从客户端 SDK 里面查询更新。CodePush 可以让应用有更多的可确定性,也可以让你直接接触用户群。在修复一些小问题和添加新特性的时候,不需要经过二进制打包,可以直接推送代码进行实时更新。

GitHub

##安装CodePush客户端与注册账号

npm install -g code-push-cli

code-push -v    //查看版本

code-push -help  //使用帮助

code-push register   //会跳出网站,注册账号或授权登陆并得到access key

将获取到的access key黏贴在控制台后会提示Successfully logged-in成功登录。

其他的一些命令:

code-push logout  //退出登录

code-push login     //登录

code-push access-key ls  //列出登陆的token

code-push access-key rm   //删除某个 access-key

##往CodePush服务器端添加app

code-push app add [app名称]   ios/android  react-native

其他的一些命令:

code-push app remove [app名称]  //从服务器删除某个app

code-push app rename  当前的名字    新的名字  /  /重命名服务器某个app名字

code-push app list    //列出服务器账号下的所有app

注意:一个app名字对应两个部署环境:生产环境Production  模拟或演示环境Staging

##Android集成CodePush、打包、发布更新

npm install --save react-native-code-push@latest

其他命令:

//查询部署环境的key也是一个app对应两个:(Deployment Key 和Staging key)

code-push deployment ls   app名字  -k

链接原生库

react-native link react-native-code-push

此时会提示你输入deployment key或按回车忽略(如图):

0818b9ca8b590ca3270a3433284dd417.png

我们新建一个控制台来获取deployment key

此时我们进入项目更路先输入没有带-k的查询部署环境的key,等出来后在输入带-k的查询部署环境的key

code-push deployment ls   app名字

code-push deployment ls   app名字  -k

调试的话我们用Staging的这个演示环境的key,否则我们用deployment key

copy到我们刚刚提示输入deployment key那个控制台.

使用

基本用法

import codePush from "react-native-code-push";

//这是你的组建

class MyApp extends Component {

}

MyApp = codePush(MyApp);    //写在你的class类外面,其中MyApp对应你的组建类名

具体用法查看GitHub中的Plugin Usage

Releasing Updates发布更新

命令:    code-push release-react

比如:    code-push release-react   AppName  android

##Multi-Deployment Testing 多环境部署测试的步骤

客户端的回滚机制可以导致服务器端的回滚:code-push rollback

注意:以下多环境测试的4个步骤不需要执行

1.发布更新到Staging环境:code-push release-react

2.运行Staging版app,同步更新,验证其是否正常工作

3.从演示环境推进到生产环境:code-push promote

4.运行Production版app,同步更新,验证其是否正常工作

重点:下面是整合第2步和第4步

我们注意到第2步与第4步,需要生成两种app,其实是麻烦的,我们可以整合,但是却是分平台的,这节课以Android为例:

在目录android/app/build.gradle

android {

...

buildTypes {

debug {

...

// Note: CodePush updates should not be tested in Debug mode as they are overriden by the RN packager. However, because CodePush checks for updates in all modes, we must supply a key.

buildConfigField "String", "CODEPUSH_KEY", '"Staging的key"'

...

}

releaseStaging {

...

buildConfigField "String", "CODEPUSH_KEY", '""'

...

}

release {

...

buildConfigField "String", "CODEPUSH_KEY", '""'

...

}

}

...

}

接下去打开MainApplication.java,修改

把new CodePush参数中的第一个参数改为BuildConfig.CODEPUSH_KEY,其他不要改,否则报错

@Override

protected List getPackages() {

return Arrays.asList(

new MainReactPackage(),

new CodePush(BuildConfig.CODEPUSH_KEY, getApplicationContext(), BuildConfig.DEBUG) //修改这行new实例的第一个参数

);

}

报错

Error:Execution failed for task ':app:mergeDebugResources'.>=Error:=Cannot=create=directory    C:\Users\Administrator\Desktop\testrn\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values

如果运行报此错误尝试先运行模拟器,再执行react-native start,最后模拟器用reload,不要用AS去restart app,如果模拟器空白,那就用模拟器把退出app应用,重新进去。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值