插件化简单介绍
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
目录
- 一、导读
- 二、概览
- 三、常见的插件化方案
- 四、插件化的应用
- 五、 推荐阅读

一、导读
我们继续总结学习基础知识,温故知新。
本文主要讲述插件化相关的概念及应用。
二、概览
插件化是指将一个Android应用程序拆分成多个独立的插件(Plugin),每个插件可以独立开发、测试、编译、发布和升级,相当于一个模块是一个apk。
插件可以在运行时动态加载和卸载,实现功能的扩展和灵活性的提高。插件可以通过定义接口和调用API的方式与宿主应用程序进行通信和交互。

目前就很多的大型应用,如支付宝等都在使用插件化技术,插件化有诸多的优势:
- 功能扩展
通过加载和卸载插件,可以动态地扩展宿主应用程序的功能。 - 更灵活
开发过程中,每个插件都是独立编译运行、独立开发和测试。 - 动态更新
插件可以在运行时动态加载和卸载,实现功能的动态更新。 - 降低沟通成本
三、常见的插件化方案
截止 2023年8月份还在更新的开源库,目前只有一个
| Shadow(腾讯) | |
|---|---|
| 是否支持四大组件 | 全部 |
| 是否支持so | 支持 |
| 兼容性适配 | 高 |
| 原理 | 零反射全动态Android插件框架 |
| 是否维护 | 最近更新2023/8 |
| 缺点 | Kotlin实现,且无详细的文档 |
shadow github
还有很多好久没更新的,虽然不更新了,但是原理跟思路也是可以参考一下的:
| DynamicLoadApk | DynamicAPK | Small | DroidPlugin | VirtualApk(滴滴) | Atlas(阿里) | RePlugin(爱奇艺) | |
|---|---|---|---|---|---|---|---|
| 是否支持四大组件 | 支持Activity | 支持Activity | 支持Activity | 全部 | 全部 | 运行bundle中的四大组件 | 全部(除静态广播) |
| 是否支持so | 支持 | 否 | 否 | 否 | 支持 | 支持 | 支持 |
| 兼容性适配 | 一般 | 一般 | 中等 | 高 | 高 | 高 | 高 |
| 原理 | 代理,少量反射 | Bundle、动态组件化框架 | 跨平台 | Hook 系统服务、反射 | Hook系统、占坑、反射 | Bundle、动态组件化框架 | 占坑、唯一HookClassLoader |
| 是否维护 | 停更 | 停更 | 停更 | 停更 | 停更 | 停更 | 停更 |
RePlugin
dynamic-load-apk
DynamicAPK
Small
DroidPlugin
VirtualAPK
atlas
这里还有一个收费的,咱也没用过,欢迎用过的大佬来补充一下。
VirtualApp
谷歌对系统安全越来越严格,针对系统层面的Hook、反射等非常规操作做出了一系列的改动、限制,考虑到项目的长期维护,这一类的插件方案要慎重使用。
四、插件化的应用
- 双开/多开需求
同一部手机上安装多个微信/QQ/WhatsApp/Facebook等APP,实现一部手机,多个账号同时登录 - 移动安全需求
- 2.1 应用行为审计
实现实时监测用户使用行为,将违规信息上传到服务器;并能轻易实现诸如时间围栏(在某个时间段内能否使用应用的某个功能)、地理围栏(在某个区域内能否使用应用的某个功能)、敏感关键字过滤拦截等功能需求。 - 2.2 数据加密
HOOK能力可以实现对应用的全部数据/文件加密,保证数据/文件落地安全。 - 2.3 数据采集
HOOK能力可以实现应用数据的实时无感上传需求,如聊天记录、转账记录等,防止事后删除无法追溯。 - 2.4 数据防泄漏
可以实现应用防复制/粘贴、防截屏/录屏、防分享/转发、水印溯源等需求。 - 2.5 防攻击泄密
将APP获取短信/通讯录/通话记录/后台录音/后台拍照/浏览历史/位置信息等隐私相关的行为完全控制在沙盒中,防止木马/恶意APP获取到用户真实的隐私数据,造成泄密等严重后果。
- 2.1 应用行为审计
- 免ROOT HOOK需求
现诸如虚拟定位、改机、APP监控管理、移动安全等各种场景需要的功能 - APP静默安装需求
- APP管控需求
掌握APP访问了哪些系统API,哪些敏感数据,哪些设备信息等。 - app业务拆分
- 等等
下一篇我们将介绍插件化的原理。
java hook
native hook
反射
动态代理
classloader
五、 推荐阅读
Java 专栏
SQL 专栏
数据结构与算法
Android学习专栏
未经允许不得转载

相关文章:
插件化简单介绍
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 未经允许不得转载 目录 一、导读二、概览三、常见的插件化方案…...
[Beego]1.Beego简介以及beego环境搭建,bee脚手架的使用,创建,运行项目
一.Beego介绍 Beego是一个开源的基于Golang的MVC框架,主要用于Golang Web开发,Beego可以用来快速开发API、Web、后端服务等各种应用。 Golang 的Web开发框架有很多,从 github star 数量来看Gin>Beego>lris>Echo>Revel>Buffalo 目前国内用的比较多的就…...
Tomcat 静态资源访问与项目根路径设置(AI问答)
一个静态文件,放在Tomcat中,希望能够通过网络访问,应该放在哪里? 在Apache Tomcat中,如果想要部署静态文件(例如HTML、CSS、JavaScript、图片等)并能通过网络访问,通常需要将这些文…...
Docker实战09|使用AUFS包装busybox
前几篇文章中,重点讲解了如何实现构建容器,需要回顾的小伙伴可以看以下文章: 《Docker实战06|深入剖析Docker Run命令》《Docker实战07|Docker增加容器资源限制》《Docker实战08|Docker管道及环境变量识别…...
什么是uni.request()?如何使用它?
uni.request()是uni-app提供的一个用于发起网络请求的API。 使用uni.request()的步骤如下: 在需要发起网络请求的页面中引入uni.request()方法。 调用uni.request()方法,并传入相应的参数,包括请求地址、请求方法、请求头部和请求数据等。 …...
用React给XXL-JOB开发一个新皮肤(一):环境搭建和项目初始化
目录 一. 简述二. Fork 项目三. 搭建开发环境四. 初始化皮肤项目五. 添加相关依赖六. 预览 一. 简述 大名鼎鼎的 xxl-job 任务调度中心我们应该都使用过,项目地址:xxl-job。它是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单…...
华为常用的命令——display,记得点赞收藏!
华为设备提供了多条display命令用于查看硬件部件、接口及软件的状态信息。通常这些状态信息可以为用户故障处理提供定位思路。 常用的故障信息搜集的命令如下: 路由器常用维护命令表 交换机常用的故障信息搜集 关注 工 仲 好:IT运维大本营,获…...
Costco攻入山姆大本营
01 Costco深圳店开业火爆 “我今天不去Costco,早上还没开业,路上就已经堵车了,看来今天人很多,过几天再去”,原本计划在Costco开业当天去逛逛的张芸(化名)无奈只能放弃。 家住在Costco深圳店旁…...
什么是常量?如何区分常量和变量?
一、问题 什么是常量,什么是变量?怎样区分⼆者? 二、解答 1. 常量与变量 (1)常量即其值在程序运⾏的过程中是不可以改变的,如123,-4567 为数值常量; (2)变量…...
uniapp返回上一页并刷新数据
在uniapp中,返回页面时onLoad是不会触发的 如果只需要在特定情况下返回上一页才需要刷新数据 可以使用$emit和$no去解决 例如:注册完成后返回到首页并隐藏注册按钮,register.vue和index.vue register.vue <template><view clic…...
LeetCode 0083.删除排序链表中的重复元素:模拟
【LetMeFly】83.删除排序链表中的重复元素:模拟 力扣题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的…...
Javaweb之SpringBootWeb案例新增部门的详细解析
2.3 删除部门 查询部门的功能我们搞定了,下面我们开始完成删除部门的功能开发。 2.3.1 需求 点击部门列表后面操作栏的 "删除" 按钮,就可以删除该部门信息。 此时,前端只需要给服务端传递一个ID参数就可以了。 我们从接口文档中也…...
基于微信小程序的音乐平台 开源项目
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示 四、核心代码4.1 查询单首音乐4.2 新增音乐4.3 新增音乐订单4.4 查询音乐订单4.5 新增音乐收藏 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的音乐平台,包含了音乐…...
uniapp 微信小程序跳转外部链接
一、背景: 开发小程序时,跳转到内部路径通常会使用:uni.navigateTo,uni.redirectTo,uni.reLaunch,uni.switchTab等方法,可以跳转到pages.json中已经注册的页面 uni.navigateTo(OBJECT) | uni-…...
【STM32】FLASH闪存
1 FLASH闪存简介 本节所指STM32内部闪存,即下载程序的时候,程序存储的地方。(非易失性) STM32F1系列的FLASH包含程序存储器、系统存储器(bootloader,不允许修改)和选项字节三个部分࿰…...
滴水内存地址堆栈
两个十六进制数 刚好是一个字节刚好 DC这的一个字节数据为E4 一个内存地址 后面表示四个字节的数据 所以有八个十六进制的数 BASE是高地址 所以放入一个四字节后就 -4...
Laravel中的lockForUpdate悲观锁
lockForUpdate 是悲观锁,测试就不写了 注意的事项 lockForUpdate 必须在事务中lockForUpdate 被阻塞的查询必须是同样添加了lockForUpdate的语句查询语句走索引,则使用行锁,否则使用表锁 现在举例说明第一项和第二项 开启事务并添加锁 pub…...
BikeDNA(八)外在分析:OSM 与参考数据的比较2
BikeDNA(八)外在分析:OSM 与参考数据的比较2 1.数据完整性 见链接 2.网络拓扑结构 见链接 3.网络组件 本节仔细研究两个数据集的网络组件特征。 断开连接的组件不共享任何元素(节点/边)。 换句话说,…...
28 星际旋转
效果演示 实现了一个太阳系动画,其中包括了地球、火星、金星、土星、水星、天王星、海王星以及火卫二号等行星的动画效果。太阳系的行星都被放在一个固定的容器中,并使用CSS动画来实现旋转和移动的效果。当太阳系的行星绕着太阳运行时,它们会…...
测试人员必备基本功(3)
容易被忽视的bug 第三章 查询列表容易被忽视的bug 文章目录 容易被忽视的bug第三章 查询列表容易被忽视的bug 前言1.查询角色2.接口设计 三、测试设计1.测试点2.容易发现bug的测试点如下: 总结 前言 一个WEB系统的所有功能模块,其实都是围绕“增、删、…...
桌面歌词工具:LyricsX让Mac音乐体验全面升级
桌面歌词工具:LyricsX让Mac音乐体验全面升级 【免费下载链接】Lyrics Swift-based iTunes plug-in to display lyrics on the desktop. 项目地址: https://gitcode.com/gh_mirrors/lyr/Lyrics 在Mac上享受音乐时,你是否曾因无法显示桌面歌词而感到…...
douyin-downloader:智能无水印视频批量获取工具,30倍提升内容管理效率
douyin-downloader:智能无水印视频批量获取工具,30倍提升内容管理效率 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代,短视频已成为信息传播的主要载…...
注CO2驱替煤层气THM耦合模型与自定义PDE耦合固体力学
注co2驱替煤层气THM耦合模型 自定义pde耦合固体力学今天,我来分享一下关于CO2驱替煤层气的THM(热-水-力学)耦合模型的构建过程。这个模型听起来有点复杂,但其实拆开来理解,每一步都还挺有意思的。尤其是其中涉及的自定…...
三步掌握MidScene:AI浏览器自动化的零代码实战指南
三步掌握MidScene:AI浏览器自动化的零代码实战指南 【免费下载链接】midscene Let AI be your browser operator. 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene MidScene是一款革命性的AI驱动浏览器自动化工具,让您能够通过自然语…...
python小白福音:跟着快马生成的图文指南,轻松搞定vscode环境配置
作为一个刚开始学Python的小白,第一次打开VSCode时完全不知道从哪里下手。各种专业术语看得一头雾水,网上的教程要么太简单要么太复杂。直到发现了InsCode(快马)平台,它帮我生成了这份超级详细的配置指南,现在终于能愉快地写代码了…...
别再拍脑袋立项了!手把手教你用华为IPD的Charter任务书,搞定产品从0到1的商业论证
从直觉到论证:中小企业如何用轻量级Charter打造产品商业闭环 深夜的创业咖啡馆里,几个技术出身的创始人正为下一个产品方向争论不休。"这个功能绝对能引爆市场!"CTO激动地敲着桌子,"我见过三家竞品都没做好这个点。…...
Linux服务器卡死?5分钟定位hung task与soft lockup的实战技巧
Linux服务器卡死?5分钟定位hung task与soft lockup的实战技巧 凌晨三点,服务器监控突然告警——核心业务节点失去响应。作为运维工程师,这种场景往往意味着不眠之夜。但不同于新手的手足无措,经验丰富的系统管理员知道:…...
java毕业设计基于springboot+vue的自贡恐龙博物馆门户系统
前言 该系统采用前后端分离 的架构模式,后端使用Spring Boot框架构建,前端则使用Vue.js等框架来构建友好的用户界面。这种架构模式使得开发团队可以独立进行前后端的开发与维护,从而提高开发效率。一、项目介绍 开发语言:Java 框架…...
2026论文写作工具红黑榜:AI论文工具怎么选?用数据说话!
2026年论文写作工具红黑榜出炉,千笔AI、ThouPen、豆包位列红榜,适配国内学术规范,助力高效科研。黑榜需避开低质免费工具、无真实引用平台及过度依赖全文生成的工具。选择时建议按需求匹配度 - 数据可信度 - 成本承受力三维模型进行评估。 一…...
Beyond Compare 5 终极激活指南:本地密钥生成工具完整教程
Beyond Compare 5 终极激活指南:本地密钥生成工具完整教程 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5 是一款专业的文件对比与合并工具,广泛应用于…...
