Android主流插件化

Android插件化原理与方案详解 Android插件化是一种开发模式,它允许我们动态地加载和卸载APK,从而实现模块化开发,热更新等功能。本文将详细介绍Android插件化的原理,以及几种主流的Android插件化方案。 阅读详情

前言:插件化技术发展到现在其实已经很成熟了,但是相应的问题,如果没有真正地去实践过,根本不了解其中有多少问题,会牵涉到多少技术细节,多少被外人膜拜的外表光鲜的技术大牛都被『插件化』这三个字折磨地死去活来,这对于 Android 整个生态的损害也让人无法忽视。

一.Android插件化的细节:

1.在 Android 里有一个比较好的一点是,作为 library 的时候,aar 里的引用依赖,在宿主 Application 里也有同样的引用依赖,并不会打包两份到宿主 Application 里;

2.模块之间的跳转,除了使用别名的方式,我能想到的还有另外一种方式,同样是通过 gradle 脚本,将跳转用到的类打成一个 jar ,作为一个 API 服务提供给其他模块作为编译期依赖(provided)引入;

3.各个 library 在 debug 的时候作为 apk ,要独立打包运行测试,这时就需要有一个启动 Activity ,而 library 是不需要的,我的想法是放置两个 AndroidManifest.xml ,使用 sourceSets 分别在 debug 和 release 的时候加载不同的 AndroidManifest.xml。

二.开源插件化框架(框架详解及优缺点对比图如下:):

  目前成熟的开源框架分别有 

  1. 360插件开发之DroidPlugin ,360开源全面插件化框架RePlugin  

   a.DroidPlugin是360手机助手在Android系统上实现了一种新的插件机制。它可以在无需安装、 修改的情况下运行APK文件,此机制对改进大型APP的架构,实现多团队协作开发具有一定好 处。

   b.RePlugin 是一套完整的、稳定的、适合全面使用的,占坑类插件化方案,由360手机卫士的 RePlugin Team研发,也是业内首个提出”全面插件化“(全面特性、全面兼容、全面使用)的 方 案。

  2.滴滴VirtualApk  

  a.VirtualAPK是滴滴在2017年6月开源的一款插件化框架,支持Android四大组件,以及几乎所有的Android特性,通过Gradle来构建插件,集成与构建十分便捷,目前已经应用在 滴滴出行App上,兼容市面上几乎所有的Android设备。

  3.爱奇艺插件化原理分析之 Neptune框架 

  a.Neptune是爱奇艺移动端研发的一套灵活,稳定,轻量级的插件化解决方案。经过不断的研 发,迭代和线上验证,目前已经完全适配了Android P,能够在数亿的设备上动态加载和运行插件APK,为爱奇艺众多的垂直业务团队提供了稳定的服务。

  4.腾讯插件化框架 Shadow
    a.Shadow是一个腾讯自主研发的Android插件框架,经过线上亿级用户量检验。Shadow不仅开 源分享了插件技术的关键代码,还完整的分享了上线部署所需要的所有设计。更是具有复用独 立安装App的源码、零反射无Hack实现插件技术、全动态插件框架、宿主增量极小、Kotlin支持等特点。

特性RePluginVirtualAPKQigsawShadow
开源方奇虎360滴滴爱奇艺腾讯
支持四大组件√√√√
支持新增四大组件√√×√
支持原生资源动态化√√√√
Flutter代码动态化√√√√
Flutter代码资源动态化××××
Hook方式少多少无
Android系统兼容2.3-9.04.03-9.04.0+4.0-12
厂商系统兼容性低中中高
多插件支持√√√×
框架自身动态化×××√
接入难度低中中高

     

Android 插件化 1.插件化 插件可以理解为免安装的Apk,而支持插件的app称为宿主。 在Android系统中,应用是以Apk的形式存在的,应用都需要安装才能使用。实际上Android系统安装应用的方式相当简单,就是把应用Apk拷贝到系统不同的目录下,然后把so解压出来而已。 常见的应用安装目录有: /system/app:系统应用 /system/priv-app:系统应用 /data/app:用户应用 一个Apk会包含如下几个部分: classes.dex:Java代码字节码 res:资源文件 . 阅读详情

相关推荐

Android插件化主流框架和实现原理

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。腾讯、字节跳动、阿里、百度等BAT大厂 2019-2021面试真题解析资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84123077的博客 1327

android 插件化全面解析

插件化,四大组件的工作流程,代理

weixin_43836998的博客 6580

Ubuntu环境下读取罗技G29方向盘信息

Ubuntu环境下读取罗技G29方向盘信息

工大机器人工作室 3463

安卓学习之插件化 - 自制简单插件化框架(一)

学习记录,写的不一定准确。在之前的插件开发中,大多数情况下都是使用别人创建好的轮子,比如奇虎的插件框架Replugin,使用轮子无疑给开发带来速度的提升。但是现在很多插件框架早就停止了维护,接入起来也是麻烦的很,甚至无法接入。今天就自学一下自制插件框架。首先我们知道,给主APP开发插件需要有一个插件的接入标准,所有插件APK皆按照这个接入标准进行开发,所以第一步就是写一个接入标准Library,不过在写之前还是捋一下大纲。

qq_14826519的博客 2080

[Ethernet in CANoe]2--如何在CANoe中去仿真CP版本的SOME/IP通信

上篇文章()介绍了SOME/IP的两种类型的数据格式,根据作者目前的项目经验,目前在CANoe V18之前的版本,CP版本的arxml是最方便实现SOME/IP以太网仿真的。作者目前只有CANoe V17的license,所以本片文章是在CANoe 17上基于CP版本的arxml去做仿真模拟。

汽车ECU自动化测试 1764

数字IC后端时钟树综合实战:OCC电路优化与时钟树平衡策略

本文深入探讨了数字IC后端设计中时钟树综合的关键挑战,重点分析了OCC电路时钟树优化的必要性。通过实战案例,详细阐述了如何通过手动干预、时钟分组与分段长树等策略,避免工具自动平衡导致的时序违例和资源浪费,从而有效实现时钟树平衡并提升设计质量。

weixin_29306261的博客 326

Android插件化主流框架和实现原理,android基础图形

百度百科里是这么定义插件的:「 是一种遵循一定规范的应用程序接口编写出来的程序,只能运行在程序规定的系统平台下,而不能脱离指定的平台单独运行。」,也就是说,插件可以提供一种动态扩展能力,使得应用程序在运行时加载原本不属于该应用的功能,并且做到动态更新和替换。那么在 Android 中,何为「 插件化 」,顾名思义,就是把一些核心复杂依赖度高的业务模块封装成独立的插件,然后根据不同业务需求进行不同组合,动态进行替换,可对插件进行管理、更新,后期对插件也可进行版本管理等操作。宿主。

2401_83621541的博客 735

从混乱到清晰:用QJsonObject重构你的Qt网络API数据解析层(避坑指南)

本文详细介绍了如何使用QJsonObject重构Qt网络API数据解析层,避免常见的JSON解析陷阱。通过安全解析模式、数据绑定和性能优化技巧,帮助开发者构建高效、健壮的解析逻辑,提升代码可维护性和可读性。特别适用于处理复杂嵌套的JSON响应数据场景。

weixin_29011667的博客 230

Android-插件化详解

什么是插件化?插件化就是将整个app拆分成多个模块,这些模块包括一个宿主和多个插件,每一个模块都是一个apk,最终打包的时候宿主apk和插件apk分开打包。那么这样做的好处是什么呢?1.减小app的体积,按需下载,用不到某些模块就不需要下载相应的插件apk2.减小模块之间的耦合度,降低协同开发的成本3.解决了应用之前的相互调用问题。

袁震的博客 2411

达梦DM8整合Seata AT模式实战:手把手教你搞定分布式事务(含源码修改避坑)

本文详细介绍了达梦DM8数据库与Seata AT模式的深度整合实战,包括环境准备、架构设计、源码适配及分布式事务落地。通过独创性源码改造,解决了Seata官方对达梦数据库AT模式支持的限制,为国产数据库在微服务架构中的应用提供了可靠的事务保障。

weixin_30764771的博客 332

STM32 Proteu直流电机正反转控制系统限位开关-0035

硬件组成:STM32F103C6单片机 +L298N电机控制电路+直流电机+3个按键(正转、反转、停止)+LED指示灯(正转、反转、停止)+限位开关(正限位 反限位) 1.通过3个按键(正转、反转、停止)控制电机的正转、反转、停止。 2.有3个LED指示灯,正转时正转指示灯亮。反转停止对应反转停止指示灯亮。 3.有自动正转反转停止功能,正转时当正限位按键按下时说明正转到最大距离。此时自动停止。反转一样。

zhaxiaobian_er的博客 2002

“终于懂了~”系列:Android插件化

插件化技术最初源于免安装运行 的想法,这个免安装的 就可以理解为插件,而支持插件的 我们一般叫 宿主。想必大家都知道,在 系统中,应用是以 的形式存在的,应用都需要安装才能使用。但实际上 系统安装应用的方式相当简单,其实就是把应用 拷贝到系统不同的目录下、然后把 解压出来而已。常见的应用安装目录有:那可能大家会想问,既然安装这个过程如此简单, 是怎么运行应用中的代码的呢,我们先看 的构成,一个常见的 会包含如下几个部分:其实 系统在打开应用之后,也只是开辟进程,然后使用 加载 至进程

1 1442

AgentScope 实战训练营-构建元规划智能体(Meta Planner Agent)—— 从 0 到 1 完整实现

本文介绍了基于AgentScope框架开发的元规划智能体(Meta Planner Agent)系统。该系统通过任务拆解和子代理编排机制,实现复杂任务的自动化处理。核心架构分为用户层、规划器层和子代理层,其中规划器作为"项目经理"负责任务分解、创建子代理并协调执行流程。关键技术包括AgentScope多智能体框架、DashScope大语言模型、PlanNotebook计划管理工具等。

program哲学 359

【Android 插件化】插件化框架整理

一、Altas ( 阿里巴巴 )、 二、DynamicAPK ( 携程 )、 三、VirtualApp ( 罗迪 )、 四、DroidPlugin ( 360 )、 五、dynamic-load-apk ( 任玉刚 )、 六、Shadow ( 腾讯 )、 七、Phantom ( 满帮 )、 八、RePlugin ( 360 )、 九、Small、 十、VirtualAPK ( 滴滴 )、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 5215

Qt C++ HTTP 调用通义千问大模型 X 学术论文润色工具(SCI 格式适配)

请求地址:`https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation`;| Windows | 打包时携带 `Qt6Network.dll`/`libcrypto-1_1-x64.dll` 等依赖;| Linux | 安装 `libssl-dev` 和 `libcurl4-openssl-dev`;| API 调用失败 | 检查 API-KEY 是否有效;

寒寒豆豆软件公司的博客 104

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

安卓之热修复&插件化

安卓之热修复&插件化

slave_of_life的博客 947

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

进阶高工必备技能:Android插件化技术全解析!

插件化的学习肯定不是只要掌握以上的“入门知识”和“实现原理”就可以了的,还需要去学习主流插件化框架的原理以及多去实战应用。直达领取通道自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

950

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Android大型组件:揭秘Android的插件化主流框架和实现原理,助你突破瓶颈HarmonyOS

插件化框架的基本原理是通过动态加载插件的代码和资源,并使用独立的ClassLoader加载插件的类和资源。三、HarmonyOS的插件抱歉,但是由于我是基于2021年9月的知识进行训练的,对于HarmonyOS插件化相关的内容了解有限。插件化框架是指将应用的功能模块以插件的形式进行开发和管理,实现模块的动态加载和卸载。插件的加载是插件化框架的核心步骤。在加载插件之前,需要将插件的APK文件通过IO流写入到设备的存储中,并获取到插件的文件路径。插件的启动是指在宿主应用中调用插件的入口方法,以启动插件的功能。

IsdCoding的博客 482

走进Android组件化和插件化开发

项目发展到一定程度,就必须进行模块的拆分。模块化是一种指导理念,其核心思想就是分而治之、降低耦合。而在 Android 工程实践,目前有两种途径,一个是组件化,一个是插件化。关于组件化方面的具体知识,可以扫描下方二维码免费领取!!

m0_56146626的博客 884

android 插件化方案对比及原理

一、技术背景 Android的插件化技术,目前已经比较成熟,微信、淘宝、携程、360手机助手中都应用到了插件化。插件化技术的特点是无需单独安装apk,即可运行,即插即用,无需升级宿主应用,减少app的更新频率, 除此之外他还可以降低模块耦合,按需加载,节省流量等特点。 二、已有框架技术对比 表1从是否支持四大组件、是否须在主manifest预注册等多个维度对主流开源框架进行对比,从而筛选出比较符合项目的框架有VirtualAPK、RePlugin。 表1主流开源框...

TyearLin的专栏 3878

android插件化框架,超详细讲解

最近跟一个朋友聊天,他准备了几个月,刚刚参加完字节跳动面试,第二面结束后,嗯,挂了…所以啊,不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流~

m0_61331407的博客 1272

【Android -- 学习笔记】插件化技术

Android 插件化技术

Kevin Learn Android 475

有关Android插件化的一些总结思考

但这些框架的核心思想都是用到了代理模式,有的在表面层进行代理,有的则在系统应用层进行代理,通过代理达到替换和瞒天过海,最终让 Android 系统误以为调用插件功能和调用原生开发的功能是一样的,进而达到插件化和原生兼容编程的目的。是基于代理的方式实现插件框架,对 App 的表层做了处理,通过在 Manifest 中注册代理组件,当启动插件组件时,首先启动一个代理组件,然后通过这个代理组件来构建,启动插件组件。一种新的插件机制,一种免安装的运行机制,是一个沙箱(但是不完全的沙箱。一定会认真查询,修正不足。

2401_84122826的博客 576
上一篇: App稳定性优化及Crash率破解之道
下一篇: Java设计模式-单列模式
Clarence_zsp
博客等级 码龄11年 12粉丝 19原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值