Androidstudio3.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配置阶段进行创建和配置产生的成本,这使得插件在建构每个模组变体时,可以减少工作量。
