virtualapk接入 注意事项

2017-08-03  本文已影响59人  ping0505

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

2.接入可参考 http://www.jianshu.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

上一篇 下一篇

猜你喜欢

热点阅读