3.8女生节刚开启,就收到苹果的警告邮件,可把圈子里一大帮老少爷们娘们可吓坏了,赶紧喝口82年的可乐压压惊.
一.首先来看看苹果发来的恐怖炸弹,吓死宝宝了.
提炼一下,邮件中提到的dlopen(),dlsym(),respondsToSelector,performSelector,method_exchangeImplementations()几个方法,之前苹果爸爸的政策里,只允许使用在非商店app中,看来苹果爸爸之前一直是睁一只眼,闭一只眼,现在看着大家都快把热更新玩坏了,大儿子OC被你们逼得都没活路了,小儿子swift还没成年,你们却拿我的平台来养JS这个小婊砸,看我不收拾收拾你们.
二.国内流行哪些支持热更新的APP开发方案
FB出品的React Native,开发速度快,跨平台,采用Javascriptcore方式支持热更新,使用微软的CodePush居多,仅热更新Jsbudle代码,而非native代码.
Weex由阿里开源,天生跨平台,一次编写,到处运行的理论有别于React Native,同样是后起之秀,被人追捧,常结合JSPatch进行热更新使用.
JSPatch由腾讯的大牛开源,大多使用于修复Native代码,这次可是被苹果爸爸点名了.
Ionic来源于Cordova/PhoneGap的二次修改开源,跨平台,一次编写,到处运行,在Android上性能欠佳,但也广泛使用,毕竟有钱人大都使用iphone,屌丝才使用Android(小编就是标准的屌丝一枚),同样可使用微软的CodePush基于webkit方案进行热更新
DynamicCocoa是由滴滴独自研发的,可热修复native代码.
三.谁惹怒了苹果,究竟牵扯到苹果的哪些利益.
1.苹果强调调用私有API的风险,但是这个风险一直存在,而且还会持续下去.就算没有了JSPatch,也还可以自己再撸一套私有VM,在自有的VM上动态执行代码,混淆加密并伪装.对于苹果而言想要阻止也无能为力,并且调用私有API的风险也不是大到无法接受,但是生态圈的破坏带来的后果却很严重.
2.热更新绕过了苹果的审核机制,使苹果无法控制APP的质量和内容,更加失去了内容分发的能力,而热更新以React Native/Weex为代表,使用JS语言进行开发,抛开发OC/Swift,开发者的流失是一家重视软件生态和开发者生态无法接受的事情.
3.以安全作为理由,远程执行代码可能会遭受到MITM攻击.
4.国内外开发者已经不仅限于通过热更新修复代码了,而是直接能够更换内容.开发者的贪婪让苹果无法控制.
四.对于公司/开发者该如何解决
今夜,注定无眠,现在很多公司管理层应该都在讨论如何应对这次危机.对于个人开发者而言,可能又是一次机遇与挑战,原生开发的可以要求涨薪资了,而JS开发者可能面临着要学习原生开发.
目前在不影响公司业务的前提下我们能做的很少,比如下面的几点:
1.首先排查第三方库,尤其是涉及统计分析、crash收集、以及性能分析的插件.有使用到JSPatch,Rollout,个推等的赶紧移除吧.
2.在非常时期关闭热更新,如果送审时无法通过,最好移除JSPatch框架.
3.React Native/Weex框架本身是在苹果政策允许范围内的,不必太过担心.
五.哪些公司使用到了热更新的技术
各位,你们使用了哪个框架语言,是否收到邮件,有什么好的解决方法,欢迎回复一起讨论.
也可以加QQ群进行讨论: 295825088