Is it possible to use Java 8 for Android development?
在网上搜索,目前尚不清楚Java 8是否支持Android开发。
在我下载/设置Java 8之前,有人可以在任何"官方"文档中指出我说Java 8是否支持Android开发。
更新2017/11/04 - Android Studio 3.0现在支持Java 8.现在不再需要
如果您使用
Android不支持Java 8.它只支持Java 7(如果你有kitkat)并且它仍然没有invokedynamic,只有新的语法糖。
如果你想使用lambdas,这是Android中Java 8的主要功能之一,你可以使用gradle-retrolamba。它是一个gradle构建依赖项,它集成了retrolambda,这是一个将Java 8字节码转换回Java 6/7的工具。基本上,如果你在Android Studio中设置编译器来编译Java 8字节码,从而允许lambdas,它会将它转换回Java 6/7字节码,然后转换为dalvik字节码。如果您想在Android中试用一些JDK 8功能代替官方支持,这是一个黑客攻击。
java 8
Android支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异。
检查支持java 8的哪些功能
使用Java 8语言功能
We've decided to add support for Java 8 language features directly into the current javac and dx set of tools, and deprecate the Jack toolchain. With this new direction, existing tools and plugins dependent on the Java class file format should continue to work. Moving forward, Java 8 language features will be natively supported by the Android build system. We're aiming to launch this as part of Android Studio in the coming weeks, and we wanted to share this decision early with you.
Android上Java 8语言功能支持的未来
Eclipse用户:
对于喜欢Eclipse的老开发者,谷歌停止支持Eclipse Android Developer工具
如果您安装了Java 8 JDK,那么试一试,如果出现任何问题,请尝试从窗口菜单→首选项→Java→编译器中将编译器设置为1.6。
Java 7也可以工作:
Java 7 or higher is required if you are targeting Android 5.0 and
higher.
安装多个JDK并尝试。
您确实可以使用
下面是我最近为Android开发运行lambda表达式所遵循的完整指南。最后提到了本指南的原始来源。
在本指南中,介绍了一些Java 8功能的方法
将展示Android开发工具,专门针对
Eclipse IDE。但是,本指南中将描述的步骤也可能适用于Google的新起义开发
环境,Android Studio。它基于社区版
JetBrains最受欢迎的IntelliJ Idea IDE
2014年7月初由Google升级为"测试版"
在编写本指南之前。 Eclipse仍然是突出的
开发环境,至少在一段时间内,并考虑到
事实上,大多数Android项目都是使用Eclipse开发的
将lambda表达式等新Java 8特性引入的方法
ADT似乎对开发人员非常有用。Android Development基于一个名为的自定义Java实现
Apache Harmony项目于2011年被终止。最多
Android Development中常用的Java语法是Java 6(v1.6)和
KitKat版本也部分支持Java 7(v1.7)
(Android 4.4。+)。因此,Java 8的特性就像lambda表达式
不能直接在Android App开发中使用
在开发工具中应用一些调整。幸运的是,这些
构造基本上是一些'语法糖'增强剂
给开发人员带来'匿名课'之类的缺点
它们可以被翻译成Java 6或Java 7类。最近将Java 8源代码转换为低级Java的方法
版本称为RetroLambda。该库使开发人员运行
Java 7上使用lambda表达式的Java 8代码甚至更低。
不幸的是,除了lambda表达式之外的Java 8功能不是
现在支持RetroLambda,但lambda表达式的概念
是Java 8平台上最大的飞跃,它是一个很棒的工具
无论如何Android开发者。有关此库的详细信息,请访问其GitHub页面:
https://github.com/orfjackal/retrolambda#getting-started
另外,另一个开发人员创建了RetroLambda的Gradle插件
允许基于Gradle的构建在Java或Android中实现
项目。但是,开发人员只提到要集成它
插件进入Android Studio环境。细节可以在其上找到
GitHub页面:https://github.com/evant/gradle-retrolambda
在基于Eclipse的开发中使用这些基础结构
环境不能直接接近,但它是可行的,也将是
本指南中演示了这一点BLOCKQUOTE>
制备
本指南假定读者对Android开发有基本的了解,并且它基于ADT版本22.6.2,因为最近的ADT版本23.0.2似乎存在布局文件夹创建等问题。有关此问题的详细信息,请访问以下链接:
http://code.google.com/p/android/issues/detail?id=72591
本指南中的步骤将针对Windows 8.1,64位开发机器提供,但它们可以轻松地适应其他平台。新构建系统
Gradle 将用于构建/清理过程,并且还将提供其安装过程。此外,JDK 8 和JDK 7 都必须在开发机器上共存。必须遵循以下步骤安装它们:转到JDK 8早期访问预览页面http://jdk8.java.net 下载JDK 8u20并安装它。不需要安装JRE 8,可以跳过它 转到JDK 7最新稳定版页面http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 下载JDK 7u65并安装它。 JRE 7安装也不是必需的,可以跳过它 将JDK 8主文件夹和JDK 8 bin 文件夹添加到%PATH% 变量中使用JDK 8主文件夹的路径值创建新的环境变量 JAVA_HOME 使用JDK 8主文件夹的路径值再次创建新的环境变量 JAVA8_HOME 使用JDK 7主文件夹的路径值创建新的环境变量 JAVA7_HOME 打开终端窗口并运行 java -version 命令并验证Java 8是否已启动并正在运行在同一窗口中运行 javac -version 命令并验证JDK 8 Java编译器是否也已启动并正在运行现在,必须从以下链接下载ADT-22.6.2:
http://dl.google.com/android/adt/22.6.2/adt-bundle-windows-x86_64-20140321.zip
下载ADT并将其内容解压缩到一个文件夹,例如 D:\adt 使用ADT安装文件夹的路径值定义名为 ANDROID_HOME 的新环境变量,例如:D:\adt\sdk 添加 Andoid SDK Platform Tools 和Andoid SDK Tools 文件夹,例如D:\adt\sdk\tools 和D:\adt\sdk\platform-tools ,到%PATH% 变量如果愿意,可以创建Eclipse IDE的快捷方式。它位于ADT安装文件夹下,例如 D:\adt\eclipse 运行Eclipse IDE并创建一个工作空间,例如 D:\adt\workspace 单击工具栏上的 Android SDK Manager 按钮仅选择 Android SDK Build tools Rev. 19.1 和Android Support Library 。取消选择其他所有内容并安装这两个软件包。如果一切顺利,ADT将启动并运行。
强烈建议安装以下工具:
Eclipse Kepler Java 8支持:它使Eclipse能够识别新的Java 8语法扩展,并使您摆脱Java代码编辑器中烦人的
red dots 。它可能通过Eclipse中的Help -> Install New Software 安装。在Work with 字段中输入http://download.eclipse.org/eclipse/updates/4.3-P-builds/并继续安装。Nodeclipse / Enide Gradle:它主要用于突出显示Groovy语言关键字。 Groovy用作Gradle构建脚本的DSL。这个插件可以通过
Eclipse Marketplace 安装。但是,ADT-22.6.2中的Eclipse不与Eclipse Marketplace Client 一起出现。因此,您首先需要在Eclipse中通过Install New Software 工具安装Eclipse Marketplace Client 。在Work with 字段中输入http //:download.eclipse.org/mpc/kepler/并继续安装。安装Eclipse Marketplace Client 后,您可以在Eclipse Marketplace Client 中搜索Nodeclipse/Enide Gradle 并进行安装。Genymotion虚拟设备:它是ADT附带的默认
Android Virtual Device 的绝佳替代品。 AVD令人烦恼,并且无缘无故地继续崩溃。 Genymotion使您可以使用由Oracle VirtualBox执行的CyanogenMod 图像来准备Android VD。它的单用户许可是免费的,可以从http://www.genymotion.com下载。只需要登录,它也可以集成到Eclipse中。细节可以在以下位置找到:https://cloud.genymotion.com/page/doc/#collapse8
以下是基于Android 4.3的CyanogenMod虚拟设备的屏幕截图,
它可能被认为是在基于x86或x64的个人计算机上运行的完全可靠的Android设备。要在此虚拟设备上使用
Google PlayStore 等Google服务,必须将其使用的Android版本的gapps 图像闪存到设备上。可以从CyanogenMod网站下载该设备的正确gapps 图像:http://wiki.cyanogenmod.org/w/Google_Apps
Gradle安装是可选的,因为它也是由Android SDK本身提供的,但强烈建议单独安装。可以按照以下步骤进行安装:
转到Gradle网站:http://www.gradle.org/
单击
Downloads 在 Previous Releases 下选择版本1.10并下载gradle-1.10-all.zip或gradle-1.10-bin.zip将其内容解压缩到一个文件夹,例如 D:\adt\gradle 使用Gradle安装文件夹的路径值定义名为 GRADLE_HOME 的新环境变量,例如D:\adt\gradle 添加您的Gradle二进制文件夹,例如 D:\adt\gradle\bin ,到您的%PATH% 变量打开终端窗口并运行 gradle -v 命令并验证它是否已启动并正在运行
如果您已成功达到这一点,那么这意味着您已准备好使用Java 8功能创建您的第一个Android应用程序。演示应用程序
将创建一个简单的应用程序来演示上一节中描述的工具的用法。
您可以简单地按照下面给出的步骤深入了解如何在Android Developer Tools中使用lambda表达式:运行Eclipse IDE并选择 File -> New -> Other -> Android -> Android Application Project 创建一个新的Android App填写如下所示的表格:
只需单击以下表单上的 Next 按钮,然后单击最后一个上的Finish 按钮。等到ADT完成项目加载右键单击项目并选择 New -> Folder 并将其命名为builders 右键单击 gen (Generated Java Files) 文件夹并将其删除。 Gradle将很快为我们生成相同的文件,我们将它们添加到由不再需要默认Ant构建器创建的项目s build path. The gen`文件夹中,该文件夹下的工件将被废弃在
builders 文件夹下创建以下批处理文件:gradle_build.cmd gradle_post_build.cmd gradle_clean.cmd 填写这些批处理文件如下:
gradle_build.cmd:
gradle_post_build.cmd:
gradle_clean.cmd:
取消选择 Project -> Build Automatically 菜单选项右键单击项目并选择 Properties -> Builders 并取消选择ADT提供的所有默认构建器单击同一窗口中的 New 按钮,选择Program ,然后单击OK 将出现新的构建器配置窗口。填写选项卡如下:
Main 新构建器配置的选项卡
Refresh 新构建器配置的选项卡
Environment 新构建器配置的选项卡
Build Options 新构建器配置的选项卡
创建名为 Gradle_Post_Build 的第二个构建器,该构建器使用gradle_post_build.cmd 作为其程序。此构建器的所有其他设置必须与先前创建的构建器完全相同。此构建器将负责将构建过程创建的工件复制到bin 文件夹中。创建名为 Gradle_Cleaner 的第三个构建器,它使用gradle_clean.cmd 作为其程序。最终选项卡中的Run the builder 设置必须设置为During a Clean 。此构建器的所有其他设置必须与第一个构建器完全相同。根据名称的建议,此构建器将负责清除构建过程创建的工件。
HelloLambda 项目的新建筑商
右键单击项目,然后选择 Export 选择 Android -> Generate Gradle Build Files ,然后单击Next 在下一个窗口中选择项目,然后单击 Finish 转到项目的根文件夹并删除文件 gradlew 和gradlew.bat 。同时删除gradle 文件夹切换回Eclipse并选择 Project -> Clean 菜单选项。填写如下所示的表格:
Clean Project 窗口
单击 OK 并等待清洁过程完成在 MainActivity 类中调用setContentView 函数后立即添加下面给出的Java代码段:
将 build.gradle 文件的开头更改为sourceCompatibility 部分,如下所示:
右键单击项目并选择 Properties -> Java Compiler 选项并将所有合规性级别设置为Java 8.这将使Eclipse识别新的Java 8构造,如lambda表达式。单击通知窗口中的 No 右键单击项目,然后选择 Build project 。 Eclipse将开始构建项目。构建过程
右键单击项目,然后转到
Properties -> Java Build Path 。将以下文件夹添加到构建路径(也在下图中显示):build\source\buildConfig\debug build\source
\debug
Eclipse现在能够识别
R.java 和buildConfig.java 文件,它不会显示任何red dots ,它表示与项目资源文件相关的错误。右键单击项目,然后选择 Run As -> Run Configurations ,为Android目标平台创建一个新的Run Configuration 。例如,这个演示应用程序如下所示在Genymotion VD上:HelloLambda应用程序
您可以在
LogCat 窗口中观察到具有简单lambda表达式的代码段正常工作
来源:在Android开发人员工具中使用Java 8 Lambda表达式
好。
请点击此链接获取最新信息。使用Java 8语言功能
老答案
截至Android N预览版Android支持Java 8的有限功能,请参阅Java 8语言功能
To start using these features, you need to download and set up Android
Studio 2.1 and the Android N Preview SDK, which includes the
required Jack toolchain and updated Android Plugin for Gradle. If you
haven't yet installed the Android N Preview SDK, see Set Up to Develop
for Android N.支持的Java 8语言功能和API
Android does not currently support all Java 8 language features.
However, the following features are now available when developing apps
targeting the Android N Preview:默认和静态接口方法
Lambda表达式(也可在API级别23及更低版本上使用)
可重复的注释
方法参考(也可在API级别23及更低版本上获得)
Android支持一些额外的Java 8功能,您可以从Java 8语言功能中查看完整的详细信息
更新
Note: The Android N bases its implementation of lambda expressions on
anonymous classes. This approach allows them to be backwards
compatible and executable on earlier versions of Android. To test
lambda expressions on earlier versions, remember to go to your
build.gradle file, and set compileSdkVersion and targetSdkVersion to
23 or lower.更新2
现在Android studio 3.0稳定版本支持Java 8库和Java 8语言功能(没有Jack编译器)。
是的,Android现在支持Java 8(24.1.17)现在有可能
但是你需要在java 1.8上运行你的设备rom并启用"jackOptions"来运行它。
Jack是运行Java 8的新Android编译器的名称https://developer.android.com/guide/platform/j8-jack.html
将这些行添加到build_gradle
1
2
3
4
5
6
7
8
9
10
11
12
13 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插件。
Android使用从Java 6分支出来的Java。
从Android SDK版本19开始,您可以通过执行此操作来使用Java 7功能。尚未完全支持Java 8(尚未)。
Android OFFICIALLY从Android N开始支持Java 8。
功能公告在这里,Java 8语言公告是:
Improved Java 8 language support - We’re excited to bring Java 8 language features to Android. With Android's Jack compiler, you can
now use many popular Java 8 language features, including lambdas and
more, on Android versions as far back as Gingerbread. The new features
help reduce boilerplate code. For example, lambdas can replace
anonymous inner classes when providing event listeners. Some Java 8
language features --like default and static methods, streams, and
functional interfaces -- are also now available on N and above. With
Jack, we’re looking forward to tracking the Java language more closely
while maintaining backward compatibility.
原生Java 8到达android!最后!
remove the Retrolambda plugin and retrolambda block from each module's
build.gradle file:To disable Jack and switch to the default toolchain, simply remove the
jackOptions block from your module’s build.gradle file要开始使用受支持的Java 8语言功能,请将Android插件更新为3.0.0(或更高版本)
从Android Studio 3.0开始,Android现在支持Java 8语言功能:
- 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()
将这些行添加到应用程序模块的build.gradle中,以通知项目语言级别:
1
2
3
4
5 android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}通过将以下内容添加到gradle.properties文件来禁用对Java 8语言功能的支持:
1 android.enableDesugar=false你完成了!你现在可以使用原生java8了!
我们可以使用Java 8:
在build.gradle(Project:myProject)中添加以下内容
1 classpath 'me.tatarka:gradle-retrolambda:x.x.x' //x.x.x is recent version在build.gradle(Module:myModule)中添加以下内容
1
2
3
4
5
6 apply plugin: 'me.tatarka.retrolambda'
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
Android Studio 3.0开始为某些Java 8语言功能提供内置支持,这些功能包括:
- Lambda表达式
- 方法参考
- 类型注释(信息在编译时可用,但在运行时不可用)
- 重复注释
- 默认和静态接口方法
同样从API级别24开始,可以使用以下Java 8 API:
java.util.stream java.util.function java.lang.FunctionalInterface java.lang.annotation.Repeatable java.lang.reflect.AnnotatedElement.getAnnotationsByType(Class) java.lang.reflect.Method.isDefault() 除此之外,
try-with-resources 支持已扩展到所有Android API级别。承诺将来会添加更多Java 8功能。
To start using supported Java 8 language features, update the Android
plugin to 3.0.0-alpha1 (or higher) and add the following to your
module’s build.gradle file:
1
2
3
4
5
6
7 android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}欲了解更多详情,请访
https://developer.android.com/studio/write/java8-support.html
简单的方法您可以为android项目启用java 1.8支持。
打开项目结构
通过按Ctrl + Shift + Alt + S
或者
File > Project Structure 如图所示,在Project Structure对话框中将Source Compatibility and Target Compatibility更新为1.8(单击File> Project Structure)。
或者你可以使用gradle
1
2
3
4
5 android {
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}同步项目。就是这样!
注意:可以为Android Studio 3.0.0或更高版本启用Java 1.8支持。请参阅文档以进一步阅读
差不多两年前,当我问这个问题时,答案确实是"正式"否定,但正如ekcr1的回答所指出的,如果你使用retrolamba,你可以得到一个最受期待的功能(lambdas)。当时我还在使用eclipse,因为Android Studio处于"预览"模式,所以我从未尝试过这条道路。
今天,我认为"官方"答案仍然没有,虽然retrolamba似乎仍然是一个很好的方式,但对于那些愿意采取某种"非官方"路线的人来说,还有另一种选择,即Kotlin。
今天Kotlin达到了1.0.0。对于那些不熟悉Kotlin的人,可以在他们的网站上找到更多信息:
https://kotlinlang.org
或观看杰克沃顿给出的这个演讲视频
添加此配置build.gradle和sync gradle:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
// or
//sourceCompatibility 1.8
//targetCompatibility 1.8
}
}
最新消息:
谷歌宣布,通过Android N和Android Studio 2.1+,平台将支持Java 8.同时发布了稳定版的Studio 2.1。
最后我们可以使用lambda表达式。 for循环中没有更多列表过滤器。 Horeeey。
Google刚宣布Java 8将由Android本机支持,并且Jack工具链将弃用:
We've decided to add support for Java 8 language features directly into the current javac and dx set of tools, and deprecate the Jack toolchain. With this new direction, existing tools and plugins dependent on the Java class file format should continue to work. Moving forward, Java 8 language features will be natively supported by the Android build system. We're aiming to launch this as part of Android Studio in the coming weeks, and we wanted to share this decision early with you.
更多信息:
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
是。我们很快就会使用Java 8!
We've decided to add support for Java 8 language features directly into the current javac and dx set of tools, and deprecate the Jack toolchain. With this new direction, existing tools and plugins dependent on the Java class file format should continue to work. Moving forward, Java 8 language features will be natively supported by the Android build system. We're aiming to launch this as part of Android Studio in the coming weeks, and we wanted to share this decision early with you.
https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html
将此行添加到模块lvl build gradel中
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
我想我会为那些寻找更新的东西的人发布一个更新的答案。
目前,Android和Android Studio正在支持Java 8功能的一个子集。根据其网站上的Android文档,Google表示:
Support for Java 8 language features requires a new compiler called Jack. Jack is supported only on Android Studio 2.1 and higher. So if you want to use Java 8 language features, you need to use Android Studio 2.1 to build your app.
If you already have Android Studio installed, make sure you update to the latest version by clicking Help > Check for Update (on Mac, Android Studio > Check for Updates). If you don't already have the IDE installed on your workstation, download Android Studio here.
Supported Java 8 Language Features and APIs
Android does not support all Java 8 language features. However, the following features are available when developing apps targeting Android 7.0 (API level 24):
- Default and static interface methods Lambda expressions (also available on API level 23 and lower)
- Repeatable annotations
- Method References (also available on API level 23 and lower)
- Type Annotations (also available on API level 23 and lower)
此外,还提供以下Java 8语言API:
Reflection and language-related APIs:
- java.lang.FunctionalInterface
- java.lang.annotation.Repeatable
- java.lang.reflect.Method.isDefault() and Reflection APIs associated with repeatable annotations, such as
AnnotatedElement.getAnnotationsByType(Class)Utility APIs:
- java.util.function
- java.util.stream
In order to use the new Java 8 language features, you need to also use the Jack toolchain. This new Android toolchain compiles Java language sources into Android-readable DEX bytecode, has its own .jack library format, and provides most toolchain features as part of a single tool: repackaging, shrinking, obfuscation and multidex.
Here is a comparison of the two toolchains used to build Android DEX files:
1
2
3
4 Legacy javac toolchain:
javac (.java → .class) → dx (.class → .dex)
New Jack toolchain:
Jack (.java → .jack → .dex)
我在3年前问过这个问题,显然这些年来答案发生了变化。正如上面的许多人已经回答的那样,在某个时候,答案变成了答案。我从未更新过接受的答案,因为当时答案是正确的。 (我不确定堆栈溢出策略是什么)
我只是想为仍在搜索此主题的人添加另一个答案。截至2017年5月17日,谷歌还宣布Kotlin也是Android开发的官方语言。
我还没有找到正式的新闻稿,但我确实观看了一些宣布它的谷歌I / O视频。以下是Kotlin团队在公告中发布博客文章的链接。
添加以下内容为我解决了问题(Android studio 2.3.2):
build.gradle(项目)
1
2
3
4
5
6
7
8
9
10
11 buildscript {
repositories {
...
jcenter()
}
dependencies {
...
classpath 'me.tatarka:gradle-retrolambda:3.4.0' // DEPENDENCY
...
}
}build.gradle(模块:app)
1
2
3
4
5
6
7
8
9
10
11 apply plugin: 'com.android.application'
apply plugin: 'me.tatarka.retrolambda' //PLUGIN
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
} // SET JAVA VERSION
...
}
Android Studio现在支持Java 8的一个子集。只需从下面的窗口调整源和目标兼容性:
文件 - >项目结构
更多信息见下面的链接。
https://developer.android.com/studio/write/java8-support.html
我在Stack Overflow上写了类似问题的类似答案,但这是答案的一部分。
Android Studio 2.1:
新版Android Studio(2.1)支持Java 8功能。以下是Android Developers blogspot帖子的摘录:
... Android Studio 2.1 release includes support for the new Jack compiler and support for Java 8.
...
To use Java 8 language features when developing with the N Developer Preview, you need to use the Jack compiler. The New Project Wizard [File→ New→ Project] generates the correct configurations for projects targeting the N.
在Android Studio 2.1之前:
Android还不支持Java 1.8(它最多只支持1.7),所以你不能使用像lambdas这样的Java 8功能。
这个答案提供了有关Android Studio兼容性的更多细节;它指出:
If you want to use lambdas, one of the major features of Java 8 in Android, you can use gradle-retrolamba
如果您想了解有关使用
gradle-retrolambda 的更多信息,那么这个答案会提供很多详细信息。
所有上述解决方案似乎都没有在2019年使用最新的Android Studio 3.4+。
我找到了一个完美的最新解决方案,可以将您的Android项目迁移或升级到Java 8。
解:
单击文件 - >项目结构 - >模块 - >属性选项卡。将源兼容性和目标兼容性更改为1.8(Java 8)