virtualapk接入 注意事项

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


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

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


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

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



源码分析 :

application初始化:

PluginManager.getInstance(base).init();






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

classloader --- pathList -- dexElements

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

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

3.加载宿主中的dexelements 

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


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



broadcastReciver采用动态注册 




启动activity追踪源码   进入到vaubstrunebtation



//获取代理activity




资源查找过程:

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容