Replugin Application初始化流程

本文探讨了Replugin在Android应用中的初始化流程,重点在于PmBase.init的两个进程——GuardService和主进程之间的交互。通过ContentProvider而非bindService获取plugin信息,以及如何确保在主进程查询时GuardService已初始化。同时,文章提到了mLocalCookie的重要性,它在启动plugin进程时发挥作用。PluginProcessMain类在管理进程信息中扮演关键角色,如PmHostSvc的存储。对于为何所有信息存储于persist进程,文章提出了疑问并讨论了可能的原因。
摘要由CSDN通过智能技术生成
RePluginApplication.attachBaseContext
    RePlugin.App.attachBaseContext
        IPC.init -- 进程名,进程ID的保存等
        PMF.init -- 重要流程
            PmBase实例化 -- 主要是PluginProcessPer的实例化,负责初始化坑位
            PmBase.init -- 这里两个进程的初始化做的工作不一样。GuardService读取plugins-builtin.json文件及扫描路径,构建plugins信息。主进程通过binder获取到GuardService进程中的plugins信息
            PatchClassLoaderUtils.patch -- 反射替换application.mPackageInfo.mClassLoader为RePluginClassLoader,这也是唯一进行反射的地方

这里PmBase.init涉及到两个进程,GuardService进程初始化的时候扫描文件构造plugin信息,主进程通过ContentProvider得到cursor,进一步得到binder(也就是PmHostSvc)然后得到plugin信息。

有两点不太明白:1、为什么不用bindService?2、主进程通过binder查询信息的时候GuardService进程就一定初始化好了吗,怎么保证的,通过ContentProvider?

RePlugin.onCreate
    ...
    PmBase.callAppCreate -- 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值