Android D8,下一代 dex 编译器

jopen 3年前
   <p>Google 在刚刚发布的 Android Studio 3.1 新版本中,将 D8 作为新版本开发工具默认的 Dex 编译器。那么什么是 D8 呢,D8 与之前的 Dex 打包器有何区别呢?</p>    <p>大家知道,安卓项目在打包生成 Apk 安装文件的过程中,最重要的一步便是将我们所写的 java 代码编译过成 <code>.class</code> 字节文件再打包转化成一个或多个 <code>.dex</code> 格式的代码压缩文件。这种 dex 文件便是 Android 虚拟机所能识别、解析并运行的程序。</p>    <p>Google 一直在致力于提升 Dex 文件的编译和运行优化工作,并开发出称之为 <strong>下一代 dex 编译器:D8</strong> 。其实早在 AS 3.0 Beta 版本中,Google 已经引入 D8 的测试使用。直到当前 3.1 新版本的发布,才正式将其作为默认 Dex 编译器。</p>    <p>根据官方介绍,新版 D8 Dex 编译器相比之前称之为 DX 的旧版编译器,在 dex 文件的编译和使用上,至少具备这么三个优势:</p>    <p>1,更快的编译速度;</p>    <p>2,更小的文件大小;</p>    <p>3,更优的运行性能。</p>    <p>这里有一份来自 Google 的官方测试数据,在 Dex 编译速度和文件大小上有所对比:</p>    <p><img alt="Android D8,下一代 dex 编译器" src="https://simg.open-open.com/show/d71626d2af0e2ac24ec770abc87fa210.png" /></p>    <p><img alt="Android D8,下一代 dex 编译器" src="https://simg.open-open.com/show/dc99cf68f3f84f6bd968466af8b4b81f.png" /></p>    <p>大家也可以亲自体验一下 D8 的效果。如果你使用的 Android Studio 还是 3.0 版本,可以在项目的 <code>gradle.properties</code> 文件手动开启 D8 编译器:</p>    <pre>  android.enableD8=true  </pre>    <p>不止于此,Google 在代码压缩和优化上也在不断寻求进步。目前我们广泛使用的 <a href="/misc/goto?guid=4959013030163764439" rel="nofollow,noindex">ProGuard 工具</a> 也将有新的替代者: <strong>R8</strong> 。不过,R8 R8 还没有正式被融入使用,其所在的开源地址为:</p>    <p><a href="/misc/goto?guid=4959013030265478900" rel="nofollow,noindex">https://r8.googlesource.com/r8</a></p>    <p>感兴趣的朋友不妨根据文档,研究一下 R8 的使用。</p>    <p>来自: http://yifeng.studio/2018/04/07/android-studio-d8-dex-compiler/</p>