插件化简单介绍

news2025/4/23 7:43:50

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载

目录

  • 一、导读
  • 二、概览
  • 三、常见的插件化方案
  • 四、插件化的应用
  • 五、 推荐阅读

在这里插入图片描述

一、导读

我们继续总结学习基础知识,温故知新。

本文主要讲述插件化相关的概念及应用。

二、概览

插件化是指将一个Android应用程序拆分成多个独立的插件(Plugin),每个插件可以独立开发、测试、编译、发布和升级,相当于一个模块是一个apk。
插件可以在运行时动态加载和卸载,实现功能的扩展和灵活性的提高。插件可以通过定义接口和调用API的方式与宿主应用程序进行通信和交互。

在这里插入图片描述

目前就很多的大型应用,如支付宝等都在使用插件化技术,插件化有诸多的优势:

  • 功能扩展
    通过加载和卸载插件,可以动态地扩展宿主应用程序的功能。
  • 更灵活
    开发过程中,每个插件都是独立编译运行、独立开发和测试。
  • 动态更新
    插件可以在运行时动态加载和卸载,实现功能的动态更新。
  • 降低沟通成本

三、常见的插件化方案

截止 2023年8月份还在更新的开源库,目前只有一个

Shadow(腾讯)
是否支持四大组件全部
是否支持so支持
兼容性适配
原理零反射全动态Android插件框架
是否维护最近更新2023/8
缺点Kotlin实现,且无详细的文档

shadow github

还有很多好久没更新的,虽然不更新了,但是原理跟思路也是可以参考一下的:

DynamicLoadApkDynamicAPKSmallDroidPluginVirtualApk(滴滴)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获取到用户真实的隐私数据,造成泄密等严重后果。
  • 免ROOT HOOK需求
    现诸如虚拟定位、改机、APP监控管理、移动安全等各种场景需要的功能
  • APP静默安装需求
  • APP管控需求
    掌握APP访问了哪些系统API,哪些敏感数据,哪些设备信息等。
  • app业务拆分
  • 等等

下一篇我们将介绍插件化的原理。

java hook
native hook
反射
动态代理
classloader

五、 推荐阅读

Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏

未经允许不得转载

ddd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1382596.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入理解 Spark(三)SparkTask 执行与 shuffle 详解

SparkTask 的分发部署与启动流程分析 Spark Action 算子触发 job 提交 Spark 当中 Stage 切分源码详解 Task 的提交与执行 SparkShuffle 机制详解 MapReduceShuffle 全流程深度剖析 MapReduce 全流程执行过程中参与工作的组件以及他们的执行先后顺序:InputFormat …

山西电力市场日前价格预测【2024-01-15】

日前价格预测 预测说明: 如上图所示,预测明日(2024-01-15)山西电力市场全天平均日前电价为399.10元/MWh。其中,最高日前电价为583.33元/MWh,预计出现在18:15。最低日前电价为275.09元/MWh,预计…

分享从零开始学习网络设备配置--任务4.4 使用动态路由OSPFv3实现网络连通

任务描述 由于RIPng不适用于复杂的网络,考虑到公司的未来发展,需要不断扩大网络规模。某公司在企业网络升级时,选择 OSPFv3路由协议实现网络连通,降低网络拓扑变化引发的人工维护工作量并加快网络收敛的速度。 公司内部的所有设…

leetcode 2114. 句子中的最多单词数

题目: 一个 句子 由一些 单词 以及它们之间的单个空格组成,句子的开头和结尾不会有多余空格。 给你一个字符串数组 sentences ,其中 sentences[i] 表示单个 句子 。 请你返回单个句子里 单词的最多数目 。 解题方法: 1.遍历列表…

vivado IP使用

使用IP源 注意:有关IP的更多信息,包括添加、打包、模拟和升级IP,请参阅VivadoDesign Suite用户指南:使用IP(UG896)进行设计。在Vivado IDE中,您可以在RTL项目中添加和管理以下类型的IP核心&…

一分钟找到所有的中文核心期刊

1.进入中国知网找到出版物检索 2.在出版来源导航这里选择期刊导航 3.右边拉到底选择核心期刊导航 4.选择自己专业的期刊即可

SpringMVC 学习博客记录

文章目录 Servlet请求转发和请求包含RequestDispatcher HandlerInterceptor组件实际运用场景 HandlerMapping&RequestMappingInfo(HandlerMapping)HandlerExecutionChainHandlerAdapter源码学习知识点博客记录 Servlet请求转发和请求包含 RequestDispatcher Request#getR…

微服务技术要点

一、服务注册到nacos 1.下载nacos,修改nacos启动模式为单机模式,另外需要在环境变量配置JAVA_HOME,否则启动不起来。 2.启动类加注解EnableDiscoveryClient 3.application.yml配置nacos地址 spring:cloud:nacos:discovery:server-addr: 127.0.0.1:884…

JDK-JVM

JVM JDKJDK内部体系结构:JVM 与 跨平台JVM在程序运行过程中的运行细节,内存分配 和 流转模型。JVM结构体系1. 虚拟机栈2. 线程栈2.1. 栈帧2.2. 数据结构栈 与 线程栈 的关系:2.3.栈帧的内部结构:2.4 方法中的数据 在栈帧中的流转过…

MyBatis第三课

目录 回顾 #和$区别 #(预编译SQL)和$(即时SQL,它是进行的字符串拼接)的区别,其中之一就是预编译SQL和即时SQL的区别 原因: 回顾 两者的共同点 MaBits可以看作是Java程序和Mysql的沟通桥梁&…

网页设计与网站建设作业html+css+js,一个简易的游戏官网网页

一个简易的游戏网页 浏览器查看 目录结构 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

【c++】利用嵌套map创建多层树结构

通常树的深度都大于1&#xff0c;即树有多层&#xff0c;而树结构又可以用c的map容器来实现&#xff0c;所以&#xff0c;本文给出了一种多层树结构的实现思路&#xff0c;同时也给出了相应的c代码。 整体思路概述 首先定义一个节点类Node类&#xff0c;要包括children&#x…

EI论文复现:考虑多能互补的综合能源系统/虚拟电厂/微电网优化运行程序代码!

本程序参考EI论文《基于多能互补的热电联供型微网优化运行》&#xff0c;文章通过储能设备解耦热电联系&#xff0c;建立基于多能互补的综合能源系统/虚拟电厂/微电网优化运行模型。模型包含系统供给侧的多能互补协调与需求侧的综合能源响应两个方面&#xff0c;使供给侧通过能…

基于springboot时间管理系统源码和论文

在Internet高速发展的今天&#xff0c;我们生活的各个领域都涉及到计算机的应用&#xff0c;其中包括时间管理系统的网络应用&#xff0c;在外国时间管理系统已经是很普遍的方式&#xff0c;不过国内的管理系统可能还处于起步阶段。时间管理系统具有时间管理功能的选择。时间管…

XTuner 大模型单卡低成本微调实战

文章目录 配置环境微调部署与测试自定义微调 XTuner 大模型单卡低成本微调 原理可查看 XTuner 大模型单卡低成本微调原理 配置环境 创建一个名为xtuner&#xff0c;python3.10版本虚拟环境 conda create --name xtuner0.1.9 python3.10 -y创建一个xtuner019文件夹&#xff0c…

WebGL在虚拟现实(VR)的应用

WebGL在虚拟现实&#xff08;VR&#xff09;领域的应用日益增多&#xff0c;它为在Web浏览器中创建交互式的虚拟现实体验提供了强大的支持。以下是一些WebGL在VR领域的应用示例&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&am…

Word插件-大珩助手-手写电子签名

手写签名 支持鼠标写&#xff0c;支持触摸屏写&#xff0c;点击画笔按钮切换橡皮擦&#xff0c;支持清空画板重写&#xff0c;点击在word中插入签名&#xff0c;可插入背景透明的签字图 素材库-保存签名 将写好的签字图复制粘贴到素材库中&#xff0c;以便永久使用&#xff…

Visual Studio Code1.67版本已正式发布,新增Rust指南

Visual Studio Code1.67版本已正式发布&#xff0c;该版本包含大量增强生产力的更新项&#xff1a; 资源管理器文件嵌套 通过这次更新&#xff0c;用于浏览和管理文件和文件夹的Visual Studio Code的资源管理器工具现在支持基于名称嵌套相关文件。 资源管理器现在支持根据文…

【Linux操作】国产Linux服务管理操作

【Linux操作】国产Linux服务管理操作 前言SAMBA配置服务器端1. 安装相关包2. 配置/etc/samba/smb.conf&#xff0c;在此文件末尾添加如下内容&#xff0c;并保存退出。3. 创建/home/share并更改权限4. 启动samba服务 客户端• Windows客户端• 麒麟客户端 Telnet1、telnet语法2…

机器学习中的线性回归

线性回归 概念 利用 回归方程(函数) 对 一个或多个自变量(特征值)和因变量(目标值)之间 关系进行建模的一种分析方式。 分类 一元线性回归&#xff1a;y wx b 目标值只与一个因变量有关系 多元线性回归&#xff1a; y w_1x_1 w_2x_2 w_3x_3 … b 目标值只与多个…