滴滴 Android 插件化框架 VirtualAPK

滴滴 Android 插件化框架 VirtualAPK

Apache
Java
Android
2017-06-30
朱哲

VirtualAPK 是滴滴出行自研的一款优秀的插件化框架,通过将业务模块插件化,可随时更新插件来发布新功能,具备版本随时发布的能力。

VirtualAPK的特性

功能完备

  • 支持几乎所有的Android特性;

  • 四大组件方面

四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期。

  • Activity:支持显示和隐式调用,支持Activity的theme和LaunchMode,支持透明主题;

  • Service:支持显示和隐式调用,支持Service的start、stop、bind和unbind,并支持跨进程bind插件中的Service;

  • Receiver:支持静态注册和动态注册的Receiver;

  • ContentProvider:支持provider的所有操作,包括CRUD和call方法等,支持跨进程访问插件中的Provider。

  • 自定义View:支持自定义View,支持自定义属性和style,支持动画;

  • PendingIntent:支持PendingIntent以及和其相关的Alarm、Notification和AppWidget;

  • 支持插件Application以及插件manifest中的meta-data;

  • 支持插件中的so。


优秀的兼容性

  • 兼容市面上几乎所有的Android手机,这一点已经在滴滴出行客户端中得到验证;

  • 资源方面适配小米、Vivo、Nubia等,对未知机型采用自适应适配方案;

  • 极少的Binder Hook,目前仅仅hook了两个Binder:AMS和IContentProvider,hook过程做了充分的兼容性适配;

  • 插件运行逻辑和宿主隔离,确保框架的任何问题都不会影响宿主的正常运行。


入侵性极低

  • 插件开发等同于原生开发,四大组件无需继承特定的基类;

  • 精简的插件包,插件可以依赖宿主中的代码和资源,也可以不依赖;

  • 插件的构建过程简单,通过Gradle插件来完成插件的构建,整个过程对开发者透明。


VirtualAPK的工作过程

VirtualAPK 对插件没有额外的约束,原生的apk即可作为插件。插件工程编译生成apk后,即可通过宿主App加载,每个插件apk被加载后,都会在宿主中创建一个单独的LoadedPlugin对象。如下图所示,通过这些LoadedPlugin对象,VirtualAPK就可以管理插件并赋予插件新的意义,使其可以像手机中安装过的App一样运行。

VirtualAPK

加载中

评论(2)

2010带你飞
2010带你飞
我们德邦公司的APP估计就是用这个对接的打车服务
TavenLi
TavenLi
值得看看

VirtualAPK 0.9.6 发布,滴滴 Android 插件化框架

VirtualAPK 0.9.6 已发布,包含 com.didi.virtualapk:core:0.9.6 和 com.didi.virtualapk:gradle:0.9.8.6 两部分。 com.didi.virtualapk:core:0.9.6 代码重构 修复部分空指针 bug 适配 Andr...

09/10 07:37

VirtualAPK 0.9.5 发布,滴滴 Android 插件化框架

VirtualAPK 0.9.5 已发布,包含 com.didi.virtualapk:core:0.9.5 和 com.didi.virtualapk:gradle:0.9.8.2 两部分。 com.didi.virtualapk:core:0.9.5 修复多个 bug ,强烈建议升级至此版本,以...

05/23 07:43

滴滴宣布开源 Android 端插件化框架 VirtualAPK

滴滴于今天正式宣布开源其 Android 插件化框架 —— VirtualAPK ,这也是滴滴公司的首个对外开源项目。 滴滴表示于去年开始研究 Android 插件化方面的技术,经过半年的开发、测试、适配和线上...

2017/06/30 11:51

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

关于使用VirtualAPK插件加载Activity的时候抛Activity找不到异常,未注册的问题

在使用didi/VirtualAPK插件的时候,抛ActivityNotFoundException的问题,如: 解决方案: 1,检查有没有在Application中初始化插件引擎 2,检查是否开启内存读写权限,并检查插件是否加载进指...

08/27 16:50
38
0
android仿IT之家、炫酷水波纹、Kotlin MVP项目、后台模拟点击、蜂巢迷宫小游戏等源码

## Android精选源码 ##### [**Android 炫酷的多重水波纹源码**](http://www.apkbus.com/thread-598586-1-1.html) ![image](https://upload-images.jianshu.io/upload_images/6692991-592be02...

05/02 16:21
65
0
全面理解Gradle - 执行时序

什么是Gradle? 一个像 Ant 一样的非常灵活的通用构建工具 一种可切换的, 像 maven 一样的基于合约构建的框架 支持强大的多工程构建 支持强大的依赖管理(基于 ApacheIvy ) 支持已有的 maven ...

08/31 16:15
18
0
Android虚拟化引擎VirtualApp探究

介绍 首先需要说明的是,VirtualApp并不是前些阵子滴滴开源的插件化框架VirtualApk。 VirtualApp是一个更加黑科技的东西,他可以创建一个虚拟空间,你可以在虚拟空间内任意的安装、启动和卸载...

11/23 13:48
3
0
Android 插件化总结

1.Android中插件开发篇总结和概述 2.Android组件化和插件化开发 3.携程Android App插件化和动态加载实践 4.Atlas:手淘Native容器化框架和思考 5.Android组件化开发实践 6.Android插件化从入...

2017/02/06 15:24
25
0
美团App 插件化实践

背景 在Android开发行业里,插件化已经不是一门新鲜的技术了,在稍大的平台型App上早已是标配。进入2017年,Atlas、Replugin、VirtualAPK相继开源,标志着插件化技术进入了成熟阶段。但纵观各...

11/16 11:04
3
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部