react-native+redux+code-push+code-push-server

注:閱讀本文前吩屹,已假設讀者具備開發(fā)基礎,基于macOS開發(fā)章姓。

本教程使用內網(wǎng)ip佳遣,請確保服務器與設備處于同一網(wǎng)絡。

一凡伊、開發(fā)工具

? ? ? ? 1. visual studio code

? ? ? ? 2. android studio

? ? ? ? 3. intellij idea

? ? ? ? 4. docker

二零渐、開發(fā)準備

? ? ? ? 1. code-push-server (0.5.4)?https://github.com/lisong/code-push-server

? ? ? ? 2. react-native-cli (2.0.1)?https://facebook.github.io/react-native/docs/getting-started.html

? ? ? ? 3. code-push-cli (2.1.9)?https://github.com/microsoft/code-push/tree/master/cli

三、使用docker搭建熱更新服務器(https://github.com/lisong/code-push-server/tree/master/docker

????????1. 將下載的master解壓至~目錄下

? ? ? ? 2. 在控制臺輸入?vim ~/code-push-server/docker/docker-compose.yml 命令編輯docker-compose.yml文件

? ??????????將DOWNLOAD_URL中YOU_MACHINE_IP替換成本機內網(wǎng)ip

? ??????????將MYSQL_HOST中YOU_MACHINE_IP替換成本機內網(wǎng)ip

? ??????????將REDIS_HOST中YOU_MACHINE_IP替換成本機內網(wǎng)ip

? ? ? ? 3. 在控制臺輸入 vim ~/code-push-server/docker/config.js 命令編輯config.js文件

? ? ? ? ? ? 修改jwt對象下的tokenSecret字段系忙,輸入從https://www.grc.com/passwords.htm獲取的63 random alpha-numeric characters (a-z, A-Z, 0-9)代碼

輸入獲取的代碼
輸入獲取的代碼

????????3. 在控制臺輸入?sudo docker stack deploy -c ~/code-push-server/docker/docker-compose.yml code-push-server 命令部署

部署熱更新服務器完成

? ? ? ? 4. 訪問http://本機內網(wǎng)ip:3000诵盼,出現(xiàn)登陸頁面,則部署成功

熱更新服務器

四银还、搭建react-native項目

? ? ? ? 1. 使用?react-native init AwesomeProject 命令初始化項目

? ? ? ? 2. 切換到項目目錄下安裝依賴
????????????yarn add?react-native-code-push
????????????yarn add?react-native-gesture-handler
????????????yarn add?react-navigation
????????????yarn add?react-redux
????????????yarn add?redux

? ? ? ? ? ? 安裝依賴后運行
????????????react-native link?react-native-gesture-handler
????????????react-native link?react-native-code-push

? ? ? ? ? ? 執(zhí)行過程中需要輸入熱更新的key风宁,直接回車跳過,之后再手動修改
????????????react-navigation文檔:https://reactnavigation.org/docs/en/getting-started.html
????????????react-native-code-push文檔:https://github.com/microsoft/react-native-code-push

package.json

? ? ? ? 3. ios配置(https://github.com/microsoft/react-native-code-push/blob/master/docs/setup-ios.md
????????????1) 使用xcode項目ios文件夾下的xcodeproj類型文件
????????????2) 點擊左側根目錄蛹疯,修改app版本為1.0.0

修改版本號

? ? ? ? ? ? 3) 添加codepush服務器地址和修改codepush key
????????????????使用Xcode在info.plist中添加CodePushServerURL,值寫http://內網(wǎng)ip:3000
????????????????CodePushDeploymentKey用于存儲key戒财,稍后手動輸入

添加服務器地址

? ? ? ? ? ? 4) 真機測試和模擬器測試
????????????????如果是真機測試,需要注釋紅框部分捺弦,以便從服務器拉取bundle饮寞。如果是模擬器測試,不需要改變

真機測試

????????????????5) 如果在Libraries下無CodePush.xcodeproj列吼,Build Phases中的Link Binary With Libraries中無libCodePush.a和libz.tbd則按照文檔(https://github.com/microsoft/react-native-code-push/blob/master/docs/setup-ios.md)添加即可

? ? ? ? ?4. android配置(https://github.com/microsoft/react-native-code-push/blob/master/docs/setup-android.md)
????????????1) 使用android studio打開項目下的android目錄
????????????2) 下載android sdk 配置模擬器(詳細請自行百度)
????????????3) 修改android版本號
????????????選擇android過濾幽崩,打開Gradle Scripts中的build.gradle(Module: app),修改versionName"1.0"為versionName"1.0.0"

修改版本號

????????????4) 添加服務器配置

????????????????切回project寞钥,打開android/app/src/main/java/com.項目名/MainApplication和android/app/src/main/res/values/strings.xml
????????????????strings.xml中慌申,deployment-key-here替換為key,暫時先不改凑耻,稍后統(tǒng)一改
????????????????在strings.xml中太示,添加<string moduleConfig="true" name="reactNativeCodePush_androidDeploymentServer">http://內網(wǎng)ip:3000</string>
????????????????MainApplication中柠贤,找到new CodePush(getResources().getString(R.string.reactNativeCodePush_androidDeploymentKey), getApplicationContext(), BuildConfig.DEBUG)改成new CodePush(getResources().getString(R.string.reactNativeCodePush_androidDeploymentKey), getApplicationContext(), BuildConfig.DEBUG, getResources().getString(R.string.reactNativeCodePush_androidDeploymentServer))

修改strings.xml
修改MainApplication.ja

????????5. 至此完成ios和android配置

五、生成key

????????1. 使用key的文件位置
????????????ios: 項目目錄/ios/項目名/info.plist
????????????android: 項目目錄/android/app/src/main/res/values/strings.xml

???????? 2. code-push登陸

? ? ? ? ? ? 1)控制臺輸入code-push login http://內網(wǎng)ip:3000

登陸頁

? ? ? ? ? ? 2)在網(wǎng)頁登陸类缤,默認賬戶是admin臼勉,密碼123456

獲取token

????????????3)登陸成功后將頁面中的代碼復制到控制臺,即可登陸成功

? ? ? ? ? ? 4)使用命令添加app
????????????????ios: code-push app add 應用名 ios react-native
????????????????android: code-push app add 應用名 android react-native
? ? ? ? ? ? ? ? 生成完成后會生成Production(生產)和Staging(測試)兩個key餐弱,選擇你想要的key宴霸,分別替換ios和android中的deployment-key-here

生成key

? ? ? ? ? ? ? ? 刪除:code-push app rm 應用名
? ? ? ? ? ? ? ? 查看:code-push app ls
? ? ? ? ? ? ? ? 查看某個應用的key和版本:code-push deployment ls 應用名 -k

? ? ? ? ? ? 5)至此可以使用react-native run-ios或react-native run-android命令運行模擬器

六、集成Redux膏蚓、code-push瓢谢、react-navigation

項目結構

? ? ? ? 1. index.js

修改index.js

? ? ? ? 2. app.js

app.js

? ? ? ? 3. router.js

router.js

? ? ? ? 4. store.js

store.js

? ? ? ? 5. page1.js

page1.js

? ? ? ? 6. page2.js

page2.js

七、發(fā)布補丁

? ? ? ? 打包:
? ???????react-native bundle --entry-file index.js --bundle-output ./打包目錄/main.jsbundle --platform 版本 --assets-dest ./靜態(tài)文件目錄 --dev false

? ? ? ? 打包IOS:
? ? ? ? eg. react-native bundle --entry-file index.js --bundle-output ./build_ios/main.jsbundle --platform ios --assets-dest ./build_ios --dev false

? ? ? ? 打包Android:
? ? ? ? eg. react-native bundle --entry-file index.js --bundle-output ./build_android/index.android.bundle --platform ios --assets-dest ./build_android --dev false

? ? ? ? 發(fā)布IOS:
? ??????code-push release 應用名 ./build_ios 應用版本 --deploymentName 發(fā)布版本 --description “發(fā)布說明” --mandatory 是否強制更新(boolean)
? ? ? ? eg.?code-push release dometestios ./build_ios 1.0.0 --deploymentName Staging --description “textAndImage” --mandatory true

? ? ? ? 注:應用版本-即當前要在那個應用版本發(fā)布當前補丁

? ? ? ? 1. 使用Xcode 真機安裝(注意:四.3.4)驮瞧,需要注釋部分代碼)

注釋代碼
更換簽名

? ? ? ? 2. 進入iphone-設置-通用-設備管理-進行授權

? ? ? ? 3. 修改page1如下? ?

修改page1

? ? ? ? 4. 打包-發(fā)布

? ??????react-native bundle --entry-file index.js --bundle-output ./build_ios/main.jsbundle --platform ios --assets-dest ./build_ios --dev false

? ??????code-push release dometestios ./build_ios 1.0.0 --deploymentName Staging --description “修改page1” --mandatory true

? ??????code-push release dometestios ./build_ios 1.0.0 --deploymentName Production --description “修改page1” --mandatory true

打包-發(fā)布

? ? ? ? 那么在剛剛運行的真機中點擊檢查更新,就會出現(xiàn)剛剛發(fā)布的補丁

檢查更新

? ? ? ? 點擊安裝更新氓扛,出現(xiàn)彈窗,點擊更新后论笔,app重啟采郎,應用更新

app更新后

? ? ? ? 5. Android 發(fā)布參見 IOS


八、github

? ??????https://github.com/Lia0JPt/rn-redux-codepush-demo

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末狂魔,一起剝皮案震驚了整個濱河市蒜埋,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌最楷,老刑警劉巖整份,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異籽孙,居然都是意外死亡烈评,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門蚯撩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來础倍,“玉大人,你說我怎么就攤上這事胎挎」灯簦” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵犹菇,是天一觀的道長德迹。 經(jīng)常有香客問我,道長揭芍,這世上最難降的妖魔是什么胳搞? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上肌毅,老公的妹妹穿的比我還像新娘筷转。我一直安慰自己,他們只是感情好悬而,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布呜舒。 她就那樣靜靜地躺著,像睡著了一般笨奠。 火紅的嫁衣襯著肌膚如雪袭蝗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天般婆,我揣著相機與錄音到腥,去河邊找鬼。 笑死蔚袍,一個胖子當著我的面吹牛乡范,可吹牛的內容都是我干的。 我是一名探鬼主播页响,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼篓足,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闰蚕?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤连舍,失蹤者是張志新(化名)和其女友劉穎没陡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體索赏,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡盼玄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了潜腻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片埃儿。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖融涣,靈堂內的尸體忽然破棺而出童番,到底是詐尸還是另有隱情,我是刑警寧澤威鹿,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布剃斧,位于F島的核電站,受9級特大地震影響忽你,放射性物質發(fā)生泄漏幼东。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望根蟹。 院中可真熱鬧脓杉,春花似錦、人聲如沸简逮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽买决。三九已至沛婴,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間督赤,已是汗流浹背嘁灯。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留躲舌,地道東北人丑婿。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像没卸,于是被迫代替她去往敵國和親羹奉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350