AndroidStudio 4+是否支持Java 8语言级别(Retrolambda)?

17

因此,有人将Java 8的Lambda回溯到了Java 6和7。显然,它也适用于Android。该项目称为Retrolambda。我想在AndroidStudio上尝试一下,但似乎在最新版本中,他们已经删除了设置Java 8作为语言级别的能力(所以我在使用Lambda时不会出现编译错误)。有人知道如何解决这个问题吗?我想这可能与AndroidStudio是修改过的IntelliJ有关。任何帮助都将不胜感激。

2个回答

46

我发现您可以通过修改build.gradle文件,将"语言级别"设置为Java 8,从而在Android Studio中进行操作:

android {
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
  }
}

非常类似于Java 7。http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Using-sourceCompatibility-1.7 - Paul Verest
4
如果我有一个不是安卓项目的模块,会发生什么?我不能在那里使用这个解决方案。 - Papipo
1
这个可以运行,我可以编译和运行,但是Android Studio在编辑器中仍然标记代码为错误(红色下划线等)。有什么建议吗? - Brent Aureli
非常好的解决方案。谢谢。 - azwar_akbar
Android不支持所有Java 8语言特性,https://developer.android.com/guide/platform/j8-jack.html - Dino Tw

6

新项目中已经删除,但在创建项目后的属性中可用。请注意,我尚未使用任何新的Java 8功能进行编译,希望它能够正常工作。

右键单击您的项目,进入“打开模块设置”。我认为这里有一个错误,因为一旦我从语言设置选项卡导航离开,我就无法再返回。

为了解决这个问题,您可以编辑MyProject/.idea/misc.xml文件并查找languageLevel属性。

要在导航离开后启用项目设置,请编辑MyProject/.idea/workspace.xml文件并搜索project.structure.last.edited。将值设置为“Project”即可。


项目创建后,我找不到属性中的设置。看起来他们也在那里删除了它。请提供详细的说明。 - spierce7
那正是我所希望的。谢谢! - spierce7
1
更新:此选项刚刚被添加到最新版本的Android Studio中。 - spierce7
提醒一下:我发现在模块设置屏幕中,常规设置消失的问题与您相同(?)。 - HolySamosa
@HolySamosa 你可以尝试切换到IntelliJ。它几乎与Android Studio完全相同,因为它是Android Studio的基础,并且你可以更好地控制这种类型的东西。 - spierce7
@joe 我的 .idea/misc.xml 文件已经设置了 languageLevel="JDK_1_8"。然而,我仍然遇到这个错误。 - IgorGanapolsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接