1. 程式人生 > >ios 熱更新可行性分析

ios 熱更新可行性分析

 Ios熱更新預言報告

熱更新簡述

更新是一種各大手遊等眾多App常用的更新方式簡單來說就是在使用者通App StoreApp之後App遇到的即更新

20173蘋果就曾警告部分發者反了蘋果發者協議3.3.2以及App Store查指南2.5.2要求發者刪除更新相並重新提交一個新的App版本以供

20176AppStore核團隊針對AppStore更新App發者傳送郵件要求移除所有相的代框架或SDK並重新提交就會在AppStore中下架該軟

 Ios熱更新實現的幾種方式

一、JSPatch

熱更新時,從伺服器拉去js指令碼。理論上可以修改和新建所有的模組,但是不建議這樣做。

建議 用來做緊急的小需求和 修復嚴重的線上bug。

二、lua指令碼

比如: wax。熱更新時,從伺服器拉去lua指令碼。遊戲開發經常用到。

三、Weex

跨平臺,一套程式碼,iOS、Android都可以執行。用前端語法實現原生效果。比React Native更好用。

weex基於vue.js,ReactNative使用React。

ReactNative安裝配置麻煩。 weex安裝cli之後就可以使用。

react模板JSX有一定的學習成本,vue和常用的web開發類似,模板是普通的html,資料繫結用mustache風格,樣式直接使用css。

淘寶乾的漂亮,中國在編碼的實力越來越牛叉了。威武!!! 

四、React Native

不像Weex能一套程式碼多端執行,需要自己分別做修改。

React Native 可以動態新增業務模組,但無法做到修改原生OC程式碼。

JSPatch、lua 配合ReactNative可以讓一個原生APP時刻處於可擴充套件可修改的狀態。

五、Hybrid

像PhoneGap之類的框架, 基本概念和web差不多, 通過更新js/html來實現動態化,沒有原生的效果流暢。

六、動態庫

可以做demo用,真實使用的時候會被蘋果禁止。

因為 打包發到AppStore的ipa安裝包 裡的每個動態庫 都有唯一的編碼,iOS系統會進行驗證,所以動態通過網路獲取新的動態庫 也用不了。

七、rollout.io

Rollout緊急修復線上bug。後端有相關的管理頁面。因為是國外的網站,然後呢,要FQ才能使用。

八、DynamicCocoa

滴滴iOS的一個框架,準備在2017年初開源,與JSPatch比更加智慧化,用OC在XCode中寫完程式碼,用工具可以自動生成可以更新的js檔案。

蘋果對於熱更新的態度已經處理措施

2017年3月9日,部分iOS開發者收到了蘋果的這封警告郵件:

·      蘋果認為熱更新技容易被黑客利用造成重大安全問題在官方警告郵件中也是在行如此描述

·      

·      

·      

分析

1.目前JSPatch官網給出的結論是SDK1.7.2以上的版本可以稽核通過,但是目前貌似沒人使用,並且是付費使用

2.使用React NativeWeex,Hybrid熱更新,專案沒有使用次開源框架,方案不行

3. lua指令碼 目前沒有相對措施

4.使用動態庫進行熱更新,也是基於lua指令碼的

5. rollout.io 需要翻牆,目前網上的資料顯示無法繞過稽核還是

6. DynamicCocoa 目前尚未開源

結論

目前可以使用JSPatch進行熱更新,sdk1.7.2之前會存在稽核不過的情況,大於這個版本的可以正常使用