在网上搜索,还不清楚Android开发是否支持Java 8。

在我下载/安装Java 8之前,能不能有人给我指出任何“官方”文档,说Java 8是或不支持Android开发。


当前回答

是的,Android现在支持Java 8 (24.1.17)

现在这是可能的

但是你需要让你的设备rom在java 1.8上运行,并启用“jackOptions”来运行它。 Jack是运行Java 8的新的Android编译器的名字

https://developer.android.com/guide/platform/j8-jack.html

将这些行添加到build_gradle

    android {
  ...
  defaultConfig {
    ...
    jackOptions {
      enabled true
    }
  }
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

Java 8似乎是Android studio 2.0的运行Java引擎, 但是经过我的检查,它仍然不接受java 8的语法,你现在不能从android studio中选择编译器。然而,如果你的android客户端需要函数式编程机制,你可以使用scala插件。

其他回答

点击此链接获取最新更新。使用Java 8语言特性

旧的答案

在Android N预览版中,Android支持Java 8的有限功能,请参阅Java 8语言功能

要开始使用这些功能,你需要下载并设置Android Studio 2.1和Android N预览SDK,其中包括 要求杰克工具链和更新的Android插件为Gradle。如果你 还没有安装Android N预览SDK,请参见设置开发 Android N。

支持Java 8语言特性和api

Android目前不支持所有Java 8语言特性。 但是,在开发应用程序时,现在可以使用以下功能 针对Android N预览版:

默认和静态接口方法

Lambda表达式(API级别23及以下也可用)

可重复的注释

方法参考(API级别23及以下也可用)

还有一些额外的Java 8功能,Android支持,你可以看到完整的Java 8语言功能细节

更新

注意:Android N基于lambda表达式的实现 匿名类。这种方法允许他们后退 兼容和可执行的早期版本的Android。测试 早期版本的Lambda表达式,记得去你的 构建。将“compileSdkVersion”和“targetSdkVersion”设置为 23或更低。

更新2

现在Android studio 3.0稳定版支持Java 8库和Java 8语言特性(没有Jack编译器)。

容易记住的答案

在android studio中,单击项目结构图标,然后进入模块/应用程序,然后将源兼容性和目标兼容性更改为1.8,然后按Ok。

Android Gradle插件3.0.0及以后版本支持所有Java 7语言特性和Java 8语言特性的子集,这些特性因平台版本而异。当使用Android Gradle插件4.0.0或更高版本构建应用程序时,您可以使用许多Java 8语言API,而无需为应用程序设置最低API级别。

本页描述了您可以使用的Java 8语言特性,如何正确配置您的项目以使用这些特性,以及您可能遇到的任何已知问题。

这篇文章将帮助你。我把链接放在下面 https://developer.android.com/studio/write/java8-support

java 8

Android支持所有Java 7语言特性和Java 8语言特性的子集,这些特性因平台版本而异。

检查支持java 8的哪些功能

使用Java 8语言特性

我们已经决定将对Java 8语言特性的支持直接添加到当前的javac和dx工具集中,并弃用Jack工具链。有了这个新方向,依赖于Java类文件格式的现有工具和插件应该可以继续工作。接下来,Java 8语言特性将被Android构建系统原生支持。我们的目标是在未来几周内将其作为Android Studio的一部分发布,我们希望尽早与大家分享这一决定。

Android上Java 8语言特性支持的未来

Eclipse用户:

对于喜欢Eclipse的老开发人员,谷歌停止支持Eclipse Android Developer工具

如果你安装了Java 8 JDK,那么试一试,如果出现任何问题,尝试在Eclipse中从窗口菜单→首选项→Java→编译器设置编译器为1.6。 Java 7也可以工作:

如果你的目标是Android 5.0和 更高。

安装多个JDK并尝试。

更新2017/11/04 - Android Studio 3.0现在支持Java 8。Gradle-retrolambda现在不再需要了。参见https://developer.android.com/studio/write/java8-support.html

如果您正在使用gradle-retrolambda,上面的链接还包括迁移指令。原答案如下:


Android不支持Java 8。它只支持到Java 7(如果你有kitkat),它仍然没有invokedynamic,只有新的语法sugar。

If you want to use lambdas, one of the major features of Java 8 in Android, you can use gradle-retrolamba. It's a gradle build dependency that integrates retrolambda, a tool that converts Java 8 bytecode back to Java 6/7. Basically, if you set the compiler in Android Studio to compile Java 8 bytecode, thus allowing lambdas, it'll convert it back to Java 6/7 bytecode which then in turn gets converted to dalvik bytecode. It's a hack for if you want to try out some JDK 8 features in Android in lieu of official support.