关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。
未经允许不得转载
我们继续总结学习基础知识,温故知新。
本文主要讲述插件化相关的概念及应用。
插件化是指将一个Android应用程序拆分成多个独立的插件(Plugin),每个插件可以独立开发、测试、编译、发布和升级,相当于一个模块是一个apk。
插件可以在运行时动态加载和卸载,实现功能的扩展和灵活性的提高。插件可以通过定义接口和调用API的方式与宿主应用程序进行通信和交互。
目前就很多的大型应用,如支付宝等都在使用插件化技术,插件化有诸多的优势:
截止 2023年8月份还在更新的开源库,目前只有一个
Shadow(腾讯) | |
---|---|
是否支持四大组件 | 全部 |
是否支持so | 支持 |
兼容性适配 | 高 |
原理 | 零反射全动态Android插件框架 |
是否维护 | 最近更新2023/8 |
缺点 | Kotlin实现,且无详细的文档 |
还有很多好久没更新的,虽然不更新了,但是原理跟思路也是可以参考一下的:
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、反射等非常规操作做出了一系列的改动、限制,考虑到项目的长期维护,这一类的插件方案要慎重使用。
下一篇我们将介绍插件化的原理。
java hook
native hook
反射
动态代理
classloader
未经允许不得转载