Java 8的那些事

简介: 注:Android 支持所有 Java 7 语言功能,以及一部分 Java 8 语言功能(具体因平台版本而异)。

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


Android支持的 Java 8 语言功能


以下是在开发面向 Android 7.0(API 级别 24)的应用时可用的一些功能:


  • 接口中的默认和静态方法
  • Lambda 表达式
  • 重复注解
  • 方法引用
  • 类型注解(注:类型注解信息仅在编译时可用,而在运行时不可用)


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


启用 Java 8 功能和 Jack 工具链


要使用新的 Java 8 语言功能,还需使用新的 Jack 工具链。新的工具链将 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 进行仪器测试中)
相关文章
|
1天前
|
数据采集 人工智能 安全
|
10天前
|
云安全 监控 安全
|
2天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
882 150
|
15天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1619 8
|
6天前
|
人工智能 前端开发 文件存储
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择
星哥带你玩转飞牛NAS,部署开源笔记TriliumNext!支持树状知识库、多端同步、AI摘要与代码高亮,数据自主可控,打造个人“第二大脑”。高效玩家的新选择,轻松搭建专属知识管理体系。
362 152
|
7天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
588 152
|
9天前
|
人工智能 安全 前端开发
AgentScope Java v1.0 发布,让 Java 开发者轻松构建企业级 Agentic 应用
AgentScope 重磅发布 Java 版本,拥抱企业开发主流技术栈。
545 13
|
2天前
|
编解码 人工智能 机器人
通义万相2.6,模型使用指南
智能分镜 | 多镜头叙事 | 支持15秒视频生成 | 高品质声音生成 | 多人稳定对话