脱糖

脱糖含义:lamdal表达式在打包构建期间被转换成内部类的形式,这个过程叫脱糖(java编译时不会这样)。

为了让我们能使用上Java 8的特性,Google使用Transformation来增加了一步编译过程 →脱糖(desugaring)。

脱糖实现的大概发展历程如下:

脱糖与DX、D8、R8_java

D8

D8作用:脱糖 + 将.class字节码转换成dex

R8

整合了Proguard和D8 ,减少了一个编译步骤,同时保留了字节码优化能力

两者关系

1、ProGuard→ 压缩、优化和混淆Java字节码文件的免费工具,开源仓库地址:proguard
​​​ https://github.com/Guardsquare/proguard​

2、R8→ ProGuard的替代工具,支持现有ProGuard规则,更快更强,AGP 3.4.0或更高版本,默认使用R8混淆编译器。