首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Activity插件解决方案

1.宿主App加载插件中的类 2.最简单的插件方案就是在宿主的androidmanifest.xml中申明插件中的四大组件 把插件dex合并到宿主dex中,那么宿主app对应的classloader...的插件方案 1)为插件创建一个LoadedApk对象,并把它事先放到mPackages缓存中。...// 替换 RefInvoke.setFieldObject(pathListObj, "dexElements", newElements); } } 解决插件...Activity启动模式的问题,使用的是占位Activity的思想,即事先为这3中启动模式创建很多的StubActivity,占位activity是什么启动模式,对应的插件activity就是什么启动模式...null; //系统原始的ClassLoader public static void init(Application application) { //初始一些成员变量和加载已安装的插件

55220

Android插件原理之Activity插件

前言 四大组件的插件插件技术的核心知识点,而Activity插件更是重中之重,Activity插件主要有三种实现方式,分别是反射实现、接口实现和Hook技术实现。...反射实现会对性能有所影响,主流的插件框架没有采用此方式,关于接口实现可以阅读dynamic-load-apk的源码,这里不做介绍,目前Hook技术实现是主流,因此本篇文章主要介绍Hook技术实现。...在讲到这两个解决方案前,我们需要从整体上了解Activity的启动流程。...接着在步骤2之后用插件Activity替换占坑的Activity,接下来根据这个解决方案我们来实践一下。...同时这一节使我们更好的理解了Activity的启动过程。更多的Android插件原理请查看即将要出版的《Android进阶之光》续作。

1.2K50
您找到你想要的搜索结果了吗?
是的
没有找到

学习笔记:插件Activity

这个cl其实就是插件的cl,也就是dexcl。我们在和AMS交互的时候可以传入对应的cl,之后创建再取出正确的cl。...注意点: 由于Activity默认是Standard模式,所以宿主中的一个Activity可以对应插件中的多个标准模式的Activity。每次启动都会创建一个实例。...commentName为key,真实的Activity实例为value(这个模拟的就是Activity栈);一个是当前APK中所有的Activity集合(是否可以通过类名找到对应的Activity信息)...越早越好 流程: 1.先遍历第二个集合中看插件中是否有对应Activity的信息。...实例和调用Activity方法进行额外的逻辑处理 2.首先看下已经启动的集合中Activity的数量,launchmode是针对多Activity才有用,如果栈中只有一个Activity那么launchmode

17620

Android插件——Activity的启动

在之前的文章中,我们有讲过Android插件加载资源。其核心思想是,通过仿照安装的流程,自行创建Resources,然后通过ResId去加载相应的资源。...同样,在启动插件Activity时,我们的思路也类似。通过仿照Activity的启动过程,我们自行创建Activity,“偷梁换柱”,交给系统去启动。...= null) { // 用插件的ClassLoader启动插件Activity Activity activity = mBase.newActivity...获取插件的Resources的方法参考Android插件——资源加载 在performLaunchActivity中,完成了newActivity后,在onCreate之前,我们会调用callActivityOnCreate...插件的Context 给 Activity 赋予 插件的Application 给 ContextThemeWrapper 赋予 插件的Context 最后输入了activity的屏幕旋转信息。

74970

插件Activity: 技术方案分享

,今天就带大家手把手实现一个插件Activity框架,希望对你有所帮助~ 插件概念 插件是一种动态加载四大组件的技术。...插件业务价值 插件无非是为了解决类加载和资源加载的问题,资源加载一般是通过反射 AssertManager , 按照类加载划分,插件一般分为静态代理和 Hook 的方式,使用插件一般为了解决应用新版本覆盖慢的问题...来加载插件中的资源 插件遇到的问题 找到的 Activity 不在插件包里面 我们真正打开的确实一个在插件包中定义的 Activity,这个 Activity 需要的信息在插件包中的,而不是宿主的。...解决方案 插件 Activity 也同时重写了 attachBaseContext 方法。...解决方案 宿主和所有插件都依赖 leakcanary 即可。 总结 本文主要是根据我自身实际投产的 插件组件 实践,分享一些动态加载 SDK插件 时需要考虑的问题。

94100

【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 主线程创建 Activity 实例之前使用插件 Activity 类替换占位的组件 )

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 ) 【Android 插件】Hook 插件框架 ( hook 插件原理...插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取

1.3K30

【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | AMS 启动前使用动态代理替换掉插件 Activity 类 )

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 ) 【Android 插件】Hook 插件框架 ( hook 插件原理...插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取

54730

【Android 插件】“ 插桩式 “ 插件框架 ( 代理 Activity 组件开发 )

Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件...】插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 一、加载插件包 dex 的类加载器 二、生命周期回调方法...三、代理 Activity 组件 四、博客资源 参考 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 中给出的实现思路 , 逐步实现 “ 插桩式 “ 插件框架 ; 在

60420

【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 )

Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) ---- 文章目录 Android...二、Activity 进程相关源码 1、Instrumentation 源码分析 三、博客资源 ---- 前言 上一篇博客 【Android 插件】Hook 插件框架 ( Hook Activity

51610

【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 )

Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件...】插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 前言 一、" 宿主 " 模块启动 " 插件 "...Activity 全类名 , 使用 从 PluginManager 中获取的 类加载器 , 使用 反射 加载该全类名对应的 Activity 类 , 并使用反射初始该类 ; /** * 该 Activity

86410

【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 )

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 ) 【Android 插件】Hook 插件框架 ( hook 插件原理...插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook 插件框架 ( 从 Hook

41510

【Android 插件】Hook 插件框架 ( Hook Activity 启动过程 | 静态代理 )

Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件...】插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 )...【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 【Android 插件】Hook 插件框架 ( Hook 技术 | 代理模式 | 静态代理 | 动态代理...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程

86330

【Android 插件】Hook 插件框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 )

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取...| Hook 点选择 | 资源冲突解决方案 ) 【Android 插件】Hook 插件框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 ) ----...| Hook 点选择 | 资源冲突解决方案 ) 中 , 分析了加载插件资源 , 并替换 Activity 中 Resources 成员可用的 Hook 点 , 本篇博客开始实现插件资源的加载与替换 ;

81150

Android插件架构 - Activity的启动流程分析

概述 Android插件架构,目前第三方的框架比较多,早几年自己用的是DL框架,这个框架的源码比较简单主要用的是静态代理。...如果我们自己要去写一个插件架构框架那要解决的问题会分为几个方面,类的加载,资源和布局的加载,广播的管理方式,Activity的加载和生命周期管理,Service的插件,ContentProvider...的插件等等等等,反正加载一个没有运行的app到主程序,需要解决的问题基本就这么多,如果能够一一解决那么就可以实现插件化了。   ...那么结合动态代码设计模式以及Activity的启动流程,我们就可以尝试去拦截Activity的启动流程,让没有在AndroidMainfest.xml中注册的Activity也能启动并且不报错,这样我们就算是跨出了插件架构的第一步了...相关视频 一次让你彻底掌握Android插件,征服面试!

41630

【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取 IActivityManager 对象 )

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 ) 【Android 插件】Hook 插件框架 ( hook 插件原理...插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取

31010

android插件在9.0上插件activity的theme失效问题(VirtualAPK)

android插件在9.0上插件activity的theme失效问题(VirtualApk) 在使用VirtualApk的时候,发现在android 9.0上,插件中的Activity配置的theme...{ ContextImpl appContext = createBaseContextForActivity(r); Activity activity = null; try...消息时,virtualApk会先处理,获取到对应的ActivityClientRecord,然后修改activityInfo中的theme为插件的theme。...那为什么在9.0后就不行了呢,我们看下9.0这部分的源码 呵,好家伙,根本就没有LAUNCH_ACTIVITY这个定义了,所以hook失效,根本就没有设置插件的theme 那系统是怎么调用的handleLaunchActivity...getClassLoader()); if (PluginUtil.isIntentFromPlugin(intent)) { //获取插件主题

68921

滴滴插件框架VirtualAPK原理解析(一)之插件Activity管理

上周末,滴滴与360都开源了各自的插件框架,VirtualAPK与RePlugin,作为一个插件方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是VirtualAPK...,这个硬性要求很大程度上限制了插件系统的发挥:因为插件Activity必定不会在宿主程序中进行声明 如何绕过这个限制呢?...启动插件中声明的Activity 通过上面的描述,相信你已经大致了解了Activity的启动过程,之前我们说过,启动插件中的Activity会遇到的问题是必须在清单文件中进行声明,我们也说了解决的思路是在...可以看见,接下来就是调用插件Activity的onCreate方法了,就完了加载插件Activity的过程 你可能会问通过上面的方式启动的插件TargetActivity就具有生命周期了吗?...Activity里面有一个成员变量mToken代表的就是它,token可以唯一地标识一个Activity对象,它在Activity的attach方法里面初始; 在AMS处理Activity的任务栈的时候

95820

【Android 插件】Hook 插件框架总结 ( 插件包管理 | Hook Activity 启动流程 | Hook 插件包资源加载 ) ★★★

【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources...) 【Android 插件】Hook 插件框架 ( Hook 实现思路 | Hook 按钮点击事件 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动过程...| 静态代理 ) 【Android 插件】Hook 插件框架 ( 从 Hook 应用角度分析 Activity 启动流程 一 | Activity 进程相关源码 ) 【Android 插件】Hook...插件】Hook 插件框架 ( Hook Activity 启动流程 | Hook 点分析 ) 【Android 插件】Hook 插件框架 ( Hook Activity 启动流程 | 反射获取...| Hook 点选择 | 资源冲突解决方案 ) 【Android 插件】Hook 插件框架 ( 使用 Hook 方式替换插件 Activity 的 mResources 成员变量 ) 【Android

1.2K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券