在网上搜索,还不清楚Android开发是否支持Java 8。
在我下载/安装Java 8之前,能不能有人给我指出任何“官方”文档,说Java 8是或不支持Android开发。
在网上搜索,还不清楚Android开发是否支持Java 8。
在我下载/安装Java 8之前,能不能有人给我指出任何“官方”文档,说Java 8是或不支持Android开发。
当前回答
添加这一行到模块LVL构建等级
compileOptions { sourceCompatibility JavaVersion。VERSION_1_8 targetCompatibility JavaVersion。VERSION_1_8 }
其他回答
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.
我在Stack Overflow上对一个类似的问题写了一个类似的答案,但这里是答案的一部分。
Android Studio 2.1:
新版Android Studio(2.1)支持Java 8特性。以下是Android开发者博客文章的摘录:
... Android Studio 2.1版本包括对新的Jack编译器的支持和对Java 8的支持。 ... 在使用N Developer Preview进行开发时,要使用Java 8语言特性,您需要使用Jack编译器。新建项目向导[文件→新建→项目]为目标N的项目生成正确的配置。
在Android Studio 2.1之前:
Android还不支持Java 1.8(它只支持1.7),所以你不能使用Java 8的特性,比如lambdas。
这个答案提供了更多关于Android Studio兼容性的细节;州:
如果你想在Android中使用lambdas (Java 8的主要特性之一),你可以使用gradle-retrolamba
如果您想了解更多关于使用gradle-retrolambda的知识,这个答案提供了很多细节。
我在3年前问过这个问题,很明显,这些年来答案已经发生了变化。正如上面许多人已经回答过的那样,就在不久前,答案变成了“是的”。我从来没有更新过被接受的答案,因为它是当时的正确答案。(我不确定堆栈溢出策略是什么)
我只是想给那些还在搜索这个话题的人补充一个答案。截至2017年5月17日,谷歌还宣布Kotlin也是Android开发的官方语言。
我还没有找到官方的新闻稿,但我确实看了一些谷歌的I/O视频。这里是Kotlin团队关于公告的一篇博客文章的链接。
原生Java 8登陆android!终于!
从每个模块中删除Retrolambda插件和Retrolambda块 构建。gradle文件: 要禁用Jack并切换到默认工具链,只需删除 模块构建中的jackOptions块。gradle文件
要开始使用受支持的Java 8语言特性,请将Android插件更新到3.0.0(或更高版本)
从Android Studio 3.0开始,Java 8语言功能现在原生支持Android:
Lambda表达式 方法引用 类型注释(目前类型注释信息在运行时不可用,只在编译时可用); 重复注释 默认和静态接口方法(API级别24或更高,不支持即时运行);
另外,从最低API级别24开始,可以使用以下Java 8 API:
java.util.stream java.util.function java.lang.FunctionalInterface java.lang.annotation.Repeatable java.lang.reflect.AnnotatedElement.getAnnotationsByType(类) java.lang.reflect.Method.isDefault ()
将这些行添加到应用程序模块的构建中。Gradle告知项目的语言级别:
android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
通过在gradle中添加以下内容禁用对Java 8语言特性的支持。属性文件:
android.enableDesugar=false
你已经完成了!您现在可以使用本机java8!