VirtualAPK 滴滴 Android 插件化框架开源项目

我要开发同款
匿名用户2017年06月30日
31阅读
开发技术Java
所属分类AndroidUI组件、手机/移动开发、Android UI 组件
授权协议Apache

作品详情

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等,对未知机型采用自适应适配方案;

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

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

入侵性极低

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

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

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

VirtualAPK的工作过程

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

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论