1、VirtualApk介绍:
virtualApk是滴滴出行自主研发的一款优秀的插件化框架,拥有入侵性底、兼容性优秀和功能完备的优点。也正因为是这些优点让我在接触插件化形式开发选中了VirtualApk为切入点。VirtualApk在解耦方面,VirtualAPK是开源方案的首选,推荐大家使用。
VirtualApk项目地址:https://github.com/didi/VirtualAPK
2、为什么写这篇文章:
首先,这篇文章只是作为我的使用记录,这一次使用完后不知道什么时候会再次使用,所以为了避免自己对VirtualApk的遗忘,写了这一边“备忘录”。这篇文章没有源码介绍;没有架构分析;也没有实现方式,只是罗列步骤介绍如何使用VirtualApk框架。如果想要知道这些知识的大神们,后面的就不用看了,没什么技术含量,关于这方面的内容找度娘直接搜索有很多。
3、名词介绍:
宿主项目:要接入插件的承载项目。
插件项目:作为插件被宿主项目所使用的项目。
4、开始
首先,创建项目。项目中包含默认的Module-->app。
暂时把它作为宿主项目。
然后,配置宿主项目:
在工程根目录下build.gradle中添加节点,我这里使用的是0.9.4版本。使用时通过文章头的链接进入VirtualApk的github地址使用最新版本。
在项目(宿主项目)的build.gradle中顶部添加:
在App的build.gradle中 compile 添加:
5、宿主项目配置:
创建class文件,集成Application类:
重写TestApplication类的attachBaseContent方法:
编写Activity内容:为界面创建一个按钮,为按钮添加onClick事件,触发启动插件Activity操作。
注意:在触发启动插件之前,需要提前加载插件。
Button点击触发事件内容:
6、插件项目配置:
为当前Project添加plugin Module:
在插件项目根目录下build.gradle中顶部添加依赖以及插件配置信息。
界面编写:
用于区分宿主界面启动插件界面成功,在插件界面添加了一个TextView,text内容写上当前界面是插件Activity的界面。
至此,插件配置完成。
7、构建插件
使用git构建:
进入项目插件项目根目录,点击右键Git Bash Here 输入:
./gradlew clean assemblePlugin 或者 gradle clean assemblePlugin
我就呵呵了,没成功,查找资料,结果gradle可以全自动构建一键搞定:
双击assemblePlugin直接构建完成,完成后插件目录地址:..(插件项目根目录)\build\outputs\plugin\release
这里有个坑:
在进行插件构建时,如果宿主项目没有被运行过或者说被构建过,进行插件构建才能成功。
还有一个坑:
资源共享问题,插件项目资源和宿主项目资源的id不能相同,直白一点就是名字不能项目。宿主项目的MainActivity启动插件项目的MainActivity。由于两个Activity所引用的布局资源文件的名字都是layout_main.xml,导致虽然插件Activity被启动成功,但是所引用的布局文件却是宿主项目的layout_main.xml。
将这个插件放置到android手机固定的位置,这个位置在宿主项目中按钮点击事件启动插件时会用到。 插件放到固定目录 运行宿主程序,点击按钮,启动插件Activity。