Closed DiamondProx closed 1 year ago
对于so库来说不存在插件机制这种事。shadow对此完全没有干预。所以你遇到的异常看起来没什么奇怪的。
那这个是没办法解决吗,主要是非6.0的手机没这个问题。插件改成主进程有很多好处,主app跟插件或多或少也有一些公用的so
不是没办法,而是与插件技术没什么关系。普通的app也会有这个问题。
那可以把插件的so去掉,插件内load主工程的so吗?
本来不就可以随意load so么?这跟插件技术没关系。建议你先看看so加载原理相关的文献吧。
我大概看了一下 loadso 也是跟classloader有关系的, Runtime.getRuntime().loadLibrary0(VMStack.getCallingClassLoader(), libname); 所以插件内应该用不了宿主的so吧
在Android6.0上测试并没有发现你说的这个问题,插件和宿主在同一进程使用同名的so,同名的函数不同实现,均能返回正却的结果,他们是由不同的classloader加载的,是隔离的
@zhuqichao 你好,是用我的demo运行的吗?运行那个demo代码在几台6的系统都会崩溃,mumu模拟器也是6的系统,我会崩溃
@zhuqichao 你好,是用我的demo运行的吗?运行那个demo代码在几台6的系统都会崩溃,mumu模拟器也是6的系统,我会崩溃
自己的demo运行的
@shifujun 你好,
能帮忙看一个问题吗?在6.0手机插件运行在主工程会报JNI冲突,当插件跟主工程都存在类似或者相同的jni库就会有问题
Debug工程 https://github.com/Tencent/Shadow/commit/931efe146a79e9e273ca7e61372f2b633241ca34
直接打开sample-plugin-app2
非6.0手机没问题, 如果改成非主进程也没问题。