当前位置:网站首页 > 编程语言 > 正文

越狱源搭建源码(越狱源在线工具箱)



打算从以上四个模块对replugin进行拆解阅读

RePlugin的思想是Hook ClassLoader, 因此接下来就围绕ClassLoader进行分析

一、流程总结
1.1 插件的安装

  RePlugin插件的安装并不会真正的处理插件APK中的dex、so库、资源等, 只是将插件移动到需要的位置, 这个位置默认是宿主的context.getFilesDir(), 然后将插件信息包装成Plugin对象并绑定宿主的Context、宿主ClassLoader、负责和宿主通信的PluginContextImpl类, 最后将Plugin对象存入插件管理进程统一管理.

1.2 内置插件

  内置插件的安装是在初始化时就自动安装和加载了

1.3 外置插件

  外置插件的安装需要调用Replugin.install()方法来安装插件, 这个过程和内置插件类似, 区别就是内置插件是通过assets目录下的json文件来生成插件对象, 外置插件则是通过获取插件apk的PackageInfo来生成插件对象, 但是并不会处理apk中的dex、so库、资源等, 只有当真正使用这个插件中的类时才会去真正的解析加载这个插件

1.4 replugin-host-gradle
1.5 replugin-host-library

  这个库是由主程序依赖的, 也是RePlugin的核心, 它的主要职责是初始化Replugin的整体框架, 整体框架使用了Binder机制来实现多进程直接的沟通和数据共享, 或者说是插件之间和宿主之间沟通和数据共享, hook住ClassLoader, 加载插件、启动插件、多插件的管理全部都由这个库辅助

1.6 replugin-plugin-gradle

  这个是插件工程使用的gradle插件, 这个库使用了Transform API和Javassist实现了编译期间动态修改字节码文件, 主要是替换插件工程中的Activity的继承全部替换成Replugin库中定义的XXXActivity, 动态的将插件APK中调用LocalBroadcastManager的地方修改为Replugin中的PluginLocalBroadcastManager调用, 动态修改ContentResolver和ContentProvider的调用修改成Replugin调用, 动态的修改插件工程中所有调用Resource.getIdentifier方法的地方, 将第三个参数修改为插件工程的包名

1.7 replugin-plugin-library

  这个库是由插件工程依赖的, 这个库的主要目的是通过反射的方式来使主程序中接口和功能, 这个库在主程序加载插件apk后悔进行初始化.

二、RePluginClassLoader初始化
2.1 ClassLoader

Android系统默认三个ClassLoader

Replugin提供了两个ClassLoader
宿主APP中的ClassLoader, 加载应用内部的Activity
加载插件的Loader.




2.2 RePluginApplication初始化
2.3 PatchClassLoaderUtils.patch
2.4 创建RePluginClassLoader
三、下载插件
方法调用链
3.1 Replugin.intall
3.2 MP.pluginDownloaded
3.3 PmHostSvc
3.4 PluginManagerServer.intallLocked
四、加载插件
方法调用链
3.1 Replugin.startActivity
3.2 PluginLibraryInternalProxy.startActivity
3.3 PluginCommImpl.loadPluginActivity
3.4 PluginProcessPer.allocActivityContainer
到此这篇越狱源搭建源码(越狱源在线 工具箱)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • tkdd期刊(tkdd期刊怎么样)2025-06-01 09:54:10
  • 苹果电脑装双系统(苹果电脑装双系统好用吗)2025-06-01 09:54:10
  • ubuntu 源设置(ubuntu20源)2025-06-01 09:54:10
  • vb方法的概念(vb的语法规则)2025-06-01 09:54:10
  • wifi字典破解手机版(wifi字典破密码成功率)2025-06-01 09:54:10
  • udp发送广播包(udp 广播报文)2025-06-01 09:54:10
  • linux修改文件权限为可读写(linux修改文件权限为可执行)2025-06-01 09:54:10
  • u盘启动盘怎么制作win7(u盘制作win7系统启动盘)2025-06-01 09:54:10
  • 游戏的分类标准是什么 继续教育(游戏分类的标准是什么多选题公需课)2025-06-01 09:54:10
  • 越狱源中文源2024(2020最新越狱源中文)2025-06-01 09:54:10
  • 全屏图片