这几天陆陆续续调研了下热更新、内存泄露检测的开源小工具,使用热更新可以解决正式版本上线后出现重大影响的bug,内存泄露检测则可某种程度解决app长时间不使用卡顿的问题,下面简单给大家介绍一下:
1热更新
所谓热更新就是指代码可以不通过重新打包的方式来更新客户端的执行代码,借助于热更新技术可以解决正式版本上线后出现的影响较大的bug(理论上全部可以解决,但bug越复杂则脚本也会越复杂)。去年其实也断断续续研究过一想结合Waxpatch使用Lua脚本来实现热更新,但如果真正实施还需server端的配合,想法一直被搁置,今年我们使用的crash监控平台Bugly正好推出了热更新功能,下面我主要给大家介绍下youqu项目里的热更新实践。
(1)集成以及配置
使用Cocoapods集成,然后在appdelegate初始化配置,具体集成及配置可直接参见Bugly iOS热更新SDK使用指南:
https://bugly.qq.com/docs/user-guide/instruction-manual-ios-hotfix/?v=20161229104838
(2)实践:我想在版本上线后通过发布热更新脚本将网页版登录的cell高度改为80dp(原为44dp)
i:写JSPatch脚本
JSPatch脚本语法可参见:
https://github.com/bang590/JSPatch/wiki/JSPatch-%E5%9F%BA%E7%A1%80%E7%94%A8%E6%B3%95#%E5%8F%82%E6%95%B0%E4%BC%A0%E9%80%92
也可以直接OC代码转JS,具体见网站:
http://bang590.github.io/JSPatchConvertor/
(写这段脚本的坑点在于类里面的枚举脚本不识别,需强制写成直接的值,脚本的转换,脚本的坑点应该还有很多,越复杂的bug脚本也就会越复杂,所以热更新并不是百分百的完美解决方案)
ii:本地测试
打开本地调试开关,将脚本直接导入到工程目录里即可测试
iii:bugly平台环境测试
将本地调试开关关闭,然后在bugly上传脚本即可
一切配置准备完毕后,重启app即可看到效果(也可将脚本生效的地方写在app激活时),贴一张我的实践图:
JSPatch的实现原理贴几个比较全的文档可自行参看:
JSPatch实现原理详解http://blog.cnbang.net/tech/2808/
JSPatch Git源码和使用说明https://github.com/bang590/JSPatch
Bugly iOS热更新SDK使用指南:
https://bugly.qq.com/docs/user-guide/instruction-manual-ios-hotfix/?v=20161229104838
2内存泄露检测
在知乎专栏看到一篇微信读书iOS端性能优化的文章,借鉴了它使用的MLeakFinder工具,具体可参见https://zhuanlan.zhihu.com/p/21682730。
悠趣项目实践:
(1)集成
pod 'MLeaksFinder'
(2)检测,根据提示去检查代码