關于Android需要知道的一些事
插件化、熱修復 、熱更新的理解
插件化 – apk 分為宿主和插件部分,插件在需要的時候才加載進來
熱修復 – 更新的類或者插件粒度較小的時候,我們會稱之為熱修復,一般用于修復bug
熱更新 – 2016 Google 的 Android Studio 推出了Instant Run 功能 同時提出了3個名詞
“冷部署” – app需要重啟,比如繼承關系的改變或方法的簽名變化等。
“ 熱部署” – 方法內的簡單修改,無需重啟app和Activity。
“暖部署” – app無需重啟,但是activity需要重啟,比如資源的修改。
站在app開發者角度的“熱”是指在不發版的情況來實現更新
而Google提出的“熱”是指值是否需要重新啟動。 - 同時在開發插件化的時候也有兩種情景
一種是插件與宿主apk沒有交互,只是在用戶使用到的時候進行一次吊起
還有一種是與宿主有很多的交互
你認為android熱更新框架哪個好:
1.阿里的熱更新框架已經開源 了。但已經很久沒有更新過新版本了。當前的版本只支持到了 Android 4.4。由于 5.0 起新的 ART 虛擬機、更嚴格的 SELinux 策略以及對 64 位的支持之類的事,使得 Xposed 都在開發上做了很多調整。我不知道 Dexposed 現在是否支持,但至少阿里沒有開源。
2.在本地動態執行遠端下發的代碼是極度危險的行為。利用此方法執行非法代碼等或用于繞過 Google Play 等市場的審查是違反相關協議的,也是對用戶極度不負責任的行為。
3.在一些訪問非常密集的地方使用熱更新可能會對效率產生相對比較大的影響,應該避免使用。
4.我們可以對 Java 的 Engine 進行一些封裝成為一個 HotPatch 類使得它更適合做熱更新的工作。
5.首先,檢查熱更新補丁的管道一定要建立在 https 上,因為下發代碼是極其危險的,如果被劫持,后果是無法想象的。其次,請求時最好自動帶上 Android 版本、手機型號、地區、版本號等信息,以方便更精確地下發,千萬不能下發錯。
6.Java在運行時加載對應的類是通過ClassLoader來實現的,ClassLoader本身是一個抽象來,Android中使用PathClassLoader類作為Android的默認的類加載器
7.我們的如果想做hotpatch,一定要保證我們的hotpacth dex文件出現在dexElements列表的前面。
二。常用的熱更新技術框架:
基于QQ空間的HotFix →→ 要使用到android dex分包方案→拆分dex的項目的話,可以參考一下谷歌的multidex方案實現。
大眾點評的NuWa←項目補丁自動化做的很完整
alibaba/AndFix
阿里巴巴的DexPosed
dalvik_patch實現multidex
使用React-Native實現app熱部署的一次實踐
alibaba/AndFix
基礎
activity生命周期圖解
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%