• 使用 Java 8 语言功能
    本文内容:
    支持的 Java 8 语言功能和 API
    启用 Java 8 功能和 Jack 工具链
    配置 Gradle
    已知问题
    Android 支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异)。本页介绍您可以使用的新语言功能、如何正确配置项目以使用这些功能,以及您可能遇到的任何已知问题。

    注:在为 Android 开发应用时,可以选择使用 Java 8 语言功能。您可以将项目的源和目标兼容性值保留为 Java 7,但仍须使用 JDK 8 进行编译。

    支持 Java 8 语言功能需要一个名为 Jack 的新编译。Jack 仅在 Android Studio 2.1 和更高版本上才受支持。因此,如果要使用 Java 8 语言功能,则需使用 Android Studio 2.1 开发应用。

    如果您已经安装了 Android Studio,请通过点击 Help > Check for Update(在 Mac 上,点击 Android Studio > Check for Updates)来确保您已更新到最新版本。如果您的工作站尚未安装 IDE,可在此下载 Android Studio。

    支持的 Java 8 语言功能和 API
    Android 并非支持所有 Java 8 语言功能。不过,以下功能在开发面向 Android 7.0(API 级别 24)的应用时可用:

    默认和静态接口方法
    Lambda 表达式(在 API 级别 23 及更低版本中也可用)
    重复注解
    方法引用(在 API 级别 23 及更低版本中也可用)
    类型注解(在 API 级别 23 及更低版本中也可用)
    注:类型注解信息仅在编译时可用,而在运行时不可用。

    要在 Android 的较早版本中测试 Lambda 表达式、方法引用和类型注解,请前往您的 build.gradle 文件,将 compileSdkVersion 和 targetSdkVersion 设置为 23 或更低。您仍需要启用 Jack 工具链以使用这些 Java 8 功能。

    此外,也可使用以下 Java 8 语言 API:

    反映和语言相关 API:
    java.lang.FunctionalInterface
    java.lang.annotation.Repeatable
    java.lang.reflect.Method.isDefault()
    以及与重复注解关联的反映 API,例如 AnnotatedElement.getAnnotationsByType(Class)
    实用程序 API:
    java.util.function
    java.util.stream
    启用 Java 8 功能和 Jack 工具链
    要使用新的 Java 8 语言功能,还需使用新的 Jack 工具链。新的 Android 工具链将 Java 源语言编译成 Android 可读取的 Dalvik 可执行文件字节码,且有其自己的 .jack 库格式,在一个工具中提供了大多数工具链功能:重新打包、压缩、模糊化以及 Dalvik 可执行文件分包。

    以下是构建 Android Dalvik 可执行文件可用的两种工具链的对比:

    旧版 javac 工具链:
    javac (.java → .class) → dx (.class → .dex)
    新版 Jack 工具链:
    Jack (.java → .jack → .dex)
    配置 Gradle
    要为您的项目启用 Java 8 语言功能和 Jack,请在模块级别的 build.gradle 文件中输入以下内容:

    android {
      ...
      defaultConfig {
        ...
        jackOptions {
          enabled true
        }
      }
      compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
      }
    }
    已知问题
    Instant Run 目前不能用于 Jack,在使用新的工具链时将被停用。

    由于 Jack 在编译应用时不生成中间类文件,依赖这些文件的工具目前不能用于 Jack。下面是一些工具示例:

    对类文件进行操作的 Lint 检测工具
    需要应用类文件的工具和库(例如使用 JaCoCo 进行仪器测试中)

使用 Java 8 语言功能相关推荐

  1. nutshell_Nutshell中的Java 8语言功能-第1部分

    nutshell 你好朋友, Java 8发布已经很长时间了,现在越来越多地被使用. 在本文中,我们将讨论以下Java 8主题. 1.功能接口 2.Lambda表达式 3.默认方法 1.功能界面 什么 ...

  2. nutshell_Nutshell中的Java 8语言功能-第2部分

    nutshell 编者注:您也可以在此处检查Part-1. 嗨,朋友,这是简明系列的Java 8语言功能的第2部分. 在这里,我们将讨论Java 8的以下功能: 接口中的静态方法 流 1.接口中的静态 ...

  3. Nutshell中的Java 8语言功能-第2部分

    编者注:您也可以在此处检查Part-1. 嗨,朋友们,这是简明系列的Java 8语言功能的第2部分. 在这里,我们将讨论Java 8的以下功能: 接口中的静态方法 流 1.接口中的静态方法 什么是静态 ...

  4. Nutshell中的Java 8语言功能-第1部分

    你好朋友, Java 8发布已经很长时间了,现在越来越多地被使用. 在本文中,我们将讨论以下Java 8主题. 1.功能接口 2,Lambda表达式 3.默认方法 1.功能界面 什么是功能接口? 与一 ...

  5. 是否可以将Java 8用于Android开发?

    本文翻译自:Is it possible to use Java 8 for Android development? Searching the web, it is not clear if Ja ...

  6. java框架2019_Java回顾#2 – 2019年最佳工具,框架和功能

    java框架2019 哪种Java工具,框架和/或功能在2019年让您感到振奋,为什么? 绝对是夸克. 社区开发了一个很棒的工具,可以优化JVM甚至GraalVM本机映像的通用Java范例–这影响了Q ...

  7. Java之Java特点

    1.简单 Java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了.Java语言的简单性主要体现在以下三个方面: Java的风格类似于C++,因而C++程序员是非常熟悉的.从某种意义 ...

  8. Java产生的历史与现状

    1.1.1Java的现状 Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发,它的平台无关性直接威胁到Wintel的垄断地位.一时间,"连Inte ...

  9. Java语言的出现背景、主要特点、发展历程以及Java技术的应用

    一. Java的由来 当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引.那么Java到底有何神奇之处呢? Java语言其实最是诞生于1991年,起初被称为OAK语言,是SU ...

最新文章

  1. [架构设计]反向(或者后向)插件系统设计
  2. git id 切分支 按_Git分支本地操作详解
  3. eclipse 设置 content type 编码格式
  4. 【python数据挖掘课程】十三.WordCloud词云配置过程及词频分析
  5. Eclipse自动代码补全
  6. caffe安装 cuda安装 opencv安装 cudnn安装 python相关依赖库安装
  7. python生成器函数_Python 编写生成器函数
  8. Modbus PLC攻击分析:Python和Mbtget读写PLC
  9. DIY01_NE555叮咚门铃
  10. c语言同构数循环,C语言求同构数.pdf
  11. vue调整图标的大小_Vuetify图标大小
  12. WIN10笔记本任务栏无反应(卡住)有效解决方法
  13. 桥本分数式(用递归法实现全排列)
  14. 【笔记】Android APP 上架 Google Play 采坑记之「应用签名证书」
  15. 悟空浏览器——青龙羊毛
  16. 最通俗的运维开发工程师招聘解析
  17. 2021年软考考核方式
  18. 四、完成Teigha.net库对CAD看图的放大/缩小/移动实体等界面操作,图层管理器,以及CAD文件布局的切换功能
  19. Hide column
  20. Linux 中 dlopen、dlsym、dlclose、dlerror函数

热门文章

  1. HTTP状态码详解大全
  2. 计算广告(1)---一些概念
  3. Vivado 2016.4安装Digilent Board Files支持
  4. 2018年7月18日日报
  5. 条码标签打印机可能遇到哪些问题
  6. java-构建乘积数组(剑指offter-数组-简单)
  7. js解析\遍历json数据中所有的键和值
  8. 计算机组成原理扩展指令CLC实验报告,计算机组成原理实验设计
  9. Android指示器的使用总结
  10. 盘点丨2017年国内最酷的10家大数据创业公司