【问题标题】:Which versions of Android SDK support coding in which versions of Java?哪些版本的 Android SDK 支持在哪些 Java 版本中进行编码?
【发布时间】:2012-05-25 03:50:05
【问题描述】:

我正在为 Android SDK 2.3.3 编写一个 Android 应用程序,但后来我被要求在运行 Android 2.2.1 的设备上对其进行测试。所以我将目标设置为 8 而不是 10。但是 java.util.concurrent.TimeUnit 只有 Java 1.5 功能集,而不是 java.util.concurrent.TimeUnit 的 Java 1.6/1.7 功能集。因此,我将 TimeUnit 的 openjdk 6 实现放入我的 Android 应用程序包中,一切正常。

有谁知道我在哪里可以获得一些文档,这些文档给了我一个图表,例如,当使用官方 SDK 时,Android 2.2 必须使用 Java 1.5 关键字/语法/API、Android 2.3.3 进行编码可以使用 Java 1.6 关键字/语法/API 等进行编码...?

【问题讨论】:

标签: java android version android-2.2-froyo android-sdk-2.3


【解决方案1】:

您试图将 Android 视为 Java 的一个子集,但它不是。它们是完全分开的。尽管 Android 来自 Java,但与 Java 相差甚远,两者之间不再存在“版本方面”的相关性。

您可以查看的是 Android 文档。对于每条指令/命令/方法/属性,您会在右上角找到可以访问所述属性的 api 级别。

单击 api 级别将带您进入一个页面,该页面包含一个将 api 级别转换为 Android 版本的表格。

确定是否允许使用属性的简单方法是使用 eclipse 并执行您刚才所做的操作:更改目标 api 级别。那么任何对您不可用的方法或属性的调用都会产生致命错误。

【讨论】:

  • "两者之间不再存在关联。"那不是真的吗?
  • @Keyser Yahel 的观点似乎是您不应该尝试将 android 版本映射到特定的 java 版本以找出支持的内容 - 而应该直接查看 Android 文档。
  • @Keyser :如果你愿意详细说明:)
  • 好的,我发现字节码是使用 Apache Harmony en.wikipedia.org/wiki/Apache_Harmony 编译的,然后该字节码被转换为 Dalvik 字节码。我一直认为 Oracle JDK 或您使用的任何 JDK 创建了后来转换为 Dalvik 字节码的 Java 字节码。所以 Android 2.2 及之前使用了 99% 完整的 Apache Harmony JDK 5.0。 Android 2.3.3 及更高版本使用 97% 完整的 Apache Harmony Java SE 6。因此在使用官方工具编译 Android 应用时,无法使用特定于 JDK 7 及更高版本的功能。
  • @Robert :抱歉,Android 和 Java 版本之间根本没有直接关联。 Java 是 Android 发展的基础,它留下了一些东西,并根据需要添加了新的东西。尝试使用与 Android 不同的文档只会让您的生活更加艰难:)
猜你喜欢
  • 2020-05-02
  • 1970-01-01
  • 2018-06-21
  • 2018-12-25
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 2012-06-16
  • 2014-04-09
相关资源
最近更新 更多