在基于此页面的 android 中Java 8 Languages Features android 仅在api 24 及更高版本中工作,或者您可以在低于 api 24的 api 中使用,如果您可以使用此功能,android 中哪个最小版本的 api支持这些功能
3 回答
更新: 从 Android Studio 2.4 开始,Jack 编译器将被弃用,Java 8 支持将集成到默认构建链中。一些 Java 8 功能在任何 API 级别上都可用,一些仍然限于 API >= 24,请参阅:
https://developer.android.com/studio/preview/features/java8-support.html
老答案:
Java 8 功能从 API 级别 9 开始可用,但前提是您使用 Android Studio 2.1(预览版)和 Android N Preview SDK
http://android-developers.blogspot.de/2016/03/first-preview-of-android-n-developer.html
改进的 Java 8 语言支持 - 我们很高兴将 Java 8 语言功能引入 Android。借助 Android 的 Jack 编译器,您现在可以在 Gingerbread 等 Android 版本上使用许多流行的 Java 8 语言功能,包括 lambda 等。新功能有助于减少样板代码。例如,当提供事件监听器时,lambdas 可以替换匿名内部类。一些 Java 8 语言特性——比如默认和静态方法、流和函数式接口——现在也可以在 N 及更高版本上使用。对于 Jack,我们期待更密切地跟踪 Java 语言,同时保持向后兼容性。
更新
Jack 工具链已弃用。如果您使用 android 插件版本 2.4.0-alpha4(或更高版本),Java8 功能将进入标准工具链。更多信息在这里。
原始答案 Java 8 功能可用于 API N 和更新版本,但 lambda 除外。Lambda 被反向移植(使用匿名类)回到 Gingerbread。
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
}
}
更新
从 Android Studio 2.4 开始,Jack 编译器将被弃用。
Android Studio 3.0及更高版本支持所有 Java 7 语言功能和 Java 8 语言功能的子集,这些功能因平台版本而异。
官方文档中的所有信息: https ://developer.android.com/studio/write/java8-support
也可以直接在对应的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"
}
}
OLD(答案)要针对 Android N
平台
编译您的应用程序,您必须使用 JAVA 8。
要针对 Android N 平台编译您的应用程序,您需要使用 Java 8 开发工具包 (JDK 8),并且为了在 Android Studio 2.1 中使用一些工具,您需要安装 Java 8 运行时环境 (JRE 8)。