👩💻 Join our community of thousands of amazing developers!
一般 assets 出现大量重复的情况是不多见的,只有多业务线的大体量 APP 才有可能遇到。然而非常不幸的是,我们就遇到了这样的问题,虽然对包体积的影响不是很明显(也就几百 KB),但是几百 KB 对于做包体积优化的同学来说,蚊子肉也是肉啊。 去重的关键在于拦截对 assets 的访问,没错,就是 AssetManager ,Booster 的方案就是通过 Transformer 替换 AssetManager 的方法调用指令为 Booster 注入的 ShadowAssetManager ,不啰嗦了,先上代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 public final class ShadowAssetManager { private static final Map<String, String> DUPLICATED_ASSETS = new ArrayMap <String, String>(); public static InputStream open ( fin...