CrazyDailyQuestion icon indicating copy to clipboard operation
CrazyDailyQuestion copied to clipboard

B站中台: R8 和 prograd 有啥区别

Open MicroKibaco opened this issue 4 years ago • 1 comments

MicroKibaco avatar Nov 21 '20 04:11 MicroKibaco

D8

image

R8

image

比较 ProGuard 和 R8 优化功能

image

构建时的性能

image

  • 保留一个 class r8 仅仅保留 静态初始化 cinit 的方法,而 ProGuard 同步保留他们的无参构造方法。

  • 一个虚方法被保留 ProGuard 将保留整条继承数上的该方法。 r8 的仅仅保留该方法。 只在该方法调用 super 才会保留父类的虚方法。

  • 一个类被 keep 。r8 会同步 keep 它的父类以及他们的接口。但是也只是仅仅 keep 住他们接口本身。 ProGuard 是 keep 他的父类。而接口并不会主动 keep 。 接口的 keep 是在接口方法被调用的时候。

MicroKibaco avatar Nov 21 '20 04:11 MicroKibaco