Giter Site home page Giter Site logo

关于插件uuid的设计问题 about shadow HOT 9 CLOSED

spaceLB avatar spaceLB commented on August 18, 2024
关于插件uuid的设计问题

from shadow.

Comments (9)

shifujun avatar shifujun commented on August 18, 2024

uuid是版本号。一组不同partkey的插件可以协同工作,就可以分配相同的uuid。插件启动在哪个进程,是由PPS和ContainerActivity决定的。这两件事不相关。

manager的代码是动态的,就可以动态的决定从哪一个PPS
启动插件。

from shadow.

spaceLB avatar spaceLB commented on August 18, 2024

en, 我再说详细一点吧,我两个partkey不同,uuid也不同,然后在manager里面给他们分配同一个pps来加载。由于pps里面对之前加载pluginLoader时的uuid做了缓存,所以后面用partkey来加载插件时,第一个先加载的插件是可以的,但加载第二个插件时,由于pps里缓存了第一个插件的uuid,就直接使用第一个插件的uuid去处理了,造成第二个插件找不到。

from shadow.

spaceLB avatar spaceLB commented on August 18, 2024

#929,之前有人提过这个问题,当时的回复确实是同一个进程只能启动相同uuid的插件,想问下这么设计的初衷是什么?如果改成同一个进程启动不同uuid的插件有没有什么问题?

from shadow.

shifujun avatar shifujun commented on August 18, 2024

uuid是版本号。关于版本控制都是些通用的设计,没什么特殊的。混合加载不同版本的组件会引起什么问题可以参考一些动态库兼容性方面的资料,都是差不多的。

from shadow.

spaceLB avatar spaceLB commented on August 18, 2024

我们的理解可能有点偏差,应该不涉及到版本控制的问题。比如这里有两个插件,我们没办法控制他们uuid必须一样,他们有各自的版本,但理论上还是应该可以把他们分配到同一个进程。我看现在的设计里同一个进程中的插件uuid必须要统一,为什么不同的插件uuid要一致呢?

from shadow.

shifujun avatar shifujun commented on August 18, 2024

你没有提供具体的场景,也许你的插件非常简单,没有版本控制也能正常工作。比如一个插件是计算器,一个插件是相册,那它们就没什么关系嘛。版本不一致也不会显露出什么问题。但这种情况下你也可以把它们版本号设为相同的,也不影响什么。

你要还认为这跟版本控制没关系,就关了issue吧。这个uuid就是版本号。没啥好讨论的了。

from shadow.

spaceLB avatar spaceLB commented on August 18, 2024

你举的这个例子就可以啊,按照你的解释,计算器和相册的版本号每次都要设置一样,否则就没法在同一个进程。但实际开发中,计算器和相册的版本号不可能一直一样吧,比如计算器出问题了,我升级了一个版本,相册没动,那计算器新版本插件下发之后就不能和老版本的相册在同一进程工作了。不知道这个场景,你们怎么处理呢?

from shadow.

shifujun avatar shifujun commented on August 18, 2024

版本号可以一直一样,这个uuid又不是编译到插件里的。它只是安装插件时的配置文件内容。怎么组织插件包,怎么管理怎么下发都可以在CI/CD环节处理。

如果相册没有更新,又是完全兼容的,我们给新的uuid的相册分配和旧的uuid的相册同一个相册apk文件就行了。又或者插件都很小,就当相册也更新了,也没什么关系,可以简化逻辑,也是一种选择。

对于运行时的插件系统来说,要有这个uuid来阻止混乱的版本组合一起加载。这是一种基本保障。

你也可以把uuid去掉,也可以开发更复杂的版本号兼容逻辑。自己评估好成本和风险就好了。

from shadow.

spaceLB avatar spaceLB commented on August 18, 2024

了解,谢谢

from shadow.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.