内容提要:
* 为什么收到了苹果的警告邮件?
* 关于这次事件的个人浅见。
一、为什么这么热闹?
在今天这特殊的日子,很多iOS项目中有使用JSPatch的、以及一小部分RN、Weex开发者都收到了苹果的警告邮件,内容大致如下:
事情经过发酵,在微信、微博、论坛各种平台就有谣言传播苹果开始封杀所有混合开发模式和/或热更新。来自公众号后台部分留言截图:
二、事件的缘由
很多事情原本压根不是那样,但越传就会越离谱;这就是消息传播的魅力。
其大致意思是:像JSPatch这样的第三方库,具备通过热更新的代码访问私有API的能力,这对APP的安全有极大的危险性。此次警告和封杀的重点主要是在这里。所以混合开发和热更新都不在这次警告和打击之列,虽然不在这范围,但也不能踩苹果的红线,否则被警告是必然的。
RN、Weex不受影响支撑依据
苹果开发者协议3.3.2节:一个应用程序不应该下载或安装任何可执行代码。如果所有的脚本、代码、和解释器都被打包在应用内而没有被下载,解释执行的代码可以在应用内使用。
一个应用程序不应该下载或安装任何可执行代码,其意思是:指二进制可执行代码。React Native的架构中并没有诸如此类的操作,所以不会受上述条款的影响。 如果你的应用受到警告,请检查你的库中使用的第三方插件是否使用了对应的动态访问私有API,尤其是涉及统计分析、crash收集、以及性能分析的插件,暂时避免进行功能变更的热更新操作。
还有种说法是苹果此举是怼微软刚发布的VS2017, 因为这个版本集成了iOS模拟器,用户以后就可以在windows系统下开发Android和iOS应用。(苹果内心是脆弱的,哈哈)
三、顺势而为
就像PC端的应用经历了由 所有应用完全基于C/S架构 ---> 小部分应用基于B/S架构,大部分应用基于C/S架构 ---> 大部分应用基于B/S架构,小部分应用基于C/S架构。两种开发模式都没有完全被互相取代,只有说哪种方式对于公司、开发者而言更适合。
那么接下来,在移动设备上应用的开发方式会经历的历程和PC端大致也是相同的,最终两种开发方式都会存在,只不过是市场份额的多与少而已。
就拿React Native开发移动端应用来说,一个事实已经被认证:JS Native不能完全完成Native下的所有功能。最简单的比如:1)动画,RN体系下必然要用Native的,不然丢帧、掉帧会非常严重; 2)一些第三方的SDK,可能只有Native的,这时候必要要封装调用。......
所以,在大前端领域,一个合格的开发者的技能包必然是:JS + iOS 或 JS + Android,我们可以慢慢过渡,而且不过渡关系也不是那么那么大;毕竟T型人才和Y型人才都会有市场需求。 当然,上面说的也不是绝对的,毕竟JS离统一世界还差500年。