1. 程式人生 > >React Native用CodePush實現熱更新(一)

React Native用CodePush實現熱更新(一)

本文介紹用微軟預設的CodePush Cloud和將code-push-server放在本地伺服器上,以local作為storageType實現熱更新。

1. 安裝 CodePush CLI:

npm install -g code-push-cli
code-push -v 檢視版本,顯示版本說明安裝成功。(這裡用的是2.1.3-beta)

2. 登入CodePush:

這裡介紹兩種方式登入CodePush.

I. 一種是用微軟預設的CodePush Cloud。

輸入code-push register,這時會在瀏覽器裡開啟CodePush的註冊頁面,註冊成功後會在頁面上顯示access key,複製這個key到 命令列視窗中,

如圖則登入成功。

II. 第二種方式是用code-push-server。因為預設的CodePush Cloud在中國訪問會很慢,所以用code-push-server來搭建一個本地服務,應用的釋出和更新都在本地進行。

① 安裝CodePushServer:

sudo npm install code-push-server -g

② 配置資料庫相關資訊:

code-push-server-db init --dbhost localhost --dbuser root --dbpassword 0

③ 修改 /usr/local/lib/node_modules/code-push-server/config/config.js 中相關配置:


④ 啟動服務:code-push-server 


瀏覽器中能開啟 http://127.0.0.1:3000啟動成功。

⑤ 登入CodePush:

code-push login http://127.0.0.1:3000

瀏覽器中開啟登錄頁面。


⑥ 入用名和密account:admin password:123456)後點擊獲Token,複製access key到命令列視窗中。



如圖則登入成功。

3. 新增APPDeployment Key:

AndroidiOS分別新增:

code-push app add CodePushDemo-ios ios react-native

code-push app add CodePushDemo-android android react-native

4. 安裝react-nativ-code-push外掛:

① 進入專案根目錄。

② npm install [email protected] --save

注:這裡沒有用npm install [email protected] --save是因為如果用最新的版本5.x.x,在編譯android是會出現“cannot find symbol class JSBundleLoader”的問題(https://github.com/Microsoft/react-native-code-push/issues/935

③ rnpm link react-native-code-push 這條命令將會自動幫我們在android/ios中新增好設定。

android:

I. 在android/app/build.gradle中自動新增上:apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"

II. 在/android/settings.gradle中自動新增上:

include ':react-native-code-push'

project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')

III. 在MainActivity中自動新增上:

import com.microsoft.codepush.react.CodePush;

ios:

在info.plist中自動新增上CodePushDeploymentKey。

5. 在 index.ios.js 和 index.android.js 中分別新增如下:

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

componentDidMount() {

   codePush.sync();

}

6. 修改android/ios程式相關配置:

ios:

① info.plist中新增CodePushDeploymentKeyCodePushServerURL

注:CodePushDeploymentKeyDeployment Key(Production)

如果用微軟預設的CodePush Cloud則不需要新增CodePushDeploymentKey。

② Xcode中以Release行。

Version 1.0修改1.0.0(1.0,但是codepush需要三位數)。

android:

① MainApplication中新增如下:


注:CodePush的第一個引數Deployment Key(Production)

如果用微軟預設的CodePush Cloud則不需要新增最後一個引數。

② android/app/build.gradleversionName1.0修改1.0.0(1.0,但是codepush需要三位數)。

7. 打包 + 釋出

code-push release-react CodePushDemo-ios ios --des "description" -d Production

code-push release-react CodePushDemo-android android --des "description" -d Production

注:code-push release-react CodePushDemo-ios ios --des "test" --m true預設為Staging,如果用預設的話,需要把程式中相關的Deployment Key替換為Staging的key。

執行完成後,如果用微軟預設的CodePush Cloud,在https://appcenter.ms中可以檢視上傳的釋出資訊;

如果用code-push-server作為伺服器,則在本地的/Users/tablee/workspaces/storage和/Users/tablee/workspaces/data下會生成相應的檔案。

8. 測試更新

① 修改index.ios.jsindex.android.js中代

② 重新打包androidios

③ 重新啟動APP2次),介面改

9. 程式碼片段及程式

10. 相關命令:

新增部署:code-push deployment add CodePushDemo-ios Staging

刪除部署:code-push deployment rm CodePushDemo-ios Staging

檢視部署的key:code-push deployment list CodePushDemo-ios -k

檢視歷史版本:code-push deployment history CodePushDemo-ios Staging

11. 參考網址:

https://github.com/Microsoft/react-native-code-push/blob/master/Examples/CodePushDemoApp-pre0.49/demo.js

http://blog.csdn.net/fengyuzhengfan/article/details/52003798

http://www.jianshu.com/p/fa362da953c7

http://www.jianshu.com/p/cbc6a1dbfe30

http://blog.csdn.net/xiangzhihong8/article/details/73201421

http://lib.csdn.net/article/reactnative/67095

http://blog.csdn.net/itpinpai/article/details/50845625 ---- Android啟動白屏

https://github.com/lisong/code-push-server

https://github.com/lisong/code-push-server/issues/103 ---- [Error]  Could not parse response: 

http://www.360doc.com/content/16/0911/08/35331283_589947241.shtml

http://blog.csdn.net/wnma3mz/article/details/77618475

相關推薦

React NativeCodePush實現更新()

本文介紹用微軟預設的CodePush Cloud和將code-push-server放在本地伺服器上,以local作為storageType實現熱更新。1. 安裝 CodePush CLI:npm in

ReactNative基於CodePush實現更新整合詳解

安裝工具介紹 根據最新的官方文件和實際整合經驗整理 http://www.jianshu.com/p/54cd13ed9e95 工具名稱 描述 備註 Chocolatey Windows上的包管理器(需翻牆) 通常不安裝,使用 npm 即可 Pyth

react native 安卓實現自動下載更新版本

參考: 從git上下載原生包,然後進行引用 1、建立功能類DownloadApk繼承自ReactContextBaseJavaModule,將方法暴露給js呼叫 2、建立類DownloadApkPackage 繼承自ReactPackage介面,用於註冊Native

Android 手動實現更新

前言 在上篇Android ClassLoader淺析中我們分析了安卓ClassLoader和熱更新的原理,這篇我們在上篇熱更新分析的基礎上寫個簡單的demo實踐一下。 概述 我們先回顧下熱更新的原理 PathClassLoader是安卓中預設的類載入器,載入類是通過fi

react nativeListview從列表頁跳到詳情頁

只寫了下功能,樣式沒有寫,大神勿笑。一些需要改進 的地方請大神指點。qq:274501366 話不多說直接上程式碼 index.android.js 'use strict'; import React, {Component} from 'react'; import { A

react native自定義實現下拉重新整理上拉載入

1·定義元件 PageListView.js  /** * 上拉重新整理/下拉載入更多 元件 */ import React, { Component } from 'react'; import { Text, View, ListView, FlatList

React Native Android原生方向進階

雖然說react native的設計初衷是為了敏捷開發,write once,run anywhere,但是還是開放了原生接入這一高階功能,而原生也是一位這個開發方向一個繞不過去的坎,今天先跑了一下流程,總結一下先 1、react-native init mengft_module

React Native(簡單精緻的底部導航欄):使用react-native-tab-navigator實現底部導航欄

實現效果如下:           點選選項卡可以切換並且改變上面頁面的顏色、選中圖示的顏色、圖示   首先需要安裝: npm install react-native-tab-navigator --save

react native安卓除錯(搖搖和選單鍵無效)

一個原生的專案要求嵌入react native介面,於是我把打包好的bundle放到assets資料夾下本地載入,執行沒問題,但是沒辦法除錯,搖一搖和長按Menu鍵都不行。 檢查程式碼,主配置檔案中註冊了 <activity android:name="com.fa

Python實現"佇列實現棧"的種方法

使用佇列實現棧的下列操作: push(x) -- 元素 x 入棧 pop() -- 移除棧頂元素 top() -- 獲取棧頂元素 empty() -- 返回棧是否為空 Example: MyStack stack = new MyStack(); stack.p

教你React Native使用fetch實現圖片上傳

本篇文章主要介紹了React Native使用fetch實現圖片上傳的示例程式碼,寫的十分的全面細緻,具有一定的參考價值,對此有需要的朋友可以參考學習下。如有不足之處,歡迎批評指正。 普通網路請求引數是JSON物件 圖片上傳的請求引數使用的是formData物件 使用fet

React-native 三方框架實現上拉重新整理、下拉載入網路請求以及跳轉先詳情頁面

首先 第一步 需要匯入三方的類庫 和跳轉詳情頁面 yarn add react-native-refresh-list-view //導包 import RefreshListView, { RefreshState } from “react-nati

React Native—使用ScrollableTabView實現APP底部導航欄(帶訊息圓點)

icon_selected color:#d81e06 icon_unselected color:#515151 一、前言 這段時間在公司開始搞React Native開發,要對APP的主頁底部導航欄進行替換,尋找了多種方法,最後使用react-native-scro

DirectX實現魔方(

關於魔方 魔方英文名字叫做Rubik's Cube,是由匈牙利建築學教授和雕塑家Ernő Rubik於1974年發明,最初叫做Magic Cube(這大概也是中文名字的來歷吧),1980年Ideal Toys公司開始銷售此玩具,並將名字改為Rubik's Cube。 魔方在80年代最為風靡,至今未衰。截至

js實現返回上步操作

按鈕式: <INPUT name="pclog" type="button" value="GO" onClick="location.href='http://www.ddhbb.com/'"> 連結式: <a href="javascript:hist

React Native 4 for Android原始碼分析 《JNI智慧指標之介紹篇》

導讀 React Native 釋出以來將近一年多了,也被抄的火爆到不行,包括RN的中文網和各種資料也很多,加之SE5,Se6語法升級,學習成本並不在RN環境搭建和入門,關鍵還是對JS的掌握入門,不管你是用Native開發,h5開發,還是React

Cordova - 實現更新 !

原文: Cordova - 實現熱更新 ! Cordova版本:8.0.0 更新APP平臺:Android 作業系統:Windows Cordova的熱更新,作用是把www內的變動部分更新到APP中,實現主程式不動,完成更新!!這個熱更新功能,對於IOS APP更有意義,因為,可以避免繁瑣的蘋果稽核!

React Native之ListView實現九宮格效果

概述在安卓原生開發中,ListView是很常用的一個列表控制元件,那麼React Native(RN)如何實現該功能呢?我們來看一下ListView的原始碼ListView是基於ScrollView擴充套件得來的,所以具有ScrollView的相關屬性:dataSource:

步步手動實現修復()-dex檔案的生成與載入

*本篇文章已授權微信公眾號 guolin_blog (郭霖)獨家釋出 熱修復技術自從QQ空間團隊搞出來之後便漸漸趨於成熟。 我們這個系列主要介紹如何一步步手動實現基本的熱修復功能,無需使用第三方框架。 在開始學習之前,需要對基本的熱修復技術有些瞭解,以下

unity dll實現更新

大家都知道一談起熱更新的話首選是Ulua這個外掛, 其實Unity可以使用dll熱更新的,如果你實在不想用Lua來編寫邏輯,0.0請下看Dll+AssetBundle如何實現熱更新的.讓你看完這個文章之後只是認識DLL熱更新的方式和概念,掌握熱更新的實戰框架還需要你自己=