只是想知道是否有人尝试过将新的Java 7语言功能用于Android?我知道Android会读取Java吐出的字节码并将其转换为dex。所以我想我的问题是它可以理解Java 7的字节码吗?
如果你使用的是Android Studio,则应自动启用Java 7 语言,而无需任何补丁。尝试资源要求API级别为19+,并且缺少NIO 2.0。
如果你无法使用Java 7功能,请参阅@Nuno关于如何编辑的答案build.gradle。
build.gradle
以下内容仅出于历史目的。
Java 7的一小部分肯定可以与Android一起使用(注意:我仅在4.1上进行过测试)。
首先,你不能使用Eclipse的ADT,因为它被硬编码为仅兼容Java编译器1.5和1.6。你可以重新编译ADT,但是我发现除了将整个Android一起重新编译之外,没有其他简单的方法可以做到这一点。
但是你不需要使用Eclipse。例如,Android Studio 0.3.2,IntelliJ IDEA CE和其他基于Javac的IDE支持编译到Android ,你甚至可以通过以下方式设置对Java 8的兼容性:
文件→项目结构→模块→(在第二个窗格中选择模块)→语言级别→(选择“ 7.0-Diamonds,ARM,multi-catch等”) 在IntelliJ上启用Java 7
这仅允许Java 7 语言功能,并且你几乎无法从中受益,因为一半的改进也来自库。你可以使用的功能是那些不依赖于库的功能:
Binary literals (0b1110111)
该try-with-resources语句-因为它需要非现有的接口“java.lang.AutoCloseable”(这个可以公开在4.4或以上版本使用)
已经存在一个问题,如何使用隐藏的和内部的API构建Android SDK?关于如何找回这些方法的知识。你只需要用我们自定义的平台替换当前平台的现有“ android.jar”引用,那么许多Java 7 API都将可用(该过程类似于Eclipse中的过程。请检查项目结构→SDK。)
除了自动关闭功能之外,(仅)还显示了以下Java 7 库功能: