我应该在 Android Studio 中使用哪个 Java 版本来构建应用程序?

Shu*_*mar 5 java android kotlin

我应该在android项目中使用哪个java版本,我知道默认情况下android将目标和编译器版本设置为JAVA 1.8,但gradle sdk默认设置为java 11。在 compose 文档的某个地方,我看到我们可以使用 java 17 作为目标和编译选项。我只是想知道如何以及从哪里可以检查 android 中最新支持的 java 版本,因为我想使用最新的 java 版本。原因是新版本带有新功能,这就是原因。我

Sco*_*eld 5

请参阅Android 版本中的 Java 版本。(披露:我写的)

Google 保留支持哪些 Java 级别的信息的主要位置是我可以在 Java 或 Kotlin 源代码中使用哪些 Java API?

AndroidcompileSdk确定哪些 JDK API 可在源代码中使用(Kotlin 或 Java)。

请注意,有多个 JDK 在使用:

  • 运行 Android Studio 的 JDK - 让它默认为 Android Studio 附带的 JetBrains Runtime (JBR)

  • 运行 Gradle 的 JDK - 在 Android Studio 中设置它以进行 Studio 构建,或者通过org.gradle.java.homein gradle.properties(默认为JAVA_HOME)进行 shell 构建

  • 工具链 JDK - 源和目标级别的默认值,以及用于运行单元测试的 JDK。我强烈建议使用它来代替sourceCompatibility,targetCompatibilityjvmTarget。通过添加来设置

    kotlin {
       jvmToolchain(17)
    }
    
    Run Code Online (Sandbox Code Playgroud)

    在模块顶部build.gradle.kts, 并删除sourceCompatibility,targetCompatibilityjvmTarget设置。

  • sourceCompatibility- Java 源代码的 Java 级别(默认为工具链)

  • targetCompatibility- Java 源代码的 Java 字节码生成级别(默认为工具链)

  • jvmTarget- Kotlin 源代码的 Java 字节码生成级别(默认为工具链)


lup*_*lus 0

对于用于开发和编译的Java版本,这取决于minSdkVersion您的应用程序。

是的,您可以使用最近构建的 JDK,但是它对设备上存在的Java 运行时和 APIminSdkVersion设置了限制。

Iterator项目定位使用案例minSdkVersion 21 更高的API调用

桌子

安卓 爪哇 支持 API 和语言功能
14(API 34) 17 号 核心库
13(API 33) 11 核心库
12(API 32) 11 Java API
API 24 8 安卓版本
API 10(不确定) 7 安卓版本

这就是为什么我转而使用 Kotlin,以获得一种更高级的语言,而没有minSdkVersion. 在“老式”Java 中,代码编写速度更快!

查看官方文档