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

15 lambda android android-7.0-nougat

在基于此页面的android中,Java 8语言功能仅在api 24及以上版本中运行,或者你可以在api低于api 24使用,如果你能使用这个功能,那么android中最小的api版本支持这些功能

tkn*_*ell 19

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

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

老答案:

Java的八大特点可从API级别9点开始,但只有当你使用Android 2.1工作室(预览)和Androidñ预览版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语言.


Lor*_*nMK 6

更新
Jack工具链已弃用.如果您使用Android插件版本2.4.0-alpha4(或更高版本),Java8功能将进入标准工具链.更多信息在这里.

原始答案 除了lambdas之外,API N和更新版本提供了Java 8功能.Lambdas被反向移植(使用匿名类)回到姜饼.

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
    }
}
Run Code Online (Sandbox Code Playgroud)