【问题标题】:Can the Android SDK work with JDK 1.7?Android SDK 可以与 JDK 1.7 一起使用吗?
【发布时间】:2012-01-24 14:14:17
【问题描述】:

我刚刚安装了 Android SDK R16 和 JDK 7,但我一直收到错误

Android 要求编译器合规级别为 5.0 或 6.0。而是找到了“1.7”。请使用 Android 工具 > 修复项目属性。”

我正在使用 JRE 1.7 的一些功能,所以我不能将它切换到 1.6。我该如何解决这个问题?

【问题讨论】:

  • “使用 1.7 JRE 的某些功能”是什么意思?
  • 我在 switch 语句中使用了字符串,JRE 1.6 (JDK 6) 不支持该字符串
  • 并且您已经验证字节码将成功转换为Android(不支持JDK 7)可以处理的东西? stackoverflow.com/questions/7153989/…
  • 不,我只是假设它会起作用。
  • 就像 ATOM 提到的,你必须在编译期间保持与 Java 5/6 的源代码兼容性,所以不幸的是 switch 语句中没有字符串。有人知道 Android 什么时候会支持编译器合规级别 7.0?

标签: java android


【解决方案1】:

值得一提的是,如果您想使用 API 21(Android 5.0 Lollipop)编译项目,您必须使用 JDK 1.7。

API 21 不再适用于 JDK 1.6。

【讨论】:

  • 是的,当我尝试在 /res/values-v21/styles.xml 中设置 Material 主题时,我才发现了这一点。解决方案:从oracle.com/technetwork/java/javase/downloads/…安装Java 7u72然后运行/usr/libexec/java_home -v 1.7(在mac终端上)获取路径,然后在And.Studio中,右键单击您的项目->打开模块设置-> SDK位置->更新JDK位置java_home 命令显示的内容
【解决方案2】:

从 ADT (22.6) 开始,可以使用 Java 1.7 功能:

重要提示:

try-with-resources 需要 API 19 及更高版本:

增加了对 Java 7 语言功能的支持,例如 multi-catch, try-with-resources 和菱形运算符。这些功能需要 版本 19 或更高版本的构建工具。 Try-with-resources 需要 minSdkVersion 19;其余的新语言功能需要 minSdkVersion 8 或更高版本。

【讨论】:

  • 我想从发行说明中强调,如果您使用 try-with-resources,您的应用只需 minSdk 19。否则,您将需要 minSdk 8。(我最初只阅读了您答案的第一行,这意味着其他情况。)
  • 是的,这就是我的意思。如果你使用它,你将需要 minSdk 19 。这也是那里写的。现在我们需要等待 JAVA 1.8 的支持。 :)
  • 我只想添加 java.util.Objects 类只能从 API 19 开始使用(因为它已从该 API 级别添加)。
  • @Kap 很有趣。没听说过这个包。 “deepEquals”是否只对数组有不同的作用,而对其余的则作为“equals”?
  • 里面有一些漂亮的东西...我已经开始使用它,但是对 API 18 的测试返回了 ClassNotFound。你可否确认?也许我做错了什么。 Here是源代码。
【解决方案3】:

是的,您可以使用 Java 1.7 进行 Android 开发。您必须在编译期间保持与 Java 6 的源代码兼容性,只有下一个问题是因为更改了 jarsigner 的默认算法。

这已在 Stack Overflow 问题 Android signing with Ant 中得到解决(解决方法)。

但它是already fixed in Ant。所以官方很快就会直接在Android SDK中支持。

如果您想使用Maven 进行构建,解决方案在What kind of pitfals exist for the Android APK signing

更新:Ant、Maven Plugin 或 Gradle 的最新版本与 Java 7 或 Java 8 没有问题,所以这已经过时了。

【讨论】:

  • 有点过时了。从 build tools 19 开始,Android 全面支持 Java 1.7。因此您可以将 1.7 设置为编译的源和目标。对此的支持来自 Android studio 0.3.2。 Android kitkat 完全支持 JAVA 1.7 API,但 1.7 中的大部分语言功能您也可以在旧机器人上使用。除了“尝试资源”。
  • 在Android API8(Froyo)项目之上使用安全吗?
  • 是的,但是支持 API 8 只是浪费时间。
  • 很遗憾,我们 14% 的会员不是废物。
  • @ATom 我正在寻找 Java 8 兼容性,但我什么也没找到。您从哪里获取有关 Java 7 支持的信息?
【解决方案4】:

您只需要在您的 PC 上安装 1.6。我有同样的问题。安装 1.6 JDK,并将其添加为已知 JDK,但实际上不要为您的项目选择它。

【讨论】:

  • 所以这行不通。我将 JDK 1.6 添加到已安装的 JRE 选项卡中,但仍然出现错误。我就是您将其添加到已知 JDK 的意思?
  • 是的,这正是我所说的,因为我遇到了同样的问题,它对我有用。
  • 对,我想我的问题是我想使用 JRE 1.7 但由于 android SDK 不支持它而不能。
猜你喜欢
  • 2018-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多