**关于 jdk 1.8 的配置问题**

来源:2-9 Groovy进阶语法-2

慕粉4400366

2022-08-03

1.在 安装 Android Studio 的时候,会下载的 jdk 1.8 安装到电脑,
并配置好环境变量 供开发使用。

2.有时候 会在 module 的 build.gradle 配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

问题1.这两者的作用分别是什么?
问题2. 下载安装的 jdk 1.8 与 build.gradle 文件中配置的 JavaVersion.VERSION_1_8 是同一个东西吗?
问题3.Android Studio 中 gradle 构建项目 配置的 JDK,与 环境变量配置的jdk 是同一个吗?如果不是同一个 版本号可以不一样吗?

写回答

1回答

allenfeng

2022-08-06

问题1.这两者的作用分别是什么?

  • sourceCompatibility 对应 最终javac编译程序所使用的 "-source" 参数。最高可以指定到当前编译环境所使用的JDK版本。提供了这个参数后,编译程序会在编译过程中严格限制我们可以使用的语言特性。打个比方,若这个值配置了1.6,那我们的代码中就不能使用1.8中的lambda表达式

  • targetCompatibility 对应 最终javac编译程序所使用的 "-target" 参数。这个参数用来指定最终生成的字节码文件的版本,意味着,虚拟机可以运行的最低字节码文件版本不能低于我们指定的值,否则虚拟机将无法识别。

android开发中指定这两个值,是为了在代码中可以使用 Java8的一些特性,比如 Lambda表达式

具体可以参考:https://developer.android.com/studio/write/java8-support

--------------------------

问题2. 下载安装的 jdk 1.8 与 build.gradle 文件中配置的 JavaVersion.VERSION_1_8 是同一个东西吗?

不是一个东西,前者是编译程序(或理解为环境),后者是编译参数,后者为前者所用。

--------------------------

问题3.Android Studio 中 gradle 构建项目 配置的 JDK,与 环境变量配置的jdk 是同一个吗?如果不是同一个 版本号可以不一样吗?

可以不同。Android Studio提供了内置的JDK,即使你未自己安装JDK并配置环境变量,使用Android Studio也可以编译。配置方法见:https://developer.android.com/studio/intro/studio-config#jdk


1
1
慕粉4400366
好的,谢谢老师! Gradle 7.0 之后的 要求使用 Java 11 构建项目。按照上面老师的意思,我在升级到最新版本 Android studio 以及 gradle 插件之后,只需要 将 gradle 的 jdk 配置成 Java 11,而之前 电脑上下载的 jdk 1.8 配置的环境变量 不需要改动。 即 编译项目可以继续使用 Java 8, Gradle构建项目使用的是 Java 11. 这两者互不影响。
2022-08-06
共1条回复

Android 应用程序构建实战+原理精讲

深度掌握 Gradle 使用,系统性学习 Android 应用构建知识

450 学习 · 116 问题

查看课程