java - 是否可以使用Java 8进行Android开发?

标签 java android java-8 android-gradle-plugin

网上搜索了一下,不清楚Android开发是否支持Java 8。

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

最佳答案

更新 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,只有新的语法糖。

如果您想使用 lambda(Android 中 Java 8 的主要功能之一),您可以使用 gradle-retrolamba 。它是一个集成了retrolambda 的gradle 构建依赖项,retrolambda 是一种将Java 8 字节码转换回Java 6/7 的工具。基本上,如果您在 Android Studio 中将编译器设置为编译 Java 8 字节码,从而允许 lambda,它会将其转换回 Java 6/7 字节码,然后将其转换为 dalvik 字节码。如果您想在 Android 中尝试一些 JDK 8 功能来代替官方支持,那么这是一个 hack。

关于java - 是否可以使用Java 8进行Android开发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51550886/

相关文章:

java - 如何在发生 mouseReleased 事件时将图像添加到 JPanel

java - JUnit 参数化数据注入(inject)

java - Android Retrofit - 如何从 JSON 数组中分离类

android - 在 onloadfinished 中打开对话框 fragment 时出现 java.lang.IllegalStateException

java - 获取十进制数正则表达式

java - eclipse android 通过使用 HTTP 将 java 值传递给 php

java - map 中特定键的值总和

java - 在 Java 8 中将 lambda 表达式与旧集合类一起使用时,避免使用 .stream() 和 .collect()

android - 如何在android中将额外部分的布局截图显示为透明而不是黑色

java-8 - java 8 - 如何通过使用方法来抽象谓词的使用