heart.jpg
蘋果靜止熱更新称簿,可惜我的是企業(yè)app,沒有這些約束了,隨便用。(當然有些熱更新已經可以通過蘋果審核了丈咐,比如JSPatch)官網說的: JSPatch 平臺 SDK 1.7.2 以上版本可以通過蘋果審核馍惹,可以正常使用躺率。Github 開源版本暫不可用。
最近公司要添加熱修復BUG万矾,其實早之前本人就有簡單實現過悼吱,剛好契合公司需求,在此總結一下iOS熱更新實現方式
這個是我根據JSPatch寫的一個Demo:https://github.com/tikeyc/TJSPatchDemo
這是Android熱更新實現方式
一良狈、JSPatch
http://www.jspatch.com/
https://github.com/bang590/JSPatch
熱更新時后添,從服務器拉去js腳本。理論上可以修改和新建所有的模塊薪丁,但是不建議這樣做遇西。
建議用來做緊急的小需求和 修復嚴重的線上bug馅精。
官網說: JSPatch 平臺 SDK 1.7.2 以上版本可以通過蘋果審核,可以正常使用粱檀。Github 開源版本暫不可用
二洲敢、lua腳本
比如:wax。熱更新時茄蚯,從服務器拉去lua腳本,游戲開發(fā)經常用到压彭。
三、Weex
http://weex.apache.org/cn/
https://github.com/apache/incubator-weex/
https://github.com/apache/incubator-weex/
跨平臺渗常,一套代碼壮不,iOS、Android都可以運行皱碘。用前端語法實現原生效果询一。比React Native更好用。
weex基于vue.js尸执,ReactNative使用React家凯。
ReactNative安裝配置麻煩。 weex安裝cli之后就可以使用如失。
react模板JSX有一定的學習成本绊诲,vue和常用的web開發(fā)類似,模板是普通的html褪贵,
數據綁定用mustache風格掂之,樣式直接使用css。
四脆丁、React Native
不像Weex能一套代碼多端運行世舰,需要自己分別做修改。
React Native 可以動態(tài)添加業(yè)務模塊槽卫,但無法做到修改原生OC代碼跟压。
JSPatch、lua 配合React Native可以讓一個原生APP時刻處于可擴展可修改的狀態(tài)歼培。
五震蒋、Hybrid
像PhoneGap之類的框架, 基本概念和web差不多, 通過更新js/html來實現動態(tài)化,沒有原生的效果流暢躲庄。
六查剖、動態(tài)庫
可以做demo用,真實使用的時候會被蘋果禁止噪窘。
因為 打包發(fā)到AppStore的ipa安裝包 里的每個動態(tài)庫 都有唯一的編碼笋庄,iOS系統(tǒng)會進行驗證,所以動態(tài)通過網絡獲取 新的動態(tài)庫 也用不了。
七直砂、rollout.io
Rollout緊急修復線上bug菌仁。后端有相關的管理頁面。因為是國外的網站哆键,然后呢掘托,要FQ才能使用。
八籍嘹、DynamicCocoa
https://github.com/DynamicCocoa/DynamicCocoa
滴滴iOS的一個框架闪盔,還沒開源已經有1K+star和許多issue了,與JSPatch比更加智能化辱士,用OC在XCode中寫完代碼泪掀,用工具可以自動生成可以更新的js文件。