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支持等特点。
特性 | RePlugin | VirtualAPK | Qigsaw | Shadow |
开源方 | 奇虎360 | 滴滴 | 爱奇艺 | 腾讯 |
支持四大组件 | √ | √ | √ | √ |
支持新增四大组件 | √ | √ | × | √ |
支持原生资源动态化 | √ | √ | √ | √ |
Flutter代码动态化 | √ | √ | √ | √ |
Flutter代码资源动态化 | × | × | × | × |
Hook方式 | 少 | 多 | 少 | 无 |
Android系统兼容 | 2.3-9.0 | 4.03-9.0 | 4.0+ | 4.0-12 |
厂商系统兼容性 | 低 | 中 | 中 | 高 |
多插件支持 | √ | √ | √ | × |
框架自身动态化 | × | × | × | √ |
接入难度 | 低 | 中 | 中 | 高 |
Android主流插件化相关推荐
- android中的插件开发框架,设计并开发一个 Android 的插件化框架
结合动态加载系列文章的分析,现在开始设计并开发一个 Android 的插件化框架,命名为 Frontia.Frontia 有 "前端" 的意思,寓意着 Android 插件能像前端 ...
- 酷狗 Android App 插件化实施过程
什么是插件化框架 插件化框架可以在主程序不重新安装的情况下,针对单个业务模块进行加载达到模块更新的目的,整个加载更新过程,对用户来说也是无感知的. 正式因为这样,新需求比起传统更新方式 ...
- Android之插件化开发
个人认为: 2017年手淘Atlas插件化项目的开源标志着插件化的落幕, 2018年Android 9.0上私有API的限制几乎称得上是要退出历史主流. 如今的插件化技术朝两个方向发展: 其一,插件化 ...
- android 禁止插件化,Android 插件化实现方式(Hook)
一.首先我们要找到Hook的点 1. 分析 我们先大概看下activity的启动流程(图片来自Android 插件化开发指南) image 当我们调用startActivity的时候,AMS对我们要启 ...
- 【android】插件化技术原理详解
作为移动端的黑科技,插件化技术一直受大厂的青睐.插件化技术有减少宿主Apk体积,可以独立更新,模块化开发等优点,让宿主APP极具扩展性.那么,现在就来聊聊其中的技术实现,国际惯例,先上效果图 这篇 ...
- 携程Android App插件化和动态加载实践
转载自:http://www.infoq.com/cn/articles/ctrip-android-dynamic-loading?email=947091870@qq.com 编者按:本文为携程无 ...
- android contentprovider 插件化之一
------本文转载自 Android插件化原理解析--contentprovider的插件化 这一系列的文章实在是写的好! 1, 概述 目前为止我们已经完成了Android四大组件中 Ac ...
- android aapt插件化,Android APK文件(三、AAPT2工具使用)
AAPT2(Android 资源打包工具)是一个构建工具,Android Studio 和 Android Gradle 插件使用它来编译和打包应用的资源.AAPT2 会解析资源.为资源编制索引,并将 ...
- 【Android 插件化】Hook 插件化框架 ( hook 插件化原理 | 插件包管理 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- Android插件化技术调研
一.技术背景 Android的插件化技术,目前已经比较成熟,微信.淘宝.携程.360手机助手中都应用到了插件化.插件化技术的特点是无需单独安装apk,即可运行,即插即用,无需升级宿主应用,减少app的 ...
最新文章
- java 线程可见性,Java多线程之内存可见性
- MyBatis 分页插件 PageHelper
- intellij idea_IntelliJ IDEA内部设计
- JS之onsubmit事件与组织事件外延
- 前端-chromeF12 谷歌开发者工具详解 Network篇
- LRU原理和Redis实现
- oracle optimizer_index_cost_adj,OPTIMIZER_INDEX_COST_ADJ与成本计算
- 【转】Ubuntu 16.04安装配置TensorFlow GPU版本
- JavaParser使用指南
- hash表的一些基本知识
- 手心输入法 -无广告不骚扰
- 15b万用表怎么测电容_手工改造丨把15B万用表隐藏的功能利用起来~
- java.lang.IllegalArgumentException: Address 127.0.0.1:5672:5672 seems to contain an unquoted IPv6
- Neo4j 爬坑笔记for3.2.6
- 范式(Paradigm)是什么?
- 不知道如何录音转文字?分享两个实用方法
- 【内核笔记】博文2021回顾-2022规划
- 使用AppiumDesktop控制手机
- Java网络编程学习
- Word转pdf一个方法就可以完成~手机电脑都可以免费使用~办公必备
热门文章
- 在编译命令行中添加 /D_SCL_SECURE_NO_DEPRECATE
- 光学系统建模之Light Tools安装关键点、教程指引
- 为什么要写书?出版图书有哪些好处?
- Attention-guided Context Feature Pyramid Network for Object Detection
- arn : 无法加载文件 C:\Users\zky\AppData\Roaming\npm\yarn.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.
- 22. 关于定时任务指定的时间间隔内没有完成任务的处理
- hhkb mac设置_HHKB MAC 配置指南 操作指南 快捷键
- 用matlab解超越方程,MATLAB实例之对线性,非线性,超越方程的求解
- 基于CAN总线的汽车诊断协议--Windows上位机设计
- 生成的SMILES以及对应的图像的评价指标【1】