Shadow icon indicating copy to clipboard operation
Shadow copied to clipboard

CreateResourceBloc资源冲突的问题

Open jiangwei18 opened this issue 3 years ago • 1 comments

大佬你好,想向你请教一个源码的问题,就是CreateResourceBloc里我看你有写“如果把宿主的apk路径放到sharedLibraryFiles中,我们假设宿主资源id分区是0x7f,则加载后会变为一个随机的分区,如0x30。因此放入sharedLibraryFiles中的apk的资源id分区都需要改为0x80或更大的值”

这段话没太明白,是指只有宿主的apk路径放到sharedLibraryFiles会随机分区?还是宿主和插件放进去都会随机分区?如果是都会随机分区,那岂不是给插件设置的0x7e也就失效了??????这个不是很清楚,能帮忙解释下吗 谢谢!

jiangwei18 avatar Aug 12 '22 17:08 jiangwei18

资源id分区这块代码在新旧版本系统上一直在变化。有一段分区(0x7f以下)是aapt2规定的系统保留区间,但是低版本系统又没有这个设定。正常来说应该设置成0x80或者更大,但是低版本系统对于这么大的值又有溢出的bug。所以就低版本用7e,高版本用80就行了。

然后随机分配的问题应该就是系统发现两个apk的分区是一样的,会冲突,所以就随机分配了新的分区。但这没道理嘛,随机值谁也用不了。所以我也没深究,知道必须不一样就行了。

这个问题建议你修改不同的资源id分区,在各种不同的api模拟器上调试,才能搞明白。我也是反复测试了很多场景,你看这块代码我也fix了好几次。

shifujun avatar Aug 13 '22 10:08 shifujun