Java8是在Android api 24及以上版本上工作还是可以在较低的api中使用?

Java8是在Android api 24及以上版本上工作还是可以在较低的api中使用?,android,lambda,android-7.0-nougat,Android,Lambda,Android 7.0 Nougat,在基于此页面的android中,android是否仅在api 24及以上版本中工作,或者您可以在低于api 24的api中使用,如果您可以使用此功能,android中哪一个最小版本的api支持这些功能更新: 从Android Studio 2.4开始,Jack编译器将被弃用,Java 8支持将集成到默认构建链中。有些Java 8功能在任何API级别上都可用,有些功能仍然限于API>=24,请参阅: 旧答案: 从API级别9开始提供,但仅当您使用Android Studio 2.1(预览版)和A

在基于此页面的android中,android是否仅在api 24及以上版本中工作,或者您可以在低于api 24的api中使用,如果您可以使用此功能,android中哪一个最小版本的api支持这些功能更新: 从Android Studio 2.4开始,Jack编译器将被弃用,Java 8支持将集成到默认构建链中。有些Java 8功能在任何API级别上都可用,有些功能仍然限于API>=24,请参阅:

旧答案:

从API级别9开始提供,但仅当您使用Android Studio 2.1(预览版)和Android N预览SDK时才可用

改进的Java 8语言支持-我们很高兴将Java 8语言功能引入Android。有了Android的Jack编译器,您现在可以在Android版本上使用许多流行的Java8语言功能,包括lambdas和更多功能,最早可以追溯到Gingerbread。新特性有助于减少样板代码。例如,lambdas可以在提供事件侦听器时替换匿名内部类。一些Java8语言特性——如默认和静态方法、流和函数接口——现在也可以在N和更高版本上使用。有了Jack,我们期待着在保持向后兼容性的同时更密切地跟踪Java语言


更新
从Android Studio 2.4开始,Jack编译器将被弃用。
Android Studio 3.0及更高版本支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异

官方文件中的所有信息:

您也可以在相应的build.gradle文件中直接配置它:

只需配置:

android {
  ...
  // Configure only for each module that uses Java 8
  // language features (either in its source code or
  // through dependencies).
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
  // For Kotlin projects
  kotlinOptions {
    jvmTarget = "1.8"
  }
}
旧的(答案)
要针对Android N平台编译应用程序,必须使用JAVA 8

要针对Android N平台编译应用程序,您需要使用Java 8开发工具包(JDK 8),并且要在Android Studio 2.1中使用一些工具,您需要安装Java 8运行时环境(JRE 8)


更新
千斤顶工具链是。如果您使用android插件版本2.4.0-alpha4(或更高版本),Java8功能将进入标准工具链。更多信息

原始答案 Java 8功能在API N和更新版本上可用,但lambdas除外。lambda被向后移植(使用匿名类)到Gingerbread

Android N的lambda表达式的实现基于 匿名类。这种方法可以让他们倒退 在早期版本的Android上兼容且可执行

要测试这一点,您需要安卓Studio 2.1预览版、安装的JDK 8和最新的构建工具

构建配置示例:

android {
    compileSdkVersion 23
    buildToolsVersion "24.0.0 rc1"

    defaultConfig {
        minSdkVersion 23
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"

        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

如果使用Android Studio 2.1(预览版)和Android N preview SDK,MLM教授链接的功能将从API级别9开始提供。没问题,我更新了答案以明确哪些功能在什么情况下可用:)谢谢tknell,事实上,我可以在minSdkVersion为api 15的项目中使用java 8和lambda,为什么会出现错误:即使启用了Jack编译器,也无法解析方法流()?您是否在compileOptions中设置了java版本,compileSdkVersion和targetSdkVersion至少设置为24,如本文所述?截至2016年9月20日,这些功能支持api 15及以上版本,直到2016年9月20日,Android数据绑定和Lambda无法协同工作要求Java 8 JDK与支持Java 8语言功能不是一回事。例如,引用的文本可能仅仅意味着其中一个构建工具依赖于Java8特性。