360replugin文件夹里边放的是什么

360replugin文件夹里边放的是什么,第1张

工程。RePlugin是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的RePluginTeam研发,也是业内首个提出”全面插件化“概念的软件。文件夹里是工程,用户可以直接在文件夹中打开。

时隔4年。本文再次来聊聊Shadow 这个0 hook的插件库。目前看来,确实是腾讯这个Shadow 插件库做到0 hook api实现插件化。在腾讯内部也是广泛使用,其设计上解藕的非常好,可以独立升级插件的插件依赖库很少造成冲突,可以几个版本的Shadow插件混用不造成异常。

如果还在观望的朋友,相信阅读完本文可以对这个插件库有更多的信心。当然如果是到海外,Google市场,可能需要自己斟酌一二再使用Shadow。毕竟对于Google来说动态更新这个行为也不是它希望的。

不熟悉插件化原理的,可以阅读我之前写插件文章 横向浅析Small,RePlugin两个插件化框架 ,在里面深刻的描述了3年前的插件化的原理。

有什么问题可以来本文 >

一、replugin  是360 第2代插件库(上一代是droidplugin) ,兼容性、稳定性及侵入性方面都做了很大改良和优化,当然DroidPlugin 也是一个优秀的插件库(作者张勇也是技术大牛,在Android插件化领域,很影响力)

先说一下RePlugin的主要优势哈

1十分灵活:主程序无须在Android市场升级,支持四大组件

2及其稳定:hook点仅有一处(classLoader),崩溃率低于万分之一

3兼容性比第1代库大幅度提示,几乎覆盖所有44及其以上Android系统

二、套话说到这,聊点核心技术哈

1关于classLoader打破双亲委派 (classLoader加载class 先查看父classloader是否加载过,递归,如果直到根classLoader也没加载过,就自己加载咯),宿主用的classloader 实际是pathclassloader,插件用的是dexclassLoader 加载外部apk或dex。看了部分源码我的理解是宿主加载依然用系统的pathclassload 把宿主占坑的四大组件 加载进来,从这个PluginContainer对应集合里找出要调用的插件中的四大组件,因为插件的东西相对于宿主apk 而言是外部的,只能扩展dexclassLoader去加载插件里对应的四大组件。宿主和插件,是平行的关系。宿主给自己找了一些兄弟,这些兄弟帮自己加载不属于宿主中的四大组件。Hook点仅有一处(ClassLoader)。

2、拿startActivity  For example

启动插件Activity可以从RePluginstartActivity开始,startActivity经历了Factory、PmLocalImpl,其实大部分启动的逻辑其实主要在PmInternalImpl中。关键在于loadPluginActivity。这里获取了插件对应的坑位,然后保存了目标Activity的信息,通过系统启动坑位。因为已经Hook住了ClassLoader,在loadClass时再加载出目标Activity,这样坑位中承载的,便是绕过系统打开的目标Activity(插件里的activity)。如下或许帮助理解:

RepluginActivity-->FactorystartActivity-->PmlLocalImpstartActivity-->PmlInternalImplstartActivity

-->PmlLocalImplloadPluginActivity-->宿主系统startactivity--》pluginActiivty等--》回到宿主PmBase的PmlInternalImpl

以上就是关于360replugin文件夹里边放的是什么全部的内容,包括:360replugin文件夹里边放的是什么、Shadow源码解析、Replugin 浅谈等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9457781.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存