這幾天陸陸續(xù)續(xù)調(diào)研了下熱更新匹摇、內(nèi)存泄露檢測的開源小工具,使用熱更新可以解決正式版本上線后出現(xiàn)重大影響的bug甲葬,內(nèi)存泄露檢測則可某種程度解決app長時間不使用卡頓的問題廊勃,下面簡單給大家介紹一下:
1熱更新
所謂熱更新就是指代碼可以不通過重新打包的方式來更新客戶端的執(zhí)行代碼,借助于熱更新技術(shù)可以解決正式版本上線后出現(xiàn)的影響較大的bug(理論上全部可以解決经窖,但bug越復(fù)雜則腳本也會越復(fù)雜)坡垫。去年其實也斷斷續(xù)續(xù)研究過一想結(jié)合Waxpatch使用Lua腳本來實現(xiàn)熱更新,但如果真正實施還需server端的配合画侣,想法一直被擱置冰悠,今年我們使用的crash監(jiān)控平臺Bugly正好推出了熱更新功能,下面我主要給大家介紹下youqu項目里的熱更新實踐配乱。
(1)集成以及配置
使用Cocoapods集成溉卓,然后在appdelegate初始化配置皮迟,具體集成及配置可直接參見Bugly iOS熱更新SDK使用指南:
https://bugly.qq.com/docs/user-guide/instruction-manual-ios-hotfix/?v=20161229104838
(2)實踐:我想在版本上線后通過發(fā)布熱更新腳本將網(wǎng)頁版登錄的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代碼轉(zhuǎn)JS,具體見網(wǎng)站:
http://bang590.github.io/JSPatchConvertor/
(寫這段腳本的坑點在于類里面的枚舉腳本不識別的诵,需強制寫成直接的值万栅,腳本的轉(zhuǎn)換,腳本的坑點應(yīng)該還有很多西疤,越復(fù)雜的bug腳本也就會越復(fù)雜烦粒,所以熱更新并不是百分百的完美解決方案)
ii:本地測試
打開本地調(diào)試開關(guān),將腳本直接導(dǎo)入到工程目錄里即可測試
iii:bugly平臺環(huán)境測試
將本地調(diào)試開關(guān)關(guān)閉代赁,然后在bugly上傳腳本即可
一切配置準(zhǔn)備完畢后扰她,重啟app即可看到效果(也可將腳本生效的地方寫在app激活時),貼一張我的實踐圖:
JSPatch的實現(xiàn)原理貼幾個比較全的文檔可自行參看:
JSPatch實現(xiàn)原理詳解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內(nèi)存泄露檢測
在知乎專欄看到一篇微信讀書iOS端性能優(yōu)化的文章芭碍,借鑒了它使用的MLeakFinder工具徒役,具體可參見https://zhuanlan.zhihu.com/p/21682730。
悠趣項目實踐:
(1)集成
pod 'MLeaksFinder'
(2)檢測窖壕,根據(jù)提示去檢查代碼