0xA*_*iHn 10 android dex android-d8 android-r8
随着android studio推出了两款新工具D8和R8.根据谷歌文档D8是一个dex工具,R8是一个progourd工具,但由于他们的解释两者都做了几乎相同的事情如下:
D8是一个将java字节代码转换为dex代码的dexer.
R8是一个java程序缩小和缩小工具,它将java字节代码转换为优化的dex代码.
它似乎都将java字节代码逐字转换为dex代码.那么,实际上他们在转换dex代码时是在内部做什么的?
小智 12
D8 dexer和R8收缩机
D8-> D8是一个将java字节代码转换为dex代码的dexer.
R8-> R8是一个java程序缩小和缩小工具,它将java字节代码转换为优化的dex代码.
Android开发人员知道dex编译是构建APK的关键步骤.这是将.class字节码转换为Android运行时(或Dalvik,旧版Android)的.dex字节码的过程.dex编译器主要在日常应用程序开发中工作,但它直接影响应用程序的构建时间,.dex文件大小和运行时性能.
R8项目使用chromium项目中的depot_tools来管理依赖项.安装depot_tools并将其添加到路径中,然后再继续.
R8项目使用Java 8语言功能,需要Java 8编译器和运行时系统.
支持真正的调试构建.无需在Android Manifest中更改debuggable的值.
增量构建将自动插入debuggable == true,而使用"export signed/unsigned application package"则不会.如果设置了debuggable = true,则发布版本将实际执行调试构建.
发布版本中的自动Proguard支持.只需要有一个proguard.config
default.properties中指向proguard配置文件的属性.
完全重写Visual Layout Editor.这是一项非常重要的工作.
将小部件移动到布局视图中,从一个布局视图移动到另一个布局视图,从一个布局文件移动到另一个
具有枚举/标志类型属性的上下文菜单.
Fre*_*ula 10
我认为这篇博文的介绍是回答这个问题的一个很好的资源:https : //jakewharton.com/r8-optimization-staticization
R8 是 D8 的一个版本,它也执行优化。它不是一个单独的工具或代码库,只是在更高级模式下运行的同一个工具。D8 首先将 Java 字节码解析为它自己的中间表示 (IR),然后写出 Dalvik 字节码,而 R8 在写出之前在 IR 上添加了优化传递。
D8 单独处理每个 Java 类文件,而不查看整个程序。这使得到 DEX 的转换速度更快,因为类可以并行处理,并且在开发过程中,当类的代码被修改时,它允许快速重新编译。
另一方面,R8(如 ProGuard)读取整个应用程序并进行更改和优化(例如内联),这需要了解整个类层次结构。例如,R8 将删除未使用的类和方法(“tree shake”)并重命名类、方法和字段(应用程序的入口点除外)。
在Android Studio 3.1中,D8已经取代DX成为将Java类文件转换为DEX的工具,但R8尚未启用。
| 归档时间: |
|
| 查看次数: |
8113 次 |
| 最近记录: |