`
222xiaohuan
  • 浏览: 53195 次
  • 性别: Icon_minigender_2
  • 来自: 苏州
社区版块
存档分类
最新评论

React Native Andorid CodePush 热更新集成

 
阅读更多

 

CodePush

CodePush是一个微软开发的云服务器。通过它,开发者可以直接在用户的设备上部署手机应用更新。CodePush相当于一个中心仓库,开发者可以推送当前的更新(包括JS/HTML/CSS/IMAGE等)到CoduPush,然后应用将会查询是否有更新。(欢迎关注 我的gitHub )

流程

  1. 安装 CodePush CLI 。
  2. 创建一个CodePush 账号
  3. 在CodePush服务器注册app
  4. 在app上添加CodePush SDK,配置升级相关代码。 ReactNative可以参考这里
  5. 更新代码后,发布一个应用更新到服务器
  6. app收到升级推送

一、安装CodePush CLI

管理 CodePush 账号需要通过 NodeJS-based CLI.

只需要在控制台输入 npm install -g code-push-cli ,就可以安装了。

安装完毕后,输入 code-push -v 查看版本代表成功。

目前我的版本是 1.1.1-beta

二、创建CodePush账号

在控制台输入 code-push register 后,将会打开一个网页进行注册

CodePush账号支持 github和 Microsofe,选其中一个就可以了。

我选择的是 github,授权完毕后,网页将会显示一个token,复制它到控制台的中就成功了。

成功登陆后,你的session文件将会写在 /Users/guanMac/.code-push.config。

相关命令

  • code-push login 登陆
  • code-push loout 注销
  • code-push access-key ls 列出登陆的token
  • code-push access-key rm <accessKye> 删除某个 access-key

三、在CodePush服务器上注册app

为了让codePush服务器知道你的app,我们需要向它注册app: code-push app add <appName> ,就可以了。

code-push app相关命令

  • add 在账号里面添加一个新的app
  • remove 或者 rm 在账号里移除一个app
  • rename 重命名一个存在app
  • list 或则 ls 列出账号下面的所有app
  • transfer 把app的所有权转移到另外一个账号

四、在app中添加SDK,配置相关代码

由于我目前只开发了android,以下就以android为例。

第一步。在应用中安装react-native插件, npm install --save react-native-code-push

第二步。在Anroid project中安装插件。

CodePush提供了两种方式: RNPM 和 Manual 。

如果你不想依赖其他工具或者愿意走多几步额外的步骤,可以使用 Manual。不过像我这么懒的代码从业者,毫不犹豫地选择了 RNPM 这个实用工具。

第三步运行 npm i rnpm 安装 RNPM。

第四步运行 rnpm link react-native-code-push 。这条命令将会自动帮我们在anroid文件中添加好设置(其实就是通过Manual的安装步骤)

第五步在 android/app/build.gradle 文件里面添加额为的创建任务:

    apply from "react.gradle"
    apply from "../../node_modules/react-native-code-push/android/codepush.gradle"

第六步运行 code-push deployment ls <appName> 获取 部署秘钥 。默认的部署名是 staging ,所以 部署秘钥(deployment key ) 就是 staging的可以。

第七步添加配置。我们需要让app向CodePush咨询JS bundle的所在位置,这样CodePush就可以控制版本。更新MainActivity.java 文件:

 //1.引用包
 import com.microsoft.codepush.react.CodePush;
 public class MainActivity extends ReactActivity {
 //2.覆盖 getJSBundleFile 方法,让CodePush决定当app启动时,去哪里加载 JS bundle
    @Override
    protected String getJSBundleFile(){
        return CodePush.getBundleUrl():
    }
    
    @Override 
    protected List<ReactPackage> getPackages(){
        //实例化 CodePush运行时,把它添加到 packages,填写正确的 部署秘钥( deployment key)
        return Arrays.<ReactPackage> as List(
            new MainReactPackage(),
            new CodePush("deployment-key-here" , this , BuildCofig.DEBUG)
        )
    }
    
 }
 

第八步在 android/app/build.gradle 中有个 android.defaultConfig.versionName 属性,我们需要把 应用版本改成 1.0.0(默认是1.0,但是codepush需要三位数)。

    android{
        defaultConfig{
            versionName "1.0.0"
        }
    }

第九步CodePush 插件下载和关联完毕后,就剩下在应用中部署更新控制策略:

  • 在 js中加载 CodePush模块: import codePush from 'react-native-code-push'
  • 在 componentDidMount 中调用 sync 方法,后台请求更新 codePush.sync()
  • 或者 codePush.sync({ updateDialog:true, installMode:codePush.InstallMode.IMMEDIATE }); 弹出更新提示框。

以上就是在app中添加sdk和配置了。具体的还可以参考 官方文档

部署app相关命令

  • code-push deployment add <appName> 部署
  • code-push deployment rename <appName> 重命名
  • code-push deployment rm <appName> 删除部署
  • code-push deployment ls <appName> 列出应用的部署情况
  • code-push deployment ls <appName> -k 查看部署的key
  • code-push deployment history <appName> <deploymentNmae> 查看历史版本(Production 或者 Staging)

 

发布更新

code-push release-react MyApp-Android(code push中add 的项目名不是android studio中的项目名) android

 

 

 

  • CodePush默认是更新 staging 环境的,如果是staging,则不需要填写 deploymentName。
  • 如果有 mandatory 则会让客户端强制更新

 

发布release包,选择production的key之后,需要将代码推送到production的环境。

 

code-push release-react ZSKQAndroid android -d Production  (ZSKQAndroid 是 code push add的项目名)

 

 

 

  • 对应的应用版本(targetBinaryVersion)是指当前app的版本,而不是你填写的更新版本。譬如客户端版本是 1.0.0,如果我们需要更新客户端,那么targetBinaryVersion填的就是 1.0.0。

 

重启app,会提示新版本更新,重新获取jsbundle进行更新。

 

  • CodePush只能更新 js或图片,原生代码的改变(二进制打包)是不能通过它更新的。
  • 服务端还木有开源,不能使用自己的服务器
  • 服务端在美国,国内可能会不稳定。

 

 

分享到:
评论

相关推荐

    react-native-code-push集成android篇.docx

    React Native 集成 CodePush 热更新 android 篇主要讲述了如何在 React Native 中集成 CodePush 热更新,以便更好地管理应用程序的更新和维护。下面将详细介绍 CodePush 的注册、集成和使用过程。 一、CodePush ...

    reactnative热更新

    React Native热更新主要基于两个核心概念:Code Push和Fast Refresh。Code Push是微软推出的一个服务,它允许RN应用在不通过App Store或Google Play发布新版本的情况下,接收并安装远程服务器上的代码更新。Fast ...

    Android-现有Android项目集成ReactNative

    - 考虑使用`react-native-code-push`库进行热更新,避免每次更改都需要重新打包和安装应用。 - 优化资源加载,如图片和字体,以提高应用性能。 - 注意React Native版本与Android SDK版本的兼容性,避免出现冲突。...

    react-native-code-push

    "React-Native-Code-Push" 是一个由微软开发的开源库,专为React Native应用程序设计,用于实现热更新功能。这个工具允许开发者在不发布新版本应用到应用商店的情况下,将代码更新推送到用户的设备上,极大地提高了...

    Android-ReactNativeForAndroid热更新实现思路

    **四、CodePush集成步骤** 1. **安装依赖**:在React Native项目中,使用npm或yarn添加`react-native-code-push`依赖。 2. **配置CodePush**:注册CodePush账号,创建新的应用,并获取App ID。在RN项目中配置Code...

    WeatherAppReactNative采用reactnative构建的天气预报iOSApp

    5. 热更新技术,如CodePush,实现实时更新应用。 总之,"WeatherAppReactNative"是一个实践React Native开发的优秀案例,通过学习和研究,开发者不仅可以提升React Native的技能,还能了解如何构建一个实用的移动...

    react_native热更新总览

    ### React Native热...无论是使用成熟的第三方解决方案如CodePush和Pushy,还是自行搭建热更新服务器,都能有效解决React Native应用的动态更新问题,让开发者能够在保证用户体验的同时,灵活地调整和优化应用功能。

    Android-ReactNative启动白屏问题解决教程

    使用如`CodePush`这样的热更新服务,将更新的JavaScript代码部署到服务器,用户启动应用时直接下载最新版本,减少了启动时的等待时间。 三、具体实践步骤 1. **集成启动画面库** 克隆`crazycodeboy/react-native-...

    react-native从基础到高级

    5. **热更新**:掌握如何使用Expo的热更新服务或者自己实现热更新方案,如CodePush。 6. **第三方库**:熟悉社区中的常用库,如Redux和MobX进行状态管理,react-native-vector-icons添加图标,react-native-image-...

    浅谈react-native热更新react-native-pushy集成遇到的问题

    在React Native项目中集成热更新技术,通常会采用如CodePush、react-native-update或本文提到的react-native-pushy等第三方库。react-native-pushy是专门针对React Native的热更新解决方案,它提供了一种简单的方式...

    采用ReactNative开发的iReadingApp

    - 利用CodePush或类似服务实现热更新,让应用能够在线接收新功能和修复。 综上所述,"iReadingApp"是一个通过React Native构建的阅读应用实例,涵盖了从基础的React编程到复杂功能的实现,包括组件设计、样式管理...

    一个ReactNative入门套件

    Code Push是由Microsoft开发的实时更新服务,它允许开发者无需通过应用商店的审核过程就能将更新推送到用户的设备上。这对于React Native应用尤其有用,因为它显著缩短了迭代周期,使开发者能够快速修复bug或添加新...

    HackerNewsReactNative用ReactNative完成的HackerNews客户端

    7. **热更新**:通过CodePush或其他类似服务,实现应用的远程热更新,提高用户体验。 8. **性能优化**:包括代码分割、按需加载、使用PureComponent和shouldComponentUpdate优化渲染性能等策略。 9. **兼容性处理*...

    MyReactDemo:Android 与 ReactNative 的练习Demo。嵌入原生项目,与原生Activity界面互相跳转

    React Native提供了很多性能优化工具和技术,如Code Push、热更新和Proguard配置。 通过深入研究"MyReactDemo"项目,开发者不仅可以掌握React Native与Android原生项目的集成技术,还能了解到如何在两者之间建立...

    如何在原有Android项目中快速集成React Native详解

    ⑤ code-push能做热更新,但是用不好依旧坑 …… 在得到一些信息后,可以看出,要用RN高效率的做出比较不错的App是有可能的,单看投入度与最初设计是否合理,而且现在关于React Native的各种文档是相当丰富的,所以...

    (I0S)全栈React Native开发App培训视频和源码完整版

    最后,课程可能还会涉及React Native的热更新技术(例如Code Push),让你的应用能够在不经过App Store审核的情况下,即时推送更新给用户。 总而言之,通过这套"(I0S)全栈React Native开发App培训视频和源码完整版...

    react native 开发

    - **热更新**:支持 CodePush 或其他热更新方案。 - **布局预览**:可以快速查看布局效果,无需重新编译应用。 - **性能表现**:总体性能接近原生应用。 #### 八、React Native 的未来展望 - **生态建设**:React ...

    learning-react-native:React Native学习笔记本

    React Native学习笔记 欢迎您帮忙纠错,一起帮助更多的人,学习交流QQ群: React本机 开发工具 [使用WebStorm调试React Native] [故事书] [reactotron] 节点相关 最佳拍档 原生集成 模拟与测试 [easy-mock介绍] ...

Global site tag (gtag.js) - Google Analytics