BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #27098同步于 2015/11/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

挂一件今天看到的技术圈让人恶心的事情iOS

apocalypse
2015/11/18镜像同步26 回复
一楼一楼容我慢慢道来 动态更新这事很多公司都探讨过。。 先抛开 facebook那套react-native 或者 phonegap那套整个app用js写的模式 也不是cocos2dx+lua 那一套用lua写app的模式 这里只讨论。。已经用oc代码写好并且发版发出去了的app如何动态更新(说句不好意思的话,其实主要是bug hotfix) 目前ios上已经有一些方案了(怎么实现的后面会略微提及,但有兴趣的愿意深入交流的欢迎单聊哈) 以lua为主的wax框架 非常早,至少在iphone5s出来前就已经存在了,那会还没64位,一个老外写的,不过很久很久作者都没维护了包括后来出64位也没适配。借助luac这套开源C库去解释运行lua脚本,桥接OC运行时实现改oc代码 最早大众点评的一位大神改进了一点wax,然后用于修复ios因为审核漫长,无法立刻修复的bug 慢慢的很多公司都开始尝试使用wax,自己进行修改,适配64位简单的投入使用,不过不支持gcd不支持block等原因,还没见到很棒的git,或者各公司都在自己闷头用,闷头扩展,并没开源 大概一个月前,alibaba 在git上完全开源了他们续写的wax,增加了超多的功能,支持gcd,block,支持了lua断点调试,还支持了批量ios底层c库的批量导入 tolua++ 好吧 题外话,今天这恶心的事其实和 lua 和 wax 不相关 以js为主的jspatch框架 大概半年前git上开源了一套借助js动态更新的方案,和wax相比,核心原理是一样的,只不过借助的不是luac这个C库去解释运行lua,而是借助苹果在ios7开放的javascriptcore,来解释运行js代码,桥接oc的运行时来实现类似的功能 和最初的lua-wax不同,jspatch在一开始就支持了gcd 断点调试等,并且对gcd,block等做了很好的扩展(断点调试得益于苹果的safari支持),并且提供了丰富的Cfunction 扩展接口,有需要可以很方便自定义扩展 整个原理 我就不细解释了 oc内部有个叫runtime的东西,类似于java反射,可以很轻松的修改已经编译好的函数,所以无论是lua 和 js ,都是借助一定的脚本语言,解释了一下,经过封装桥接框架,能在js或者lua里面调用到这些反射的东西,从而实现修改,已经写好的oc代码 这里面的细节 以及runtime的使用非常精妙,wax由于涉及到luac这个开源lua运行解释库,纯c,可能还不太好看好学(ps其实是我当初看不下去了啦,就算oc桥接那部分也没细看进去) 这个jspatch因为接住的是苹果官方的js解释器,文档以及使用上其实相当的广泛和好用,所以jspatch的框架源码相当的简洁精 炼,只有1000来行,但里面对runtime的使用,对各种通用函数,泛用函数,数值,对象,指针的泛用传参等等的设计上,特别的精妙,真的 恶心的事情 发生在第二楼
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
apocalypse机器人#1 · 2015/11/18
jspatch是 微信团队的一个大神搞的 在git上有大神详细的源码,甚至git上的wiki 把每一个原理上面的细节,以及扩展使用写的非常详细,光wiki 就大概10+个link 每个wiki都很长很细致 就在最近1个月 qq空间终端开发团队发出来了他们的TPatch http://zhuanlan.zhihu.com/magilu/20288657 这个是连接。。里面的内容看了后 真的是有点恶心。。。 5.和其他方案对比 waxPatch: 是使用Lua+Wax打补丁的方案,App需要集成Lua解释器和Wax框架(接近1M)。不过waxPatch对Block不太完善,多线程补丁也可能有问题,Wax也已经两年没人维护。相比之下TPatch更加轻量,对安装包影响仅200K,功能也更加强大。 JSPatch: 同样使用JS来打补丁,和TPatch终端组件核心原理是相似的。不过JSPatch在实际的海量产品中运用还有不少问题没解决,比如Block传递、多线程Crash等问题,TPatch解决了这些问题,更加稳定,并且支持异步机制、动态回滚等优化特性。 第一 早在他们出来之前wax早就被ali团队进行了相当牛逼的超大功能扩展和维护,人家阿里团队没有舔着脸换个名字,不开源,光可劲的吹牛逼 第二 拿自己跟一个 早就开源接近半年的项目,口口声声说我们的思路一样?但是这优化的好,那优化的好,然后你不开源?你不开源但你说你跟人家恰巧想到一块去了,然后换个名字重新发布? tmlgbd借着这个吹牛逼 部门内诞生了不少高工拿了不少股票吧?这到底是自己吹牛逼发布的TPatch啊?还是 优化了Jspatch把人家贬了一通,然后还换了个名字,不开源只顾吹牛逼? 说吹牛逼 这个说得不对,jspatch作者说 他们当时也找他询问里面的实现细节,以及可能存在哪些问题,交流怎样修改,实际上他们是做了贡献的
apocalypse机器人#2 · 2015/11/18
我只是觉得 拿不开源的东西,和开源的东西比吹牛逼。。。。这逼装的真是有点过了 没错 这样做一点错没有 qq空间真棒 欢呼 PS:一家之言 我也不一定知道事情的原貌...充满了个人看法的感情色彩... 哎 觉得我不对的轻点喷
icyfox机器人#3 · 2015/11/18
iOS技术不懂,我就是想问问,这一个公司里做两个工具竞争,想啥呢?
apocalypse机器人#4 · 2015/11/18
【 在 icyfox 的大作中提到: 】 : iOS技术不懂,我就是想问问,这一个公司里做两个工具竞争,想啥呢? 可能都不涉及跨部门 单是qq空间内部 为了升迁升级,吹牛逼,忽悠好了mananger 吹自己牛逼。。。
apocalypse机器人#5 · 2015/11/18
【 在 icyfox 的大作中提到: 】 : iOS技术不懂,我就是想问问,这一个公司里做两个工具竞争,想啥呢? 就跟我厂 同质类产品线都很多 互相竞争。。。百度阅读 百度文学。。。。实际上都是电子书。。完全是TM2个部门 还八竿子打不着
icyfox机器人#6 · 2015/11/18
...还是有钱 【 在 apocalypse (鱼雷粉丝团の团长|味精fan彩英) 的大作中提到: 】 : 就跟我厂 同质类产品线都很多 互相竞争。。。百度阅读 百度文学。。。。实际上都是电子书。。完全是TM2个部门 还八竿子打不着
icyfox机器人#7 · 2015/11/18
开源闭源,速度快的就是好的吧?
apocalypse机器人#8 · 2015/11/18
【 在 icyfox 的大作中提到: 】 : 开源闭源,速度快的就是好的吧? 他们确实优化了 这点我写了。。 这牛逼装的有点过了
icyfox机器人#9 · 2015/11/18
也就是他们没法证明不是fork了JSPatch,然后做出来的东西.. 【 在 apocalypse (鱼雷粉丝团の团长|味精fan彩英) 的大作中提到: 】 : 他们确实优化了 这点我写了。。 : 这牛逼装的有点过了