从DroidPlugin的官方文档中我们知道。
2 在AndroidManifest.xml中使用插件的com.morgoo.droidplugin.PluginApplication:
或者在自定义的Application的onCreate()函数中,调用PluginHelper.getInstance().applicationOnCreate(getBaseContext());
在Application的attachBaseContext()函数中,调用
PluginHelper.getInstance().applicationAttachBaseContext(base);
接下来就先分析PluginHelper.applicationOnCreate();
第一步PluginHelper.applicationOnCreate();
public void applicationOnCreate(final Context baseContext) {
mContext = baseContext;
initPlugin(baseContext);
}
这个函数比较简单,只是保存传入的Context对象,然后调用PluginHelper的initPlugin这个函数。
第二步PluginHelper. initPlugin()函数如下:
private void initPlugin(Context baseContext) {
fixMiUiLbeSecurity();
PluginPatchManager.getInstance().init(baseContext);
PluginProcessManager.installHook(baseContext);
if (PluginProcessManager.isPluginProcess(baseContext)) {
PluginProcessManager.setHookEnable(true);
} else {
PluginProcessManager.setHookEnable(false);
}
PluginManager.getInstance().addServiceConnection(PluginHelper.this);
PluginManager.getInstance().init(baseContext);
}
A 适配小米系统 fixMiUiLbeSecurity
首先调用fixMiUiLbeSecurity函数如下:
//解决小米JLB22.0 4.1.1系统自带的小米安全中心(lbe.security.miui)广告拦截组件导致的插件白屏问题
private void fixMiUiLbeSecurity(){
//卸载掉LBE安全的ApplicationLoaders.mLoaders钩子
Class ApplicationLoaders = Class.forName("android.app.ApplicationLoaders");
Object applicationLoaders = MethodUtils.i