VirtualApk源码分析

  • 时间:
  • 浏览:1
  • 来源:uu快3大小_uu快3网站_开奖历史

mPackage.receivers在解析Apk的后来生成的,生成的主要代码如下:

至此,就完成静态广播的插件化。

广播的注册分为静态注册和动态注册并不是生活,android关于广播的源码分析能不能参照此文 :

获取到receivers后来,通过插件ClassLoader(DexClassLoader)就能不能加载对应的Receiver对象,最后通过mHostContext.registerReceiver就能不能对静态广播动态注册。

广播的插件化指的是插件能不能接受到结构的广播,即插件apk里的Receiver对象能不能响应对应的广播。动态注册的广播指的是在插件apk中调用registerReceiver进行注册的广播,你并不是场景不时需进行不得劲除理。

在加载插件Apk的后来通过PackageParser对Apk进行解析,生成LoadedPlugin对象,该对象结构有个 PackageParser.Package类型的变量mPackage,mPackager保存了插件apk的AndroidManifest.xml中注册的四大组件信息,通过读取mPackage里边的receivers,动态进行广播注册即可。代码如下:

动态注册插件的广播

PackageParser.parseBaseApplication

https://www.jianshu.com/writer#/notebooks/11066526/notes/28225946

PackageParser.parseBaseApplication通过解析AndroidManifest.xml中的<receiver>标签,生产Receiver对象,parseActivity为生成静态广播对象的函数。

插件中静态注册的广播,VirtualApk除理的辦法 也很简单:将插件apk的AndroidManifest.xml中静态注册的Receiver通过动态registerReceiver注册到宿主Context中即可。