首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏小陈飞砖

    android插件

    文章目录 一、插件的由来 二、插件要解决的问题 1、动态加载APK 2、资源加载 3、代码加载 一、插件的由来 一个dex文件方法数限制: 因为现在的一个app中功能模块的解耦和运维团队的分离越来越厉害 因此产生了插件技术。 二、插件要解决的问题 1、动态加载APK 有一个宿主程序,他会到我们指定的sd卡中加载apk, 会通过代理的activity去执行。 3、代码加载 类加载机制, android中的两个类加载器: DexClassLoader可以从jar文件中加载字节码的类加载器,主要用于类加载和代码的热更新; PathClassLoader 只能加载文件目录中的

    53210编辑于 2022-06-25
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件插件框架整理

    https://github.com/alibaba/atlas 二、DynamicAPK ( 携程 ) ---- 框架简介 : https://www.infoq.cn/article/ctrip-android-dynamic-loading

    4.2K30编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件插件化简介 ( 组件插件 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) 文章目录 Android 插件系列文章目录 一、组件插件 二、插件示例 三、插件标准引入 机制 , 动态部署其插件 apk ; 这类软件第一次打开时 , 需要下载该模块的 插件 apk , 并安装 , 此时会卡顿以下 , 之后可以流畅访问 ; 三、插件标准引入 ---- 插件 中 ,

    4.7K20编辑于 2023-03-29
  • 来自专栏刘望舒

    Android插件原理之Activity插件

    前言 四大组件的插件插件技术的核心知识点,而Activity插件更是重中之重,Activity插件主要有三种实现方式,分别是反射实现、接口实现和Hook技术实现。 反射实现会对性能有所影响,主流的插件框架没有采用此方式,关于接口实现可以阅读dynamic-load-apk的源码,这里不做介绍,目前Hook技术实现是主流,因此本篇文章主要介绍Hook技术实现。 <activity android:name=".StubActivity"/> </application> </manifest> TargetActivity用来代表已经加载进来的插件Activity 为了更好的讲解启动插件Activity的原理,本小节省略了插件Activity的加载逻辑,直接创建一个TargetActivity来代表已经加载进来的插件Activity。 更多的Android插件原理请查看即将要出版的《Android进阶之光》续作。

    1.5K50发布于 2018-06-22
  • 来自专栏深入理解Android

    Android插件浅析

    插件是2016年移动端最火爆的几个名词之一,目前淘宝、百度、腾讯等都有成熟的动态加载框架,包括apkplug, 本篇博客就来探讨一下插件设计。 本博客主要从以下几个方面对插件进行解析: Ø  为什么会提出插件? Ø  插件概述 Ø  插件例子 1.      为什么会提出插件插件概述 Ø  插件的概念: Android 插件 —— 指将一个程序划分为不同的部分,也就说把一个很大的app分成n多个比较小的app,其中有一个app是主app,比如一般 App 的皮肤样式就可以看成一个插件 Ø  插件的优缺点 插件的优点主要有以下几个方面: 1)     模块解耦,应用程序扩展性强 2)     解除单个dex函数不能超过 65535的限制 3)     动态升级,下载更新节省流量 4 插件例子 在介绍完插件的概念和优缺点之后,我们就先一个小的案例,来帮助大家更好的理解插件的原理是什么样的。

    85920编辑于 2022-06-22
  • 来自专栏算法微时光

    android插件介绍

    image.png 转载:https://blog.csdn.net/suyimin2010/article/details/80958742 插件介绍 image.png 插件技术最初源于免安装运行 想要实现插件,主要是解决下面三个问题: 插件中代码的加载和与主工程的互相调用 插件中资源的加载和与主工程的互相访问 四大组件生命周期的管理 插件技术 技术的发展,根据实现原理可以将这几个框架划分成了三代 插件技术原理 类加载 Android中常用的有两种类加载器,DexClassLoader和PathClassLoader,它们都继承于BaseDexClassLoader。 Android对于外部的dex文件,主要通过 DexClassLoader 类加载。 注意:该方式有个弊病,若两个不同的插件工程引用了一个库的不同版本,则程序可能会出错,所以要通过一些规范去避免该情况发生。 资源加载 Android系统通过Resource对象加载资源。

    1.1K20发布于 2020-11-24
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件插件原理 ( 类加载器 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 一、" 插件 " 中的 dex 文件 二、类加载器分析 三、获取类加载器 四、双亲委派机制 一、" 插件 " 中的 dex 文件 ---- 现在的大型 Android 项目 , 基本都是 组件 + 插件 开发 , 项目架构上都是 组件 的框架 ,

    99310编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件】Hook 插件框架 ( hook 插件原理 | 插件包管理 )

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

    4.8K10编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件】Hook 插件框架 ( 加载插件包资源 )

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources | 插件包管理 ) 【Android 插件】Hook 插件框架 ( 通过反射获取 “插件包“ 中的 Element[] dexElements ) 【Android 插件】Hook 插件框架 插件】Hook 插件框架 ( 反射工具类 | 反射常用操作整理 ) 【Android 插件】Hook 插件框架 ( 插件包资源加载 ) ---- 文章目录 Android 插件系列文章目录

    81810编辑于 2023-03-29
  • 来自专栏为数不多的Android技巧

    Android插件原理解析——ContentProvider的插件

    目前为止我们已经完成了Android四大组件中Activity,Service以及BroadcastReceiver的插件,这几个组件各不相同,我们根据它们的特点定制了不同的插件方案;那么对于ContentProvider 应该如何实现它的插件? 到这里,有关ContentProvider的调用过程以及简要的工作原理我们已经分析完毕,关于它如何共享数据,如何使用匿名共享内存这部分不是插件的重点,感兴趣的可以参考 Android应用程序组件Content 至此,对于Android系统的四大组件的插件已经全部介绍完毕;由于是最后一个要介绍的组件,我并没有像之前一样先给出组件的运行原理,然后一通分析最后给出插件方案,而是一边分析代码一边给出自己的思路,把思考 ——推翻——改进的整个过程完全展现了出来,Android插件已经到达了百花齐放的阶段,插件之路也不只有一条,但是万变不离其宗,希望我的分析和思考对各位读者理解甚至创造插件方案带来帮助。

    2.6K30发布于 2018-09-05
  • 来自专栏刘望舒

    有关Android插件思考

    那么在 Android 中,何为「 插件 」,顾名思义,就是把一些核心复杂依赖度高的业务模块封装成独立的插件,然后根据不同业务需求进行不同组合,动态进行替换,可对插件进行管理、更新,后期对插件也可进行版本管理等操作 这个 Main 函数的位置很重要,我们可以对它所在的类做修改,从而实现插件。 第五点更重要,做 Android 插件需要控制两个地方。 实现原理 在Android中应用插件技术,其实也就是动态加载的过程,分为以下几步: 把可执行文件( .so/dex/jar/apk 等)拷贝到应用 APP 内部。 主流框架 在 Android 中实现插件框架,需要解决的问题主要如下: 资源和代码的加载 Android 生命周期的管理和组件的注册 宿主 APK 和插件 APK 资源引用的冲突解决 下面分析几个目前主流的开源框架 VirtualAPK (2017年 6 月 ) VirtualAPK 是滴滴开源的一套插件框架,支持几乎所有的 Android 特性,四大组件方面。 架构图: ?

    1.5K10发布于 2018-10-08
  • 来自专栏Kindem的博客

    浅谈 Android 插件原理

    认识插件 想必大家都知道,在 Android 系统中,应用是以 Apk 的形式存在的,应用都需要安装才能使用。 这其实就是插件的目的,让 Apk 中的代码(主要是指 Android 组件)能够免安装运行,这样能够带来很多收益,最显而易见的优势其实就是通过网络热更新、热修复,想象一下,你的应用拥有 Native 但是光能反射代码是没有意义的,插件真正的魅力在于,可以动态加载执行 Android 组件(即 Activity、Service、BroadcastReceiver、ContentProvider、Fragment 总结一下,其实做到插件的要点就这几个: 反射并执行插件 Apk 中的代码(ClassLoader Injection) 让系统能调用插件 Apk 中的组件(Runtime Container) 正确识别插件 解决方案 首先来谈一谈常见插件框架的整体架构,市面上的插件框架实际很多,如 Tecent 的 Shadow、Didi 的 VirtualApk、360 的 RePlugin,我自己也写了一个简单的插件框架

    1.4K10编辑于 2022-08-12
  • 来自专栏移动开发面面观

    Android插件——资源加载

    插件技术将模块解耦,通过插件的形式加载。插件技术中,每个插件都能够作为单独的APK独立运行。宿主启动插件的类,难免要涉及插件类中的资源问题。 那么,如何加载插件资源,就成为一个待解决的问题。 原理 参考APK打包流程:Android插件基础-APK打包流程 Android工程在打包成apk时,会使用aapt将工程中的资源名与id在R.java中一一映射起来。 因此,我们的核心思路就是:获取插件的Resources和插件的resId。 实践 那么我们该如何获得插件的Resources呢? drawable = resources.getDrawable(resId); mIvTest.setImageDrawable(drawable); 至此,就是插件加载的资源的基本思路和原理 总结 明确思路,通过获取插件的Resources和resId来加载资源 通过仿APK解析过程,获取插件Resources 通过对插件的R.java的反射,获取resId 完成加载

    1.8K40发布于 2018-07-03
  • 来自专栏Android补给站

    浅谈 Android 插件原理

    作者:FlyAndNotDown 链接:https://juejin.cn/post/6913912981625503758 认识插件 想必大家都知道,在 Android 系统中,应用是以 Apk 这其实就是插件的目的,让 Apk 中的代码(主要是指 Android 组件)能够免安装运行,这样能够带来很多收益,最显而易见的优势其实就是通过网络热更新、热修复,想象一下,你的应用拥有 Native 但是光能反射代码是没有意义的,插件真正的魅力在于,可以动态加载执行 Android 组件(即 Activity、Service、BroadcastReceiver、ContentProvider、Fragment 总结一下,其实做到插件的要点就这几个: 反射并执行插件 Apk 中的代码(ClassLoader Injection) 让系统能调用插件 Apk 中的组件(Runtime Container) 正确识别插件 解决方案 首先来谈一谈常见插件框架的整体架构,市面上的插件框架实际很多,如 Tecent 的 Shadow、Didi 的 VirtualApk、360 的 RePlugin,我自己也写了一个简单的插件框架

    1.2K30发布于 2021-02-23
  • 来自专栏为数不多的Android技巧

    Android 插件原理解析——Service的插件

    在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件方案,相信读者已经对Android Framework和插件技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件方式。 我们能否用与之相同的方式实现Service的插件?如果不行,它们的差别在哪里,应该如何实现Service的插件? Service的插件思路 现在我们已经明白了Service组件的工作原理,可对如何实现Service的插件依然是一头雾水。 Service组件的插件吗?

    2.1K20发布于 2018-09-05
  • 来自专栏搜狗测试

    Android 插件与测试

    【一、前言】 插件技术最初源于免安装运行apk的想法,支持插件的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app 【二、插件化简介、原理】 1、简介 Android插件,顾名思义,就是把一些核心复杂依赖度高的业务模块封装成独立的插件,然后根据不同业务需求进行不同组合,动态进行替换,可对插件进行管理、更新,后期对插件也可进行版本管理等操作 模块、解耦合、并行开发、65535问题。 3、插件原理 在Android中应用插件技术,也就是动态加载的过程,分为以下几步: (1). 动态加载 dex/jar/apk文件(现在动态加载普遍说的是这种) 4、Android的类加载 插件技术涉及得非常广泛,其中最核心的就是Android的类加载机制和反射机制。 【三、插件框架】 1、插件框架 下面是比较出名的几个开源的插件框架,按照出现的时间排序。根据实现原理可以将这几个框架划分成了三代。 ?

    1.5K20发布于 2019-08-19
  • 来自专栏为数不多的Android技巧

    Android 插件原理解析——Service的插件

    在 Activity生命周期管理 以及 广播的管理 中我们详细探讨了Android系统中的Activity、BroadcastReceiver组件的工作原理以及它们的插件方案,相信读者已经对Android Framework和插件技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件方式。 我们能否用与之相同的方式实现Service的插件?如果不行,它们的差别在哪里,应该如何实现Service的插件? Service的插件思路 现在我们已经明白了Service组件的工作原理,可对如何实现Service的插件依然是一头雾水。 Service组件的插件吗?

    1.4K20发布于 2019-12-31
  • 来自专栏Android开发指南

    Android热修复、插件、组件

    模块:项目按照独立的模块进行划分 组件:将项目按照单一的组件来进行划分结构 项目组件的重要环节在于,将项目按照模块来进行拆分,拆分成一个个业务module和其他支撑module(lib),各个业务 原理简单说就是当打开的时候使用ClassLoader动态加载,然后使用反射机制来调用插件中的类和方法,一般都会搭配一套插件框架来配合使用。 插件 减少体积、添加功能、提高打开速度(多个dex,效果不理想) 把插件apk放在asset里,或者网络下载,保存在本地,可以通过dexClassLoader加载 public class MainActivity

    76820编辑于 2022-01-12
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件】VAHunt 检测插件引擎的具体细节

    文章目录 一、VAHunt 检测插件引擎具体细节 一、VAHunt 检测插件引擎具体细节 ---- 上图的执行顺序是 ⑤ -> ④ -> ③ -> ② -> ① ; 存在 2 个 Intent 对象 , StubIntent 是 “桩” 组件对应的 Intent 对象 , TargetIntent 是插件包中的 Intent 对象 ; StubIntent 对应的组件需要欺骗 AMS , 因此该组件一定在 中发现启动的组件 StubIntent 类型 来自内部封装的 TargetIntent 中 , 调用 setType / setClassName ( setComponent ) 设置启动的组件是插件组件 ; 一旦发现了上述模式 , 就直接根据执行路径 , 反向找到 ⑤ 中在 AndroidManifest.xml 中注册的组件信息 ; 插件组件可以以不同的方式存储 , 字符串 , 对象 , 特殊标识 一直找到最终设置的组件类型 ; 匹配 " 桩 " 组件 : 获取到 " 桩 " 组件 , 与 AndroidManifest.xml 清单文件中的组件进行对比 , 如果查到了相应的组件 , 则可以直接判定该应用是插件应用

    73830编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    Android 插件插件技术弊端 ( 恶意插件程序的解决方向 | 常用的插件虚拟引擎 )

    文章目录 一、插件技术弊端 二、恶意插件程序的解决方向 三、常用的插件虚拟引擎 一、插件技术弊端 ---- 在之前的 Android 应用中 , 部分黑客将应用破解 , 植入自己的恶意代码 , , 使用自动脚本 , 一晚上甚至可以封装数量巨大的恶意应用 ; 目前的 Android 生态中 , 存在着大量的该类使用插件技术进行 ; 据统计 , 应用市场中 , 插件应用中 , 恶意插件应用 ; 插件应用有相同的特点 : 使用了 插件 技术 的应用 , 都有相同的特点 , 当前的插件基本都是基于 Hook 的插件技术 , 这样可以零侵入代码 , 开发的插件 APK 与普通 APK , 一般不经过用户同意秘密加载插件 ( 感觉有些大厂的插件也是偷摸加载的 , 插件对用户透明 ) , 分析出恶意插件的非法加载插件的指纹特征 , 与正常使用插件技术的应用进行区分 ; 检测恶意插件应用 DroidPlugin : https://github.com/DroidPluginTeam/DroidPlugin 参考文献 : VAHunt: Warding Off New Repackaged Android

    1.2K40编辑于 2023-03-29
领券