插件化&热更新

Android插件化与热修复(五)---DroidPlugin

2017-06-16  本文已影响739人  嘎啦果安卓兽

为什么出现插件化?

由于代码量的增加,App遇到65535问题。

模块解耦,独立开发,独立上线。


插件化要解决的问题

ClassLoader机制:可以用此进行类的加载。
组件生命周期管理:对于Android来说,组件是有生命的,所以还需要进行此项任务。

加载方式:基本大同小异,使用AssetManager的隐藏方法addAssetPath。
管理方式:或者共用一套资源,采用资源分段机制解决冲突;或者独立资源,不同插件管理自己的资源。


为什么选择360 DroidPlugin 进行介绍?

DroidPlugin Hook了系统几乎所有的Sevice,欺骗了大部分的系统API。
DroidPlugin中,插件是有血有肉的系统管理的真正组件。
DroidPlugin通过Hook增强了Framework层的很多系统服务,开发插件就跟开发独立app差不多。


Hook机制


Binder代理


四大组件的插件化

Activity

前言

进程间通信需要Binder对象。
插件化技术只能在本进程中做手脚,由于进程隔离的存在,我们对别的进程无能为力。
一般的Activity都是需要在AndroidManifest.xml中显式声明,否则报异常。

启动没有在AndroidManifest.xml中显式声明,但存在于自身APK中的Activity
启动没有在AndroidManifest.xml中显示声明,并且存在于外部插件中的Activity

BroadcastReceiver

前言

广播分静态广播和动态广播,两种广播的不同造成插件化方式也不同。静态广播需要预注册,注册信息存在PMS中;动态广播不需要预注册,注册信息存在AMS中;

动态广播
静态广播

Service

ContentProvider


总结


上一篇 下一篇

猜你喜欢

热点阅读