说明:本工程是VirtualApp项目的非官方文档。
理解VirtualApp代码的过程中,对我帮助很大两组系列文章:
PS.还有很多文章无法一一列举, 谨表谢忱。
VirtualActivityManagerService启动流程
注意:VA对client的xml中定义的receiver(静态广播接收器)做了处理,详细参考VAInstall流程图。
动态注册Broadcast,最终都会调用ActivityManagerNatvie#registerReceiver方法,因此VA中hook了这个方法然后改造IntentFilter的ACTION字段,具体改造方法与静态广播接收器的方式相同。然后创建一个新的IIntentReceiver$Stub
对象,传递给AMS。也就是所谓静态代理方式。
代码:RegisterReceiver.java
请参考下面类结构图。
PS