插件化简单介绍

关于作者: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

  • 111
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 85
    评论
Qt是一款跨平台的C++应用程序开发框架,支持各种GUI(图形用户界面)和非GUI应用程序开发。Qt提供了件(Plugin)机制,使开发者可以将应用程序的功能模块,以实现灵活的开发。 Qt件机制允许开发者将应用程序的一部分功能独立封装成件,并在运行时动态加载。这样的好处是件可以在不重新编译整个应用程序的情况下进行更新或替换,极大地提升了开发效率和灵活性。 开发中,Qt提供了一些关键的类和接口,包括QPluginLoader、QObject和Q_EXPORT_PLUGIN2等。首先,使用QPluginLoader类可以在运行时加载件,并提供了查找和实例件的功能。其次,件类需要派生自QObject类,并通过宏Q_OBJECT和Q_PLUGIN_METADATA来声明,以便Qt能够正确处理件的元数据和信号槽机制。最后,Q_EXPORT_PLUGIN2宏用于导出件类的实例,使其可以被QPluginLoader动态加载。 利用Qt的件机制,开发者可以将应用程序按功能划分为不同的件模块,简开发过程和项目维护。件可以通过简单的配置文件进行注册和管理,实现件的自动加载和卸载。另外,Qt的信号槽机制可以在件之间进行通信和交互。这使得多个独立开发的件可以灵活地协同工作,提供更丰富的功能和扩展性。 总结来说,Qt的件机制使得应用程序的功能模块,提供了灵活的开发方式。开发者可以通过动态加载和卸载件,实现件的更新和替换,提升开发效率和项目的可维护性。件之间可以通过信号槽机制进行通信和交互,实现更丰富的功能和扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 85
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android西红柿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值