話不多說驱负,先上我的 Demo 地址:https://github.com/yangxiaoge/VirtualAPKDemo
本文轉(zhuǎn)載:原文鏈接https://blog.csdn.net/lovelixue/article/details/81141213
文中圖片無法顯示,可以直接看原文
最近都在搞插件框架采缚,為項目搭建用,之前集成了下阿里的 atlas尘执,現(xiàn)在送上一篇滴滴的 virtualapk醒陆,就個人而言饶碘,滴滴的集成過程比阿里簡單些笨腥,有興趣的可以看看我 atlas 的:https://blog.csdn.net/lovelixue/article/details/81141213
廢話不多說拓哺,上過程
1. 環(huán)境配置,很重要脖母,官方有規(guī)定 gradle 使用哪個之類的士鸥,我用的不同,我就基于我的來寫
1.1 新建一個工程谆级,根目錄的 build.gradle 里面
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'com.didi.virtualapk:gradle:0.9.8.4'
[圖片上傳失敗...(image-4eb668-1532574880188)]
根目錄 就配置這兩個
1.2 在 app(宿主)目錄下的 build.gradle 文件下添加
apply plugin: 'com.didi.virtualapk.host'
在 dependencies 里面添加
implementation 'com.didi.virtualapk:core:0.9.6'
1.3 重點來了烤礁,通過 file,new module 的形式新建一個 module肥照,然后我命名為 plugindemo鸽凶,然后在 nodule.gradle 里面添加
implementation 'com.didi.virtualapk:core:0.9.6'
接著在末端添加
apply plugin: 'com.didi.virtualapk.plugin'
virtualApk {
// 插件資源表中的packageId,需要確保不同插件有不同的packageId.
packageId = 0x6f // The package id of Resources.
// 宿主工程application模塊的路徑建峭,插件的構(gòu)建需要依賴這個路徑
targetHost='../app' // The path of application module in host project.
//默認(rèn)為true,如果插件有引用宿主的類决摧,那么這個選項可以使得插件和宿主保持混淆一致
applyHostMapping = true // [Optional] Default value is true.
}
截圖
[圖片上傳失敗...(image-1cb4d5-1532574761971)]
基本 環(huán)境就到此為止了亿蒸,接下來代碼部分
- 代碼添加并驗證
在 app 的 mainactivity 里面添加兩個按鈕,一個是跳轉(zhuǎn)到 module 去的掌桩,一個是加載插件的
public void loadPlugin() {
PluginManager pluginManager = PluginManager.getInstance(this);
//此處是當(dāng)查看插件apk是否存在,如果存在就去加載(比如修改線上的bug,把插件apk下載到sdcard的根目錄下取名為plugin-release.apk)
File apk = new File(Environment.getExternalStorageDirectory(), "plugin-release.apk");
if (apk.exists()) {
try {
pluginManager.loadPlugin(apk);
Toast.makeText(this, "插件加載成功", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
e.printStackTrace();
Toast.makeText(this, "插件加載異常边锁!", Toast.LENGTH_SHORT).show();
}
}
}
截圖
[圖片上傳失敗...(image-a55765-1532574645092)]
?
這個時候跳轉(zhuǎn)是不行的,接下來就需要加載插件了 波岛,首先需要生成插件 apk
官方文檔是通過命令
gradle clean assemblePlugin
來構(gòu)建插件
如果不想這樣茅坛,也可以通過直接 gradle 的來,具體如下
[圖片上傳失敗...(image-43cdaa-1532574645092)]
?
這樣 就生成插件 apk 了则拷,同時官方文檔介紹了下這個贡蓖,就是只能生成 release 版本的,插件包位于 build 目錄下
[圖片上傳失敗...(image-93c746-1532574645092)]
?
到這里 就可以結(jié)束驗證了煌茬,點擊加載插件斥铺,然后再點擊跳轉(zhuǎn),你會發(fā)現(xiàn)可以跳轉(zhuǎn)了坛善,如果如果有幫助可以幫我點個贊或者 githup 上面 star 一下晾蜘,謝謝,如果有問題眠屎,可以下面評論回復(fù)剔交,一起學(xué)習(xí)探討。下面貼上注意點
1. 集成環(huán)境一定要配置好
2. 生成的插件包和加載的時候名字一定要一樣
3. 注意 SD 卡的權(quán)限
貼上相關(guān)參考文檔和我的 githup 代碼
https://github.com/didi/VirtualAPK
githup:https://github.com/sdgSnow/VirtualAPK
希望對大家有幫助改衩。