Android studio 3.3改用新的代码压缩器R8,大幅提升代码压缩速度

Android studio 3.3已经进入Beta2阶段,比起3.2版本除了添加了分析內存配置关注选项外,Android App Bundles也开始支持Instant Apps,构建系统也做了更新,默认使用SDK构建工具28.0.3,另外,还换掉程序代码压缩器Proguard改使用R8。

Google持续在降低Android应用程序容量的工作上耕耘,从Android studio 3.2开始支持Android新的发布格式Android App Bundle,让用户安装应用程序,只需要下载设备需要的部分,以大幅减少应用程序容量。而现在Google更让R8成为Android studio中的默认代码压缩器。

代码压缩可以移除未使用的代码和资源,以减少APK的容量,让实际代码占用更少的空间,Google提到,这是他们投放资源在程序代码缩减上的原因。新的代码压缩器R8能够一步到位进行代码压缩、脱糖(Desugaring)以及Dexing,与之前的代码压缩器Proguard相比,不只能降低输出的大小,执行速度也更快了。

开发者现在可以在Android Studio 3.3 Beta中,让R8搭配Proguard规则使用,不过,也有R8与Proguard不兼容的完整模式,而这将激活更多的优化功能,能更进一步加速执行速度,减少更多应用程序容量。

而为了让Android studio进行分析时,改善应用程序性能,开发者现在可以提取即时內存分配关注模式,分为完整、抽样以及关闭三种模式,完整模式会捕捉所有对象內存分配,因此当开发者的应用程序使用了许多对象,在分析时会历经严重的性能问题。而开发者可以选择抽样模式,以固定时间抽样捕捉对象的內存分配,而这将成为目前的默认选项,也是在分析时,对应用程序性能影响较小的选项。当然开发者也可以关闭內存配置,而这个选项将在进行CPU纪录时自动激活。

在Android Studio 3. 2中开始支持的Android App Bundles,在3.3中完整支持Instant Apps,让用户免安装就能直接执行应用程序,也就是说开发者现在可以在单一Android Studio项目,同时构建安装应用程序以及Instant Apps,并将他们包在同一个App Bundles中。

Google也更新了Android studio 3.3的构建系统,新的SDK构建工具默认更新到了28.0.3。当使用注解处理器时,提升了增量Java编译的性能,在包
含Kotlin代码的项目中,默认激活增量Java编译,而在只有Java的项目,当注释处理器支持增量注释处理,则默认激活Java编译,但当一个以上注释处理器不支持,则不会激活增量Java编译。

另外,也改进了类别路径的相依性同步,Android studio在解析Runtime和编译时类别路径的相依关系时,Android Gradle插件程序会尝试修复多重类别路径中的依赖关系,以解决下游版本的冲突。Android Gradle现在也使用新的任务配置API,避免不执行的任务,在Gradle配置阶段进行创建和配置产生的成本,这使得插件程序在构建每个模块变体时,可以减少工作量。