Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

如果想要卸载插件,有什么方法吗?

Open darrenfantasy opened this issue 2 years ago • 6 comments

未找到卸载插件的方法,如google 的 android app bundle,有提供uninstall方法,想了解下你们这边这个插件化方案,有什么卸载插件的办法不?

darrenfantasy avatar May 24 '22 09:05 darrenfantasy

参考下这个看看?https://github.com/shifujun/Shadow/commit/b2f8c2cdf31e34c95ff4947deaacb09d4c34228b

shifujun avatar May 24 '22 10:05 shifujun

这个目前还没合入master啊,验证OK的么?什么时候能合master呢?

darrenfantasy avatar May 26 '22 03:05 darrenfantasy

https://github.com/Tencent/Shadow/blob/150c24e69d537ae5479e9450669c3679a27fc631/projects/sdk/core/manager/src/main/java/com/tencent/shadow/core/manager/BasePluginManager.java#L326-L332

这个deleteInstalledPlugin是早就合入了的。前面贴的没合入的只是测试代码。

shifujun avatar May 26 '22 03:05 shifujun

1.我先通过getInstalledPlugins方法,获取已经install的插件数量,返回为1,获取到插件的uuid,调用deleteInstalledPlugin方法前,这时候deleteInstalledPlugin方法返回false。 2.我再重新调用getInstalledPlugins方法,返回数量为0了(说明上一次deleteInstallPlugin 应该是成功了吧?)

darrenfantasy avatar May 26 '22 07:05 darrenfantasy

应该如何判断插件卸载是否成功呢?(这里的卸载(deleteInstalledPlugin),是指把已经加载的类移除了还是具体做了什么事情呢?)

darrenfantasy avatar May 26 '22 07:05 darrenfantasy

deleteInstalledPlugin完全是持久化相关的卸载操作。你可以看一下代码,它就是删除文件和删除数据库的行。返回值是true就是成功了。没有IO异常的话一般不会失败的。

Shadow没有内存中卸载已加载插件的能力。Android系统没有相关的底层接口支持反加载class或so。

shifujun avatar May 26 '22 08:05 shifujun