滴滴首个开源项目 VirtualAPK 加载耦合插件首选

来源:互联网 发布:触摸屏软件开发公司 编辑:程序博客网 时间:2024/06/05 16:16
来源:开源最前线 猿妹 整编


号称手机“打车神器”的滴滴在 6 月 30 日正式宣布开源其 Android 插件化框架 —— VirtualAPK ,这也是滴滴公司的首个对外开源项目。业内认为,在加载耦合插件方面,VirtualAPK 可以说是开源方案的首选。


插件化框架 VirtualAPK


授权协议:Apache

开发语言:Java

操作系统:Android

开发厂商:滴滴

Github:https://github.com/didi/VirtualAPK  4360



VirtualAPK 简介


VirtualAPK 是滴滴出行自研的一款优秀的插件化框架,滴滴表示于去年开始研究 Android 插件化方面的技术,经过半年的开发、测试、适配和线上验证,最终形成了现在的 VirtualAPK 。VirtualAPK 已在滴滴内部得到了很好的验证,并已应用于滴滴乘客端和优步中国 APP 中。



VirtualAPK 特性


1、功能完备


  • 支持几乎所有的 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。


2、优秀的兼容性


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

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

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

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

3、入侵性极低


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

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

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



整体结构图




VirtualAPK 工作过程


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



滴滴自行研发了这款插件化框架,功能全面、兼容性好,还能够适用于有耦合的业务插件,这就是VirtualAPK存在的意义。业内认为,在加载耦合插件方面,VirtualAPK 可以说是开源方案的首选。



原创粉丝点击