diff --git a/README.md b/README.md index a5dd28e78fa83b267280e79625e6c82f2d90116c..fc933b8e5dd4313fcf4abb7ab62fdccb505f557a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # 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) 对插件化感兴趣的朋友可以把代码拉下来玩一下,基本能省略掉你很多踩坑的地方