手把手教你集成滴滴的插件化框架virtualapk
来源:互联网 发布:网络机顶盒 会员 编辑:程序博客网 时间:2024/05/29 13:21
首先是virtualapk的官方demo:https://github.com/didi/VirtualAPK
然后,开始集成,咱们一步一步来。
第一步:创建一个android项目,这个大家都会我就不截图了。
第二步:修改编译环境,virtualapk对编译环境有很大的限制,我使用的编译环境是:
这两张截图的位置分别是项目根目录下的build.gradle和gradle文件夹下的gradle-wrapper.properties。
第三步:创建一个插件。
选择New Module
选择Phone&Tablet Module
然后就和创建项目一样了,建议是不要把主类的名称和宿主的类名相同(宿主就是最开始创建的项目)。如果创建一样的话,可能造成跳转页面出现空白。
第四步:添加依赖。
在项目根目录的build.gradle的dependencies标签下添加
classpath 'com.didi.virtualapk:gradle:0.9.4',也就是这样的
在宿主下的build.gradle的dependencies标签下添加
compile 'com.didi.virtualapk:core:0.9.1'
在顶部添加
apply plugin: 'com.didi.virtualapk.host'
在插件的build.gradle的dependencies标签下添加
compile 'com.didi.virtualapk:core:0.9.1'
在最底部添加
apply plugin: 'com.didi.virtualapk.plugin'
virtualApk {
packageId = 0x6f
targetHost = 'E:/AndroidStudioProjects/DidiPluginDemo/app'
applyHostMapping = true
}
解释一下virtualApk标签下的三个参数:
packageId:插件资源id,避免资源id冲突
targetHost:宿主路径,可以使相对路径也可以是绝对路径
applyHostMapping:表示插件是否开启apply mapping功能
第五步:
在宿主中新建一个Application继承自Application,并在其中重写attachBaseContext方法,在方法里初始化插件
PluginManager.getInstance(base).init();
一定要注意要在宿主的清单文件中声明自己重写的Application。我就是忘了这件事发现死活成功不了:(
第六步:
private void loadPlugin(Context base) { PluginManager pluginManager = PluginManager.getInstance(base); File apk = new File(Environment.getExternalStorageDirectory(), "plugin.apk"); if (apk.exists()) { try { pluginManager.loadPlugin(apk); } catch (Exception e) { e.printStackTrace(); } } else { Toast.makeText(getApplicationContext(), "SDcard根目录未检测到plugin.apk插件", Toast.LENGTH_SHORT).show(); } }这个方法是用来加载插件,可以在合适的时候运行它,我是在MainActivity的onCreate方法中调用的。
注意插件的路径、名字一定要正确负责会导致宿主找不到插件导致崩溃。
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClassName("com.qujie.pluginapk", "com.qujie.pluginapk.Main2Activity"); startActivity(intent); } });
adb push appild/outputs/apk/pluginapk-release-unsigned.apk /sdcard/plugin.apk
注意第二条命令,其中的pluginapk-release-unsigned.apk是生成的插件名称,位置在插件工程中的build->outputs->apk下,plugin.apk是在宿主中定义好的名称,一定不能写错。
再来说说另一种方法:
(1).打包安装宿主工程,这个应该都会就不截图了。
(2).生成插件工程:
双击我标记的选项,等待构建成功就能在插件工程中的build->outputs->apk下找到构建成功的插件apk了,然后手动放到指定好的目录下,注意,插件的名称一定是在宿主中规定好的名称。
插件包均是Release包,不支持debug模式的插件包。
第九步:运行
运行成功,撒花。
以上就是简单的集成过程了,更高大上的操作就需要各位自己研究了。
友情提示:需要在插件工程下的androidTest下创建一个res文件夹,再在下面创建values文件夹,再创建一个string文件,里面随便写点东西,否则可能造成编译不通过,提示找不到R.txt。
参考文章:
http://www.jianshu.com/p/013510c19391 VirtualAPK插件框架介绍(一)----框架接入
http://www.jianshu.com/p/b78087d0d524 VirtualAPK插件框架简单使用
最后,奉上源码:
https://github.com/dzghxs/DidiPluginDemo
- 手把手教你集成滴滴的插件化框架virtualapk
- 滴滴开源Android插件化框架VirtualAPK原理分析
- 从源码看滴滴插件化框架VirtualApk
- VirtualAPK:滴滴 Android 插件化的实践之路
- VirtualAPK:滴滴 Android 插件化的实践之路
- VirtualAPK:滴滴 Android 插件化的实践之路
- VirtualAPK:滴滴 Android 插件化的实践之路
- 滴滴插件化方案 VirtualApk 源码解析
- 滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理
- 《Android 插件化框架VirtualAPK :(一)基本集成》
- 滴滴插件化VirtualAPK框架原理解析(二)之Service 管理
- android插件化框架-VirtualApk
- 插件化方案-比较滴滴VirtualApk和360DroidPlugin
- 良心博客滴滴开源框架VirtualAPK插件化介绍加教程加DEMO加投入项目
- Android插件框架VirtualAPK
- 滴滴插件VirtualApk学习一 编译
- 《Android 插件化框架VirtualAPK :(二)原理分析》
- 滴滴首个开源项目 VirtualAPK 加载耦合插件首选
- 图片加遮蔽层
- oj 图书管理(list)
- libpcap抓包程序
- 吃鸡数
- 目标检测--Single-Shot Refinement Neural Network for Object Detection
- 手把手教你集成滴滴的插件化框架virtualapk
- linux tail 命令动态显示日志信息
- test
- 数据字典配置
- C#时间辨析
- 新版本mysql数据库URL配置
- (转载)有关线程安全的探讨--final、static、单例、线程安全
- 文章继续阅读的思路:
- 分布式ID生成讨论