Android中插件化简析

2020-04-18  本文已影响0人  MadnessXiong

插件化简介

Android中热修复主要用来修复bug,插件化则主要用来增加功能,将一些独立的功能打包为单独的dex作为插件。在需要的时候再动态加载。

Android中的插件化以Hook方式为主流。

Activity插件化

Activity的插件化必然涉及Activity的启动过程。从Android中根Activity的启动过程可知,Activity的启动分为3个阶段

Launcher或Activity请求AMS过程(第一次启动应用程序或应用程序打开新的Activity)

AMS到ApplicationThread的调用过程

ActivityThread启动Activity过程

因为Activity启动时必须先在Manifest中注册。而插件中的Activity是无法提前注册的。再根据Activity的启动过程,那么Activity的插件化可以分为以下3步:

占坑:使用一个占坑Activity-LocalActivity在Manifest中注册,避免插件Activity没有注册导致崩溃的情况

绕过AMS验证:启动插件Activity-PlugActivity时,将PlugActivity替换为LocalActivity,进行AMS的验证,生命周期及栈管理。

还原Activity:AMS调用ActivityThread启动Activity时,将LocalActivity再替换为PlugActivity

那么再看每一步的具体实现:

上一篇 下一篇

猜你喜欢

热点阅读