Java 8是否适用于Android api 24及更高版本或者您可以在较低的api中使用?

时间:2016-03-11 07:28:27

标签: android lambda android-7.0-nougat

在基于此页面的android Java 8 Languages Features中,android只在 api 24及以上中工作,或者你可以在 api低于api 24 中使用,如果你可以使用这个功能,其中最小版本的api 在android中支持这些功能

3 个答案:

答案 0 :(得分:18)

<强>更新 从Android Studio 2.4开始,不推荐使用Jack编译器,Java 8支持将集成在默认构建链中。某些Java 8功能在任何API级别都可用,有些仍然限于API&gt; = 24,请参阅:

https://developer.android.com/studio/preview/features/java8-support.html

旧回答:

从API级别9开始可以使用Java 8 features,但前提是您使用的是Android Studio 2.1(预览版)和Android N预览版SDK

http://android-developers.blogspot.de/2016/03/first-preview-of-android-n-developer.html

  

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

答案 1 :(得分:6)

<强>更新
杰克工具链是deprecated。如果您使用Android插件版本2.4.0-alpha4(或更高版本),Java8功能将进入标准工具链。更多信息here

原始回答 Java 8和更新版本提供了Java 8功能,但lambdas除外。 Lambda被反向移植(使用匿名类)回姜饼。

  

Android N基于lambda表达式的实现   匿名课程。这种方法允许他们倒退   在早期版本的Android上兼容和可执行。

要测试这一点,您需要安装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
    }
}

答案 2 :(得分:-4)

编译您的应用对抗Android N 平台,您必须使用 JAVA 8

Source:

  

要针对Android N平台编译您的应用程序,您需要使用Java 8 Developer Kit(JDK 8),并且为了在Android Studio 2.1中使用某些工具,您需要安装Java 8 Runtime Environment(JRE) 8)。

它应该适用于任何Android设备(目前你无法测试它,因为minSdk是N,你需要一个Android N运行时环境来运行使用api N构建的应用程序。