動態加載技術,咱們常見的動態加載技術,web或者webapp是最典型的一類。git
1. 常見的web技術github
2.DL框架,相似Lanucher的技術web
https://github.com/singwhatiwanna/dynamic-load-apk安全
3.Android-Plugin-Framework框架網絡
https://github.com/limpoxe/Android-Plugin-Framework app
以上三種模式,第一種成本較低,但體驗相對差,每次都須要請求網絡。第二種和第三種是純Native的技術,都比較強大,都使用了DexClassLoader,但DL框架有個明顯的缺陷是不夠安全,由於他能夠啓動獨立的apk,試想一下,有個apk給你偷偷的下載其餘你不知道的apk,而後默認啓動,這明顯不符合用戶意願,固然風險也是相對較高的,至於Android-Plugin-Framework,我的比較推薦,由於他避免了非註冊apk獨立運行的問題。框架
WebNativeActivity 意思是將Activity做爲一個相似WebView,運行Native代碼的容器,這樣咱們的app值註冊至少1個Activity就行,運行的layout和drawable文件從網絡下載下來以後加載,(固然能夠保存到本地,甚至能夠及時更新)webapp
可行性研究分析spa
1layout問題插件
對於layout咱們能夠本身定義DSL或者使用自定義的layout.xml文件,而後經過咱們本身的XMLParse來實現UI
固然咱們也能夠使用LayoutInflater+LayoutInflater.Factory2,更加快速,並且能直接獲取xml文件的屬性
2.資源問題
對於資源的訪問規則,咱們須要本身定義一套訪問規則,由於原生規則可能沒法和layout匹配
3.邏輯問題
咱們能夠經過DexClassLoader加載Dex實現邏輯,固然也能夠藉助WebView