一、前言

Android Studio 3.1 稳定版,在前几天正式发布了。

其中包含了 D8 Dex Compiler,它在 AS3.1 中,被设置为了默认的 dex 编译器。

那么今天就来聊聊,什么是 D8 编译器,并且它有哪些优点?

二、D8 编译器

Android 开发人员都知道,Dex 编译是构建 Apk 的关键步骤,它是将 .class 字节码转换为 Android Runtime(或 Dalvik)的 .dex 字节码的过程。

Dex 编译器主要在日常 App 开发的过程中被使用到,它直接影响到 App 的构建时间、.dex 文件的大小以及运行时性能。

而与本文介绍的下一代 Dex编译器: D8 Dex Compiler,相对的就是当前比较普遍的 Dx 编译器。与旧版相比,D8 的编译速度更快,输出的 .dex 文件更小,同时具有相同或者更高的运行时性能(取决于设备)。

运行时性能这个指标,不同的设备上也不相同,这里就以构建时间和输出的 .dex 文件,两个指标举例,来说说 D8 编译器的优点。

注意这里的测试编译器编译指标的项目,并非一个空项目,它是官方推荐用于在Android Studio 和 Gradle 进行压力测试并查找问题的一个测试项目。

https://github.com/jmslau/perf-android-large

使用不同的编译器,通过这个项目进行对比,是有参考价值的。

构建时间对比:Dx vs D8

Dex 文件大小:Dx vs D8

这两个指标已经能说明问题,编译速度大大提高,而输出的 .dex 文件,也有小幅的减小。

三、体验 D8

在 AS 3.1 稳定版中,D8 Dex Compiler 是被当做了默认的编译器,所以不需要我们再额外的进行配置。

但是我们并不一定要升级 AS 才可以体验它。

如果你使用的是 AS 3.0+ 版本,可以直接在项目的 gradle.properties 文件中,增加 enableD8 的开关。

android.enableD8 = true

四、小结

简单总结一下 D8 的优点:

  1. 编译速度更快。

  2. 输出的 .dex 文件更小。

  3. 运行时效率"更高"。

前面举例中,D8 在编译速度上已经有了很大的提高。但是在输出的 .dex 文件大小上,并没有很大的优势。不过除了 D8 之外,Google 还在研究 R8,它是用来对整个程序进行压缩和优化 Proguard 的一个替代品。

简单来说:

  • D8 是 Dx dexer 的替代品。

  • R8 是 Proguard 的替代品。

期待 R8 的发布,可以让 Apk 变得更小。

Android系统----AS 3.1 支持的新版 D8,让你的编译更快、更小、更顺滑相关推荐

  1. android系统精简,高通支持Android 8.1精简版,专为512MB或1GB内存设计

    往的搭载骁龙处理器的老旧手机终于有救啦!高通宣布将支持Android Go系统,也就是Android 8.1的精简版,专门为512MB或1GB内存的手机设计的,未来老手机也可以流畅运行. 对于谷歌而言 ...

  2. uc游览器 android系统,手机UC浏览器2019最新版

    UC浏览器2019最新版拥有独创的U3内核和云端技术,完美地支持HTML5应用,让您在阅资讯.读小说.看视频.上微博.玩游戏.网上购物等都能享受最流畅的移动互联网体验.欢迎有需要的用户来下载体验. 功 ...

  3. MyDockFinder 5.5体验极致模拟 Mac OS 系统桌面,完美支持最新版Win10 系统,可使用系统级模糊效果

    MyDockFinder是原MyDock和MyFinder这两款软件的合体,MyDockFinder软件包括Dock(底下部分)和Finder(顶上部分).MyDockFinder比任何美化主题都好用 ...

  4. BlueStacks不仅支持x86和ARM处理器,新版BlueStacks并不是单纯的实现虚拟化,而是运行整个Android系统

    blueStacks是由AMD投资的一款安卓模拟器产品,可以让用户在Windows系统电脑上运行Android应用.日前,AMD宣布对这款应用进行了强化,新版BlueStacks将能在Windows台 ...

  5. Android 进阶——Android 系统的基础术语和编译的相关理论小结

    文章大纲 引言 一.Android系统的分区 1./boot 引导分区 2./system 系统分区 3./recovery 恢复分区 刷入RE: 4./data 用户数据区 5./cache 数据缓 ...

  6. Android系统(245)---SystemServer进程的创建流程

    Android进程系列第三篇---SystemServer进程的创建流程 一.内容预览 SystemServer进程的启动.png 二.概述 前面进程系列已经更新了两篇,本文(基于Android O源 ...

  7. Android系统(76)---ART和Dalvik区别

    ART和Dalvik区别 Art上应用启动快,运行快,但是耗费更多存储空间,安装时间长,总的来说ART的功效就是"空间换时间". ART: Ahead of Time Dalvik ...

  8. Android系统进阶

    原址 一. Java篇 Java是Android的语言基础,建议初学者一定要先学习Java基本知识,进而再学习Android,循序渐进,只有扎实的基础才能建造牢固的上层建筑. 当然,这里说的要有一定J ...

  9. thinkphp6+layui BBS社区论坛系统源码分享,支持适配移动端附截图

    废话不多说,直接上页面截图 觉得不错扫码支持一下 这是一个简单迅捷的管理系统,支持插件化开发,适用于企业.个人或组织建站需求. 支持多模板.多单页自由切换,网站风格可定制性强,支持插件化开发,方便二开 ...

最新文章

  1. 关于AXI DMA CYCLIC 调试过程中的问题
  2. caffe data层_Caffe实现多标签输入,添加数据层(data layer)
  3. java局域网 端口扫描_java 如何端口扫描出ssh端口?
  4. 求离散数据的突变点_Nat Gen | 染色质三维构象决定突变分布
  5. ARM 虚拟化技术简介
  6. CF1592E Bored Bakry(二进制+前缀异或和)
  7. node模块函数图解
  8. 32位CentOS系统安装kernel-PAE支持4g以上内存
  9. Hbase简介及常用命令相关知识总结
  10. Golang入门第一天-工具准备
  11. MyBatis教程目录
  12. 研发人员分层及其工作内容划分
  13. 拉依达准则python实现
  14. stm32f103HC05蓝牙串口程序和自制手机APP
  15. Java学习之常用的Java构建工具
  16. 2022届应届生办理落户上海流程是怎样的?
  17. 什么是「中华田园敏捷开发」,人才
  18. HihoCoder 1082 : 然而沼跃鱼早就看穿了一切
  19. linux查看python解释器位置——及linux虚拟环境中的python解释器位置
  20. keep-alive失效原因及解决方案

热门文章

  1. [C++] - private static成员函数
  2. 上海高考女生计算机专业,@2020高考:女生最多的15个专业,一辈子的好友就在这里...
  3. Java面试之到底值传递和引用传递???
  4. C# 托管资源与非托管资源
  5. [leetcode]Next Greater Element
  6. gerrit与crowdid, openid集成,设置openIdSsoUrl 直接登录
  7. 使用三级缓存解决内存溢出
  8. kettle系列-6.kettle实现多字段字典快速翻译
  9. Android 百度地图开发问题----解决地图有时候加载不出来问题
  10. css学习之border 边框