Android 动态加载插件与WebNativeActivity构想

动态加载技术,我们常见的动态加载技术,web或者webapp是最典型的一类。


一.动态加载插件技术

1. 常见的web技术

2.DL框架,类似Lanucher的技术

https://github.com/singwhatiwanna/dynamic-load-apk

3.Android-Plugin-Framework框架

https://github.com/limpoxe/Android-Plugin-Framework


以上三种模式,第一种成本较低,但体验相对差,每次都需要请求网络。第二种和第三种是纯Native的技术,都比较强大,都使用了DexClassLoader,但DL框架有个明显的缺陷是不够安全,因为他可以启动独立的apk,试想一下,有个apk给你偷偷的下载其他你不知道的apk,然后默认启动,这明显不符合用户意愿,当然风险也是相对较高的,至于Android-Plugin-Framework,个人比较推荐,因为他避免了非注册apk独立运行的问题。


二.WebNativeActivity构想实现动态加载

WebNativeActivity 意思是将Activity作为一个类似WebView,运行Native代码的容器,这样我们的app值注册至少1个Activity就行,运行的layout和drawable文件从网络下载下来之后加载,(当然可以保存到本地,甚至可以及时更新)


可行性研究分析

1layout问题

对于layout我们可以自己定义DSL或者使用自定义的layout.xml文件,然后通过我们自己的XMLParse来实现UI

当然我们也可以使用LayoutInflater+LayoutInflater.Factory2,更加快速,而且能直接获取xml文件的属性

2.资源问题

对于资源的访问规则,我们需要自己定义一套访问规则,因为原生规则可能无法和layout匹配

3.逻辑问题

我们可以通过DexClassLoader加载Dex实现逻辑,当然也可以借助WebView







你可能感兴趣的:(Android 动态加载插件与WebNativeActivity构想)