didi VirtualApk 框架的使用
didi VirtualApk 框架的使用
今年估计是最闲的过年了,呆着无聊,也是对自己的一种充实吧,使用一下didi的VirtualApk ,以前也使用过插件的,但是没有*这个好用。在此,立个flag,每个月至少写俩篇博客,总结一些东西,学习一些知识。
为什么学习使用virtual apk,而不是其他插件框架,主要原因有:
- 1 功能完备,简单集成就能使用
- 2 侵入性低
- 3 四大组件均不需要在宿主manifest中预注册,每个组件都有完整的生命周期
- 4 优秀的兼容性
VirtualAPK和主流的插件化框架对比
废话不多说,开始集成使用
一、项目引用VirtualAPK依赖
1、 在项目的build.gradle中添加依赖
2、在宿主的 build.gradle中添加依赖,注意我们这里是宿主
3、在插件的build.gradle中添加依赖,注意这里是插件
到此,VirtualApk框架的依赖已经结束,是不是很简单,看起来是的。
好了,我们继续。
二、在宿主中初始化插件并使用
1、自定义application并初始化
ps:记得在manifest.xml中配置自己的application
2、由于我这里是把插件apk放在sdcard根目录下,所以需要权限,而且我的手机是android 9.0,所以还需要动态请求权限
3、加载插件
4、在插件的build.gradle中添加宿主是哪个
5、给宿主和插件添加相同的签名
三、打包宿主和插件,这里需要注意,插件必须是签名的,不然不能用,所以最好是给宿主和插件都使用相同的签名。
1、打包宿主
2、打包插件
3、安装宿主,把插件apk放到sdcard目录
4、运行宿主
遇到问题:
1:
解决方案:我是新建的module,需要在module下添加grdle.properties,然后添加android.useDexArchive=false
2:
解决方案:
gradle插件版本过高,VirtualApk的构建原理与gradle插件强依赖,建议使用官方demo工程使用的gradle插件版本,这里降至3.0.0 就ok了
最后附上项目的完整build.gradle
项目build.gradle
// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {repositories {google()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:3.0.0'classpath 'com.didi.virtualapk:gradle:0.9.8.6'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}allprojects {repositories {google()jcenter()}
}task clean(type: Delete) {delete rootProject.buildDir
}
宿主build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.didi.virtualapk.host' //这个是宿主中添加的android {compileSdkVersion 28defaultConfig {applicationId "com.vanish.interview"minSdkVersion 19targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}signingConfigs{release {keyAlias 'vanish'keyPassword 'android'storeFile file('D:/StudioProject/keyStore/sign.jks')storePassword 'android'}}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release}}
}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:28.0.0'implementation 'com.android.support.constraint:constraint-layout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'//virtualApkimplementation 'com.didi.virtualapk:core:0.9.8'//Andpermissionimplementation 'com.yanzhenjie:permission:2.0.0-rc4'
}
插件build.gradle
apply plugin: 'com.android.application'
apply plugin: 'com.didi.virtualapk.plugin'//注意这个是plugin结尾,宿主是以host结尾的android {compileSdkVersion 28signingConfigs{release {keyAlias 'vanish'keyPassword 'android'storeFile file('D:/StudioProject/keyStore/sign.jks')storePassword 'android'}}defaultConfig {applicationId "com.vanish.interview2"minSdkVersion 19targetSdkVersion 28versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'signingConfig signingConfigs.release}}}dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.android.support:appcompat-v7:28.0.0'implementation 'com.android.support.constraint:constraint-layout:1.1.3'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:1.0.2'androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'//virtualApkimplementation 'com.didi.virtualapk:core:0.9.8'
}virtualApk{//插件资源表中的packageId,需要确保不同插件有不同的packageId.packageId = 0x6ftargetHost = '../../MyInterview/app'//宿主应用的app模块路径//默认为true,如果插件有引用宿主的类,那么这个选项可以使得插件和宿主保持混淆一致applyHostMapping = true
}
demo下载链接:
添加链接描述
didi VirtualApk 框架的使用相关推荐
- VirtualAPK 踩坑实录
VirtualAPK 官网 https://github.com/didi/VirtualAPK 框架接入,四大组件原理分析,资源原理分析,在 wiki 中的第三方技术文章里都有很详细的介绍 Virt ...
- Android开源框架源码鉴赏:VirtualAPK
文章目录 一 VirtualAPK的初始化流程 二 VirtualAPK的的加载流程 三 VirtualAPK启动组件的流程 3.1 Activity 3.2 Service 3.3 Broadcas ...
- 滴滴开源Android插件化框架VirtualAPK原理分析
概述 滴滴出行公司的首个对外开源项目 - VirtualAPK.地址:github.com/didi/Virtua- 滴滴自行研发了这款插件化框架,功能全面.兼容性好,还能够适用于有耦合的业务插件,这 ...
- 良心博客滴滴开源框架VirtualAPK插件化介绍加教程加DEMO加投入项目
公司要实现一个这样的效果,类似于qq游戏大厅,我们可以下载斗地主,可以下载保皇,下载完成直接就可以玩,不需要安装,也就是说我们的这一款软件里面可以装载多款软件. 公司项目是一套系统管理软件,它里面包括 ...
- 【Android 插件化】插件化框架整理
文章目录 一.Altas ( 阿里巴巴 ) 二.DynamicAPK ( 携程 ) 三.VirtualApp ( 罗迪 ) 四.DroidPlugin ( 360 ) 五.dynamic-load-a ...
- VirtualAPK:滴滴 Android 插件化的实践之路
一.前言 在 Android 插件化技术日新月异的今天,开发并落地一款插件化框架到底是简单还是困难,这个问题不同人会有不同的答案.但是我相信,完成一个插件化框架的 Demo 并不是多难的事儿,然而要开 ...
- 滴滴开源Android插件框架
登录 | 注册 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没有新通知 返回通知列表 下一条 上一条 分享资讯传PPT/文档提问题写博客传资源创建项目创建代码片 wz ...
- 安卓 SDK 开发使用 VirtualAPK 实现插件化
1. 背景 因为公司现在要在广告 SDK 开发中实现一部分代码的更新,或者是新增部分功能,因此需要从后台通过网络下载然后通过插件化的方式进行加载展示.本来想的是自己实现,但是遇到了一些问题,所以直接采 ...
- 优秀的Android开源框架(持续更新)
开源是软件发展的趋势,越来越多的人投入到开源世界中去.我们可以从开源世界中获得很多有益的东西,本着不重复造轮子的精神,我们应该充分利用这些开源项目的成果.本文会持续更新涌现出来的优秀开源框架. UI ...
最新文章
- bzoj1688[Usaco2005 Open]Disease Manangement 疾病管理*
- JAVA实现 springMVC方式的微信接入、实现消息自动回复
- c# 无法打开计算机.上的 服务,c# - C#Winform应用程序无法在其他计算机上运行(神秘的启动时) - 堆栈内存溢出...
- Android关于SQLiteOpenHelper的封装
- Spring(十八):Spring AOP(二):通知(前置、后置、返回、异常、环绕)
- 谁拿了最多奖学金pascal程序
- mybatis集成 Invalid bound statement (not found)
- mysql出现ERROR 1054 (42S22): Unknown column 'password' in 'field list'如何解决?
- oracle为空替换为0_详解Oracle如何用Translate来统计字符出现的次数
- vlookup使用步骤_使用vlookup出错,看看原因多为这几个!快来看看!
- 2016CCCC天梯--多项式A除以B
- Installation of Requests
- 块层介绍 第二篇: request层
- IDEA2019开发WebService实例
- PHP生成一寸照片代码,用PS制作1寸证件照方法介绍
- 知乎周刊之程序人生概要
- Compose_23--动画之animateContentSize和Crossfade
- 《Adaptive Unimodal Cost Volume Filtering for Deep Stereo Matching》
- qq空间留言板删除 php,qq批量删除空间留言及说说
- apollo决策规划学习--慢速障碍物超车
热门文章
- zoj 3716 Ribbon Gymnastics【神奇的计算几何】
- 【CentOS 7.0】配置免费阿里云Docker镜像加速器
- 云计算或成时代新拐点?从哪些点可以看出?
- swift 实现iOS手势密码、指纹密码、faceID
- 在前端页面中调用本机的摄像头
- 脚手架的含义,什么是脚手架?什么才能叫做脚手架!(博主自己观点)
- 解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10
- 电脑版android版iphone版ipad版,[下载]微软发布iPad版Office iPhone版Android版彻底免费...
- 2020年中国5G基站建设行业报告.pdf (附下载)
- python商品打折问题公式_python障碍式期权定价公式