Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
门心叼龙
VirtualAPKDemo
提交
f050bc78
V
VirtualAPKDemo
项目概览
门心叼龙
/
VirtualAPKDemo
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
VirtualAPKDemo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
f050bc78
编写于
12月 06, 2019
作者:
A
asure
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
优化
上级
921c8ed3
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
11 deletion
+11
-11
README.md
README.md
+11
-11
未找到文件。
README.md
浏览文件 @
f050bc78
# VirtualAPK的特性
VirtualAPK是滴滴出行自研的一款优秀的插件化框架,主要有如下几个特性。
#功能完备
**·**
支持几乎所有的Android特性;
**·**
四大组件方面
#四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期。
#
功能完备
**·**
支持几乎所有的Android特性;
**·**
四大组件方面
#
四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期。
1.
Activity:支持显示和隐式调用,支持Activity的theme和LaunchMode,支持透明主题;
2.
Service:支持显示和隐式调用,支持Service的start、stop、bind和unbind,并支持跨进程bind插件中的Service;
3.
Receiver:支持静态注册和动态注册的Receiver;
...
...
@@ -12,22 +12,22 @@ VirtualAPK是滴滴出行自研的一款优秀的插件化框架,主要有如
6.
PendingIntent:支持PendingIntent以及和其相关的Alarm、Notification和AppWidget;
7.
支持插件Application以及插件manifest中的meta-data;
8.
支持插件中的so。
#优秀的兼容性
#
优秀的兼容性
1.
兼容市面上几乎所有的Android手机,这一点已经在滴滴出行客户端中得到验证;
2.
资源方面适配小米、Vivo、Nubia等,对未知机型采用自适应适配方案;
3.
极少的Binder Hook,目前仅仅hook了两个Binder:AMS和IContentProvider,hook过程做了充分的兼容性适配;
4.
插件运行逻辑和宿主隔离,确保框架的任何问题都不会影响宿主的正常运行。
#入侵性极低
#
入侵性极低
1.
插件开发等同于原生开发,四大组件无需继承特定的基类;
2.
精简的插件包,插件可以依赖宿主中的代码和资源,也可以不依赖;
3.
插件的构建过程简单,通过Gradle插件来完成插件的构建,整个过程对开发者透明。
```
以上内容均引用(https://github.com/didi/VirtualAPK/wiki)
```
# 集成
####先列一下项目的结构。![项目结构.png](https://upload-images.jianshu.io/upload_images/10881059-79344da540e0be92.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#
集成
####
先列一下项目的结构。![项目结构.png](https://upload-images.jianshu.io/upload_images/10881059-79344da540e0be92.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
####开始集成
####
开始集成
1.
项目级的build.gradle文件中
```
classpath 'com.android.tools.build:gradle:3.0.0'
...
...
@@ -104,7 +104,7 @@ virtualApk {
如果顺利的话,插件apk会在插件项目的 build/outputs/plugin/release 文件夹下
~~~当然大部分情况下基本都是失败,所以接下来列一下所有踩过的坑
```
#踩坑记录
#
踩坑记录
1.
在执行./gradlew assemblePlugin前,先执行一下Make Project 确保宿主app/build/VAHost文件夹下有versions.txt文件,否则:
```
* What went wrong:
...
...
@@ -147,7 +147,7 @@ import com.jason.plugin.plugin_one.R;
6.
buildToolsVersion 不支持28.0.0往上,我项目里用的是26.0.2
#以上是集成VirtualAPK的整个流程和踩的坑
#
以上是集成VirtualAPK的整个流程和踩的坑
github地址:(https://github.com/liujun123456/VirtualAPKDemo)
对插件化感兴趣的朋友可以把代码拉下来玩一下,基本能省略掉你很多踩坑的地方
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录