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

宿主apk 和 插件apk 资源id冲突 #12

Open
hyandroid opened this issue Nov 20, 2020 · 11 comments
Open

宿主apk 和 插件apk 资源id冲突 #12

hyandroid opened this issue Nov 20, 2020 · 11 comments

Comments

@hyandroid
Copy link

你好,请教一个问题,宿主apk 和 插件apk是单独打包的,这样会导致资源id冲突。
现在插件apk中有两种引用color资源的方式:
1.xml引用: android:background="@color/color_plugin"
2.代码设置:findViewById(R.id.myView).setBackgroundColor(resources!!.getColor(R.color.color_plugin))

第二种方式没问题,取得是插件中的色值,而第一种方式会取到宿主中对应的R文件索引的色值,这个是什么原因呢?

@Omooo
Copy link

Omooo commented Nov 20, 2020

第二种没问题,应该是 resources 是你构造插件的 DexClassLoader 然后创建的 Resources 吧,所以就没问题的。

@hyandroid
Copy link
Author

对的 ,就用你的demo做的测试

@Omooo
Copy link

Omooo commented Nov 20, 2020

这就夸张了哈哈哈为啥不提在我的 ISSUE 下?哭辽...

@hyandroid
Copy link
Author

(⊙o⊙)… 这个不是你的issue吗

@Omooo
Copy link

Omooo commented Nov 20, 2020

说一哈本质,第一种 xml 引用的方式,其实是从打包的 apk 里面的 resources.arsc 里面去找 id 为 color_plugin 的资源,所以你可以打包后看一下里面到底是那个资源。第二种是看你的 getResources 是哪个 Resources,如果是插件的,那就是插件的 Resources。

@Omooo
Copy link

Omooo commented Nov 20, 2020

哈哈应该你看错了,这不是我的仓库,我也有一个插件化的 Demo:https://github.com/Omooo/VirtualApplication

@hyandroid
Copy link
Author

Lark20201120101154
Lark20201120101326
如图插件的plugin_color的id索引0x7f04002a取到了宿主中的
0x7f04002a | dim_foreground_disabled_material_light | argb8(0x80323232) 色值, 显示的灰色,而不是插件中color值

@hyandroid
Copy link
Author

哈哈应该你看错了,这不是我的仓库,我也有一个插件化的 Demo:https://github.com/Omooo/VirtualApplication

不好意思,get了

@hyandroid
Copy link
Author

所以按照你所说的,我在插件apk中就应该取的是插件中的色值,可是却取到了宿主的色值,这我就很纳闷了。不知道啥原因、

@Omooo
Copy link

Omooo commented Nov 20, 2020

可以跑一下我的 Demo 看看,README 写的也比较详细。
如果还是有很大的疑问,看看包老师的《插件化指南》?
加油撒~

@hyandroid
Copy link
Author

ok 我跑下你的demo

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

2 participants