分享

用Lua给你的程序打patch(续)

 quasiceo 2014-01-20


今日分享:用Lua给你的程序打patch(续)


昨天仔细阅读了一下大众点评的屠毅敏开源的WaxPatch项目,他是通过修改wax的实现达到动态打Patch的功能。主要是修改了wax中的wax_instance.m文件。具体做法是:在wax中加入了class_replaceMethod来替换原始实现。


由于担心使用该API的审核问题,我还查了一下,被广泛使用的AFNetworking网络库也使用了class_replaceMethod方法(AFHTTPRequestOperation.m文件第90行)所以使用该方法应该是安全的。


感兴趣的可以好好阅读一下这个示例项目,源码地址是:https://github.com/mmin18/WaxPatch


屠毅敏也将相关文章放到github上,地址是:https://github.com/mmin18/Create-a-More-Flexible-App,在该文章中,屠毅敏不仅介绍了iOS动态打Patch的原理和示例代码,还介绍了在Android开发中相关的经验。该文章也发表于2012年9月的《程序员》杂志中,值得一读。


另外有人回复关心使用wax后的app体积增涨,我拿公司的项目简单测试了一下,增加wax的依赖后,体积增加了300K,应该算是可以承受的范围。


还有不少同学的回复中表达了对于苹果审核的担心,对此我觉得:

1. Lua在iOS游戏中被广泛使用。

2. wax在大众点评的iOS版被明确使用。

3. 苹果在审核时会扫描App应用的API列表,而wax项目并不含任何私有API的调用。

4. 苹果对于应用的审核态度和尺度一直在变化。不同审核员的尺度也不太一样。


综上,使用wax或WaxPatch应该是有一定的审核风险的,但是应该问题不大。如果有同学在使用wax或waxPatch审核通过了(或被拒了),麻烦请告诉我一声,我可以及时告知大家。


最后说一下我对wax项目的看法,如果你去github上看wax项目的提交记录的话,就会发现wax已经2年没有更新了。基本上对于公司的正式项目,使用Lua写Objective-C还是不太合适,所以大众点评也只是用Lua来打些Patch而已。


业界对于对其它语言来开发iOS程序的尝试一直都没有停止过,除了上面提到的wax,还有现在比较有名的PhoneGap框架,是使用Javascript来开发iOS程序,当然,Javascript也可以通过服务端动态升级,以此来绕过苹果审核的限制。不久前,业界还出了一个名为RubyMotion的框架(http://www./),可以使用Ruby来开发iOS程序。


对于PhoneGap框架,我在网易工作时,听闻有一些项目使用它,结果做出来UI体验非常差,最终只有换成原生的。RubyMotion是收费的,没用过不好评价。不过在现阶段,我还是不太看好这些技术,或许以后手机的CPU和GPU牛逼了,这些框架才能真正流行起来。


今日消息:

1. 在我刚说完微信的归档性太弱,不能查看历史消息的第二天,腾讯就更新了微信,加入了查看历史消息的功能。具体做法是:

点击屏幕右上角的人形小图标,然后在出现的界面中选择“查看历史消息”的按钮即可。


2. 不少同学回复说,同意微信公共平台适合发心灵鸡汤不适合深入讨论技术。但是我确实没什么鸡汤可发,所以说以后就打算有些干货时再发就行了。频率保持每周1-2次。


3. 大家在iOS开发中遇到什么问题也可以问我,但希望问之前能先Google一下。如果觉得在微信上打字太麻烦,也可以在微博上给我发私信,我的新浪微博是 @唐巧_boy 。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多