http://mp.weixin.qq.com/s?__biz=MzAwOTE0ODEwMQ==&mid=2650686816&idx=1&sn=906f53c85d67d5e61e8fdcdfb9abd6ea&chksm=836ee6cab4196fdcaae50205e707b20c6fb18f7bf2589c8085d0064575dc5f8db752c9253c1e&mpshare=1&scene=23&srcid=0413RfXmlpmRIxNOzEMMDO2o#rdios:
https://jspatch.com/
https://github.com/bang590/JSPatch
http://blog.csdn.net/u013602835/article/details/52777852
现在比较流行的热修复技术:
一、使用JSPatch进行热修复。
JSPatch能做到通过JS调用和改写OC方法。最根本的原因是 Objective-C 是动态语言,OC上所有方法的调用/类的生成都通过 Objective-C Runtime 在运行时进行,我们可以通过类名和方法名反射得到相应的类和方法,也可以替换某个类的方法为新的实现,还可以新注册一个类,为类添加方法。JSPatch 的原理就是:JS传递字符串给OC,OC通过 Runtime 接口调用和替换OC方法。
看了一下JSPatch的源码,主要就是通过OC的runtime原理,使用JS语句实现动态更改OC源码的目的,类似C++中的多态性。
JSPathch是一个开源项目,在github上,下载地址:JSPatch下载地址。里边有相关文档,简单易懂。另外。这里有一篇JSPatch作者写的实现原理,解释的还是蛮不错的,博客地址:JSPatch实现原理。
同时在这里给大家一个比较好的网站 ,OC转JS工具,这是一个OC转JS的一个工具网站。
具体实现参考博客:http://www.jianshu.com/p/8cec322531ae
二、使用ReactNative实现热修复。
ReactNative是facebook提供的一种开源框架,使用JS语法进行跨平台开发,深受开发者青睐。直接使用ReactNative实现热修复的好像不是很多,比较流行的是使用微软的CodePush。
这个是CodePush 的官方网站地址,这个是CodePushGitHut地址。
具体实现参考博客:http://blog.csdn.net/u011151353/article/details/50688681
三、使用Lua+Wax打补丁的方案实现热修复。
使用Lua+Wax打补丁的方案,App需要集成Lua解释器和Wax框架(接近1M)。不过waxPatch对Block不太完善,多线程补丁也可能有问题,Wax也已经两年没人维护了,而且Lua调试起来也不方便。
lua cocos2dx
=====================
android hotfix
http://blog.csdn.net/lmj623565791/article/details/49883661
https://github.com/search?o=desc&q=hotfix&s=stars&type=Repositories&utf8=%E2%9C%93
https://github.com/Tencent/tinker
https://github.com/alibaba/AndFix
https://github.com/dodola/HotFix
https://github.com/jasonross/Nuwa
=========================
App的插件框架
360使用:
https://github.com/DroidPluginTeam/DroidPlugin
android插件框架,免安装运行插件APK ,支持独立插件和非独立插件
https://github.com/limpoxe/Android-Plugin-Framework
http://blog.csdn.net/hudashi/article/details/50921606
规模大了后可能会用到.
atlas:
http://www.chinaz.com/biz/2017/0313/672270.shtml
据悉,Atlas特别适用于大规模团队的协同开发。通过提供组件化、动态性、解耦化的支持,Atlas能够实现每个业务在开发阶段独立编译、独立调试、独立运行,最后再以一个组件的形式集成到客户端中,每个业务之间并行开发互不影响。此外,还具备客户端动态发版和快速修复的能力。
目前,手机淘宝 20 个协作团队开发的60+业务组件,数百万行代码都运行在Atlas上。快速迭代让应用真正实现了随时更新,有效降低了版本频繁发布给用户带来的困扰。
https://github.com/alibaba/atlas
携程Android App插件化和动态加载实践
http://mp.weixin.qq.com/s?__biz=MzAwMTcwNTE0NA==&mid=400217391&idx=1&sn=86181541ce0164156dfab135ed99bb5c&mpshare=1&scene=23&srcid=1104ZmIyIAnR08bfo9jDzuT2#rd
http://mp.weixin.qq.com/s?__biz=MzAwMTcwNTE0NA==&mid=400326703&idx=1&sn=23f689e24a2a37853fbe601ce9ef800b&mpshare=1&scene=23&srcid=0413dmEXqcSH0n7xX2WkdOj1#rd
https://github.com/CtripMobile/DynamicAPK
以前折分web留下的思维习惯,其实app用得比较少。