写Android时用的JDK和编译Android应用时用的JDK还有Android应用运行时的JDK版本的一些疑问?
一直不明白的一个问题:我现在用的是JAVA 8
的JDK
,但是我在写Android
代码的时候却无法使用JAVA 8
的新特性(例如lambda
表达式)。这是为什么?
我听说Android
内只支持到java 6
,也就是说编译应用的时候不会使用我指定的JDK
版本,而是编译成JDK 6
的代码。是这样的么?如果是的话,那Android Studio
里面肯定带有JAVA
程序,那为什么还要指定JDK
路径?
还有写的程序调用的JAVA API
,在每个手机上都是同一个版本的么,会不会我使用了java7
的方法,但是运行的机器上的jre
的环境是java6
,然后会找不到方法异常?
总体来说,就是在编写Android
应用的时候,对JDK
版本问题有一些乱,求解答。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先普及一下,早期的Android版本是Java 6,Android 4.4版本之后可以使用Java 7。另外,早期版本也可以通过Java 7进行编译,只要你不使用
try resource
这个新特性即可。那么再回答你的问题,为什么Android不能通过Java 8编译。这里并不是说Android不能通过Java 8编译,而是因为运行在每个人手机上的Android系统跑的还是基于Java 6或者Java 7的
Dalvik
,即使你通过Java 8编译了含有新特性的Android程序,那也没法运行在这些机器上。另外,Android并非纯Java编译,在编译后还需要将class文件转换成dex文件,这就与Android SDK紧密相连了,所以Android SDK不支持Java 8,也就没法通过修改JDK来提升。Android Studio中使用的lambda表达式教程
Android Studio中使用的lambda表达式