首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

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

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

    4.6K20编辑于 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.7K10编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件插件框架整理

    框架简介 : https://www.infoq.cn/article/ctrip-android-dynamic-loading/

    4K30编辑于 2023-03-29
  • 来自专栏刘望舒

    Android插件原理之Activity插件

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

    1.5K50发布于 2018-06-22
  • 来自专栏韩曙亮的移动开发专栏

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

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

    1.1K40编辑于 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 插件系列文章目录

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

    【Android 插件】Hook 插件框架 ( 创建插件应用 | 拷贝插件 APK | 初始插件包 | 测试插件 DEX 字节码 )

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

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

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

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

    91310编辑于 2023-03-29
  • 来自专栏前端黑板报

    插件思维

    我认为插件思维是一种极客精神,而且大量可拓展、需要协同开发的程序都离不开插件机制支撑。 没有插件,核心库的代码会变得冗余,功能耦合越来越严重,最后导致维护困难。 2.1 插件化分类 插件许多都是从设计模式演化而来的,大概可以参考的有:命令模式,工厂模式,抽象工厂模式等等,笔者根据个人经验,总结出三种插件化形式: ❈ 约定/注入插件。 事件插件。 插槽插件。 ❈ 最后还有一个不算插件实现方式,但效果比较优雅,姑且称为分形插件吧。下面一一解释。 2.1.3 插槽插件 这种插件一般用在对 UI 元素的拓展。 2.4 哪些场景可以插件 最后梳理下插件适用场景,笔者根据有限的经验列出一下一些场景。

    1.6K20发布于 2018-07-24
  • 来自专栏小陈飞砖

    android插件

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

    49510编辑于 2022-06-25
  • 来自专栏为数不多的Android技巧

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

    Framework和插件技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件方式。 我们能否用与之相同的方式实现Service的插件?如果不行,它们的差别在哪里,应该如何实现Service的插件? Service的插件思路 现在我们已经明白了Service组件的工作原理,可对如何实现Service的插件依然是一头雾水。 Service组件的插件吗? 不论是借尸还魂还是女娲造人,对这些组件的插件终归结底是要赋予组件“生命”。 插件系列的文章有整整一个月没有更新了,非常抱歉!

    2.1K20发布于 2018-09-05
  • 来自专栏为数不多的Android技巧

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

    Framework和插件技术有了一定的了解;本文将探讨Android四大组件之一——Service组件的插件方式。 我们能否用与之相同的方式实现Service的插件?如果不行,它们的差别在哪里,应该如何实现Service的插件? Service的插件思路 现在我们已经明白了Service组件的工作原理,可对如何实现Service的插件依然是一头雾水。 Service组件的插件吗? 不论是借尸还魂还是女娲造人,对这些组件的插件终归结底是要赋予组件“生命”。 插件系列的文章有整整一个月没有更新了,非常抱歉!

    1.4K20发布于 2019-12-31
  • 来自专栏为数不多的Android技巧

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

    应该如何实现它的插件? 的插件,这一点特别重要。 如果能让插件支持这些操作,不就支持了插件么? 我个人觉得,如果只是希望插件,那么是否支持ContentProvider无伤大雅,但是,如果希望实现虚拟或者说容器技术,所有组件是必须支持插件的。 ——推翻——改进的整个过程完全展现了出来,Android的插件已经到达了百花齐放的阶段,插件之路也不只有一条,但是万变不离其宗,希望我的分析和思考对各位读者理解甚至创造插件方案带来帮助。

    2.5K30发布于 2018-09-05
  • 来自专栏韩曙亮的移动开发专栏

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

    Android 插件系列文章目录 【Android 插件插件化简介 ( 组件插件 ) 【Android 插件插件原理 ( JVM 内存数据 | 类加载流程 ) 【Android 插件插件原理 ( 类加载器 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 原理与实现思路 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 类加载器创建 | 资源加载 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 获取插件入口 Activity 组件 | 加载插件 Resources 资源 ) 【Android 插件】“ 插桩式 “ 插件框架 ( 运行应用 | 代码整理 ) ---- 文章目录 Android 插件系列文章目录 前言 一、" 宿主 " 模块启动 " 插件 " 插件】“ 插桩式 “ 插件框架 ( 注入上下文的使用 ) 中对注入的上下文进行了相关代理操作 , 插件包中的界面组件 PluginActivity 凡是涉及上下文的操作 , 都统一委托给注入的上下文来完成

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

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

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

    71030编辑于 2023-03-29
  • 来自专栏深入理解Android

    Android插件浅析

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

    81620编辑于 2022-06-22
  • 来自专栏正则

    react native 插件

    研发背景 安卓集成react-native加载多个插件bundle包,由于公司项目业务需求,将项目进行架构分为主app和业务插件。 而与网上的搜到的情况不同,app的所有代码都是rn开发,要求插件包能够在app不升级上架的情况下,能够正常的加载不同的插件业务包。这样一来,网上的拆分包打包加载无法实现项目效果。 开发过程 1、打包 通过命令行分别将主app代码和插件业务代码进行打包。 注意:插件业务代码打包生成的bundle包和资源目录要放在同级目录下使用。 2、插件包的加载 安卓原生加载rn的bundle包有两种方式。 一种是加载file中的文件,在本项目中,插件的业务包使用加载file的方式。

    1.4K10编辑于 2022-03-09
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件】基于插件引擎的“恶意应用“与“良性应用“区别 | 恶意插件应用特征

    文章目录 一、基于插件引擎 的 恶意应用 与 良性应用 区别 二、恶意插件应用特征 一、基于插件引擎 的 恶意应用 与 良性应用 区别 ---- 在 【Android 插件】VAHunt 引入 | VAHunt 原理 | VAHunt 识别插件引擎 和 【Android 插件】VAHunt 检测插件引擎的具体细节 博客中 , 简单介绍了如何检测插件引擎 ; 下一步就需要在检测出插件引擎之后 , 检测该应用是否是恶意应用 ; 大多数基于插件的 恶意应用 , 都会对 恶意插件 加密 , 或从网络中下载 ; 恶意软件的宿主应用 , 一般会以静默方式加载插件 , 并且将下载或解密后的恶意插件 , 隐藏起来 ; 下图是 基于插件引擎 的 恶意应用 与 良性应用 区别 : 良性应用 : 获取到插件应用后 , 会让用户选择是否安装运行插件 , 如果用户同意 , 安装运行插件 , 如果用户拒绝 , 恶意插件应用特征 ---- 恶意软件 解密 或 下载 恶意插件后 , 通常会隐藏恶意插件 ; 加载 APK 插件的常用路径 : 从自定义路径加载插件 : 从如下路径中获取插件 APK ; 从系统路径加载插件

    49920编辑于 2023-03-29
  • 来自专栏算法微时光

    android插件介绍

    image.png 转载:https://blog.csdn.net/suyimin2010/article/details/80958742 插件介绍 image.png 插件技术最初源于免安装运行 支持插件的app可以在运行时加载和运行插件,这样便可以将app中一些不常用的功能模块做成插件,一方面减小了安装包的大小,另一方面可以实现app功能的动态扩展。 想要实现插件,主要是解决下面三个问题: 插件中代码的加载和与主工程的互相调用 插件中资源的加载和与主工程的互相访问 四大组件生命周期的管理 插件技术 技术的发展,根据实现原理可以将这几个框架划分成了三代 插件框架一般会通过统一的入口去管理对各个插件中类的访问,并且做一定的限制。 若使用单ClassLoader机制,主工程则可以直接通过类名去访问插件中的类。 下面以Activity为例详细介绍插件如何支持组件生命周期的管理。

    1.1K20发布于 2020-11-24
  • 来自专栏Golang语言社区

    golang插件方案

    从应用开发本身出发,可以考虑插件。 不能 更新:不能 通信:进程内 序列:不需要 性能:高 ---- Go plugin判断两个插件是否相同是通过比较pluginpath实现的,如果没有指定pluginpath,则由内部的算法生成, 生成的格式为 另外,每一个插件都要开一个进程,因此要注意通信序列的性能消耗和进程管理,默认使用stdin/stdout建立连接,如下图,一个plugin和主程序之间有两条单向连接。 stream支持:单向和双向,基于http/2 插件发现:主程序循环扫描插件目录并维护状态;通过第三方文件diff工具维护,例如git 上线:能 下线:能 更新:能 通信:支持grpc 序列:protobuf 支持:单向,基于mq 插件发现:主程序循环扫描插件目录并维护状态;通过第三方文件diff工具维护,例如git 上线:能 下线:能 更新:能 通信:支持mq 序列:未知 性能:中/偏高 ---- 基于消息队列协议通信

    2.8K30发布于 2018-08-16
领券