virtualapk接入 注意事项

1.按照 https://github.com/didi/VirtualAPK  说明进行接入  注意在插件 app build下载 引入 compile'com.didi.virtualapk:core:0.9.0'   由于官方没有说明 否则会出现问题 


virtualapk接入 注意事项_第1张图片

2.接入可参考 http://www.jianshu.com/p/013510c19391  关键点是下面常见错误解法   

宿主和插件使用的sdk必须一致 否则 跳转插件的时候出现错误   


3.插件与宿主中的资源命名(layout drawable) 不要重名 否则会出问题

4.切记按照官方的步骤来 要不坑太多 里面的 限制也比较多 支持的还不否广



源码分析 :

application初始化:

PluginManager.getInstance(base).init();


virtualapk接入 注意事项_第2张图片


virtualapk接入 注意事项_第3张图片


virtualapk接入 注意事项_第4张图片


virtualapk接入 注意事项_第5张图片


virtualapk接入 注意事项_第6张图片

/./此处修改应用的classloader    优先了解classloader加载机制  (先查找自身classloader 是否有缓存  没有的话 先parent  classloader加载类 找到加载内存 缓存  找不到的话在自身查找  原则---自上而下 查找)

classloader --- pathList -- dexElements

1.先利用dexclassloder加载插件的apk,

2.利用反射加载插件中的 dexelements 

3.加载宿主中的dexelements 

4.将两个dexelments合并 利用hook basedexclassloader中的 dexelements 这样就能加载到插件中的class了 


virtualapk接入 注意事项_第7张图片

//这面这个方法 不知道何时用

virtualapk接入 注意事项_第8张图片


virtualapk接入 注意事项_第9张图片


virtualapk接入 注意事项_第10张图片

broadcastReciver采用动态注册 



virtualapk接入 注意事项_第11张图片


virtualapk接入 注意事项_第12张图片

启动activity追踪源码   进入到vaubstrunebtation


virtualapk接入 注意事项_第13张图片


virtualapk接入 注意事项_第14张图片

//获取代理activity

virtualapk接入 注意事项_第15张图片


virtualapk接入 注意事项_第16张图片


virtualapk接入 注意事项_第17张图片


virtualapk接入 注意事项_第18张图片

资源查找过程:

https://www.notion.so/VirtualAPK-1fce1a910c424937acde9528d2acd537

//老罗的资源方面源码解析

http://blog.csdn.net/luoshengyang/article/details/8791064

http://blog.csdn.net/luoshengyang/article/details/8744683

你可能感兴趣的:(virtualapk接入 注意事项)