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. 新增APP,獲得Deployment Key:
Android和iOS分別新增:
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中新增CodePushDeploymentKey和CodePushServerURL。
注:CodePushDeploymentKey為Deployment 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.gradle中versionName由1.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.js和index.android.js中代碼
② 重新打包發布android和ios。
③ 重新啟動APP(2次),介面改變。
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 Native用CodePush實現熱更新(一)
本文介紹用微軟預設的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 native用Listview從列表頁跳到詳情頁
只寫了下功能,樣式沒有寫,大神勿笑。一些需要改進 的地方請大神指點。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熱更新的方式和概念,掌握熱更新的實戰框架還需要你自己=