Tencent / Shadow

零反射全动态Android插件框架
BSD 3-Clause "New" or "Revised" License
7.36k stars 1.29k forks source link

宿主和插件之间的资源共享 #1303

Closed rockstore closed 2 months ago

rockstore commented 2 months ago

看了 CreateResourceBloc#create 方法逻辑,无论是高于还是不高于 O_MR1 版本,插件内获取资源的时候,会尝试从宿主获取,然后在从插件获取。尝试了下在插件中通过 getResources().getIdentifier 这种方式获取宿主资源,可以获取成功,想了解下这种方式是否建议使用?还有目前宿主有办法获取插件内部的资源吗?

shifujun commented 2 months ago

宿主和插件版本是多对多的设计,资源ID是会变的,所以不要用资源id相互获取资源。

固定资源id的情况下,这些问题应该自己都能解决。

代码中先查找宿主资源的逻辑是为了应对系统来根据宿主的信息问插件要指定资源,比如logo之类的。不是供业务使用的。我觉得日志里应该有记录这个理由。

建议宿主和插件约定Java接口交换资源。

rockstore commented 2 months ago

可能是我描述的问题,resId = getResources().getIdentifier(资源名, 类型, 宿主包名),这种方式获取资源 id,应该不会有问题吧

rockstore commented 2 months ago

看了代码,明白插件通过白名单的方式可以访问宿主的资源,但是不了解宿主如何定义接口访问插件中的资源?

rockstore commented 2 months ago

依赖注入