Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何实现一个进程加载一个插件? #1364

Open
MaTengFei1990 opened this issue Jan 7, 2025 · 4 comments
Open

如何实现一个进程加载一个插件? #1364

MaTengFei1990 opened this issue Jan 7, 2025 · 4 comments

Comments

@MaTengFei1990
Copy link

大佬,shadow 如何实现动态创建进程并在进程中加载插件呢?跪求方法和思路

@shifujun
Copy link
Collaborator

shifujun commented Jan 7, 2025

不知道你说的动态创建进程是指什么是动态的。

唯一可能的用法就是宿主可以多注册一些插件进程。每个插件进程绑定一个PPS。这些是要随宿主安装确定不能改的。之后插件和PPS的配对关系是可以动态下发的。activity壳子也是可以不固定进程的。所以如果宿主注册了足够多的PPS,那类似的需求是能实现的。

@mutong05090501
Copy link

不知道你说的动态创建进程是指什么是动态的。

唯一可能的用法就是宿主可以多注册一些插件进程。每个插件进程绑定一个PPS。这些是要随宿主安装确定不能改的。之后插件和PPS的配对关系是可以动态下发的。activity壳子也是可以不固定进程的。所以如果宿主注册了足够多的PPS,那类似的需求是能实现的。

大佬,请教一个目前遇到的问题:每个插件进程需要分别绑定一个PPS,但是FastPluginManager.java 的loadPluginLoaderAndRuntime(String uuid, String partKey)方法中,对mPpsController 进行了非空判断,第二个插件启动时,由于mPpsController 已有值,不会再去绑定第二个PPS,导致两个插件会在一个进程中。
这个问题解决的思路是什么呢?

@shifujun
Copy link
Collaborator

shifujun commented Jan 7, 2025

但是FastPluginManager.java 的loadPluginLoaderAndRuntime(String uuid, String partKey)方法中,对mPpsController 进行了非空判断,第二个插件启动时,由于mPpsController 已有值,不会再去绑定第二个PPS,导致两个插件会在一个进程中。

FastPluginManager是个sample的代码啊。如果看懂了,还不能自己写出来管理多个PpsController的manager吗?

@mutong05090501
Copy link

但是FastPluginManager.java 的loadPluginLoaderAndRuntime(String uuid, String partKey)方法中,对mPpsController 进行了非空判断,第二个插件启动时,由于mPpsController 已有值,不会再去绑定第二个PPS,导致两个插件会在一个进程中。

FastPluginManager是个sample的代码啊。如果看懂了,还不能自己写出来管理多个PpsController的manager吗?

大佬,了解了,因为还没有理解透,以为 FastPluginManager 这个类是不能去改动的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants