React Native code-push-server的搭建

一、準備工作,先安裝code-push的行命令工具:

npm install code-push-cli@latest -g

安裝mysql

二、安裝 code-push-server

$ git clone https://github.com/lisong/code-push-server.git

$cd code-push-server

$ npm install

$ ./bin/db init --dbhost localhost --dbuser root --dbpassword#初始化mysql數據庫

需要修改 config/config.js中的配置

//文件存儲在本地配置 當storageType為local時需要配置

local: {

storageDir: "/Users/mac/workspaces/storage",

//文件下載地址 CodePush Server 地址 + '/download' download對應app.js里面的地址

downloadUrl: "http://192.168.1.127:3000/download",

// public static download spacename.

public: '/download'

},

jwt: {

// 登錄jwt簽名密鑰,必須更改,否則有安全隱患,可以使用隨機生成的字符串

// Recommended: 63 random alpha-numeric characters

// Generate using: https://www.grc.com/passwords.htm

tokenSecret: 'INSERT_RANDOM_TOKEN_KEY'

},

common: {

dataDir: "/Users/mac/workspaces/data",

//選擇存儲類型,目前支持local,oss,qiniu,s3配置

storageType: "local"

},

storageDir和dataDir修改成你實際的目錄。事先要創建這兩個目錄

downloadUrl需要換成服務器的IP

訪問 https://www.grc.com/passwords.htm ,生成一個token

$ ./bin/www#啟動服務 瀏覽器中打開 http://127.0.0.1:3000

三、運行demo

git clone https://github.com/lisong/code-push-demo-app.git

cd code-push-demo-app

npm install

用xcode打開ios下的工程文件。在菜單Product->Scheme->Edit Scheme...->Run->Info->Build Configuration中,選擇release

1、登錄服務器

code-push login http://127.0.0.1:3000#login in browser account:admin password:123456

在打開的瀏覽器中,得到一個token,把它填在終端上,就處于登錄狀態了。

2、添加App

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

Successfully added the "CodePushDemoApp-ios" app, along with the following default deployments:

┌────────────┬───────────────────────────────────────┐

│ Name? ? ? │ Deployment Key? ? ? ? ? ? ? ? ? ? ? ? │

├────────────┼───────────────────────────────────────┤

│ Production │ yy4I8rHWHbWYfDkIyzADQwdKoPSS4ksvOXqog │

├────────────┼───────────────────────────────────────┤

│ Staging? ? │ MAZnvAsPe1RxY6TckoXUoci1Vuym4ksvOXqog │

└────────────┴───────────────────────────────────────┘

把這個值,填到ios工程目錄下的Info.plist

CodePushDeploymentKey

yy4I8rHWHbWYfDkIyzADQwdKoPSS4ksvOXqog

CodePushServerURL

http://192.168.1.127:3000/

CodePushServerURL,需要填上剛才服務器的地址

3、發布熱更新。

react-native run-ios

在模擬器中運行App

code-push release-react CodePushDemoApp-ios ios -d Production

執行后,結果如下。

Using the target binary version value "2.0.5" from "ios/CodePushDemoApp/Info.plist".

。。。。。。

Successfully released an update containing the "/var/folders/jn/vz5y4n9j3xs47k21tj4t_8xm0000gn/T/CodePush" directory to the "Production" deployment of the "CodePushDemoApp-ios" app.

此處要注意:熱更新不能修改版本號,修改需要在App Store中重新發布,熱更新針對的是不修改版本號的更新。

我之前的理解有錯誤,是群友幫忙才明白過來,否則在App中點擊時,服務器報304錯誤。

如果App的內容沒有改變,運行code-push release-react CodePushDemoApp-ios ios -d Production

將會報錯:

[Error]The uploaded package is identical to the contents of the specified deployment's current release.

4、android的區別

版本號是在 manifests/AndroidManifests.xml中的android:versionName="2.0.0"

$ cd android

$ ./gradlew assembleRelease

$ cd app/build/outputs/apk #install app-release.apk into your phone

由于 gradle的原因,如果無法通過AndroidStudio自動執行,可以把app-release.apk拷貝到手機上執行。

添加app

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

生成的key,放在MainApplication.java中

@Override

protected List getPackages() {

return Arrays.asList(

new MainReactPackage(),

new CodePush(

"Yk3NInRhwVMSVcbSxMcs9T6s1ymQ4ksvOXqog",

MainApplication.this,

BuildConfig.DEBUG,

"http://192.168.1.127:3000/"

)

);

}

發布熱更新

code-push release-react CodePushReactNativeDemo-android android -d Production

目前對于Stagin和Production,理解還不清楚,后續搞明白了再補充。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,048評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,414評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,169評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,722評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,465評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,823評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,813評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,000評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,554評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,295評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,513評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,722評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,125評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,430評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,237評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,482評論 2 379

推薦閱讀更多精彩內容