阿里巴巴朱中明--Android熱修復技術分析和阿里的技術實踐
原創【51CTO.com原創稿件】 在WOT2016移動互聯網技術峰會上,阿里朱中明老師為我們講解熱修復里面問題。***講解熱修復的技術,第二講解HotFix。
熱更新和熱修復的區別
通常所說的熱更新和熱部署都是對這個已經發布的客戶端代碼做一個更新,這里面有一個不同點,熱更新強調它是一種實時更新和微小改動,而在熱部署里面講的是在工具鏈和工程上的完整的更新周期。
攔截技術
因為在熱更新里面其實只講到了兩個比較重要的點,***個就是攔截。這個攔截在業界里面,現在只有三種方面,***種是類替換,第二種是AOP,第三種是方法直接替換。它在兼容性是***的,在任何的產品上應該都是能使用的。缺點它主要是以class為單位做更新,因為它不能做某一個具體部分的更新。它其實有兩個缺點,***有一定的性能損失,第二在多數情況下都需要重啟的。
攔截器
做java的都知道這個叫AOP。通過AOP的開發,它的性能損失是幾乎無損,并且它并不需要做重啟。但是它有兩個比較大的問題,***個兼容性不太好,因為它涉及到VM底層的實現。第二這個patch代碼是一個專用的代碼,這個代碼以后不會在你的工程里面有任何的留存,相當于里就是一個補丁,它是一個真正的補丁。
方法替換
方法替換的優點跟攔截器幾乎是差不多的。***個它的力度非常小,導致它的patch包會相對小。第二個在性能上面其實是沒有任何損失的。除了***次把這個子項的地方改進之后,就沒有任何的損失。它會有一些缺點,***個在兼容性上會有一些問題,因為它也會涉及到底層的VM實現。第二同樣它在編寫的時候是有一些限制的,比如說可能不能改屬性,改方法的時候有一些或多或少的限制,包括不能使用放棄所以也會存在這個代碼可能有一定的專業有限的可能性,這也算一個缺點。
安全加護的工具
這個工具對我們來說是非常致命的。其實安全加護的工具并不是對代碼做的,大部分的安全加護的工具做兩塊事情,***個把APK包的結構做了一個變化,第二把一些資源的名字和一些位置做了一些串,主要是增加了一些成本。安全這件事情永遠都是一個游戲,這個游戲是循環下去的。并且安全這個東西是非常灰色的。很多人知道它的破解過程非常簡單,就是把APK解開,把里面的代碼和東西。其實那個代碼里面就是有問題的,把所有的簽名全部抹掉,重新抹一遍,就會有問題。所以在打這個包之前,是不能用安全加護的。
【51CTO原創稿件,合作站點轉載請注明原文作者和出處為51CTO.com】