gpt4 book ai didi

java - 哪些 Android 版本运行哪些 Java 版本?

转载 作者:太空宇宙 更新时间:2023-11-03 12:26:13 24 4
gpt4 key购买 nike

我刚刚尝试在 Android 4.0 设备上运行使用 Java 8 编译的应用程序。虽然我习惯于非常小心地查看 Android 文档中的 Android API 级别以确保我只使用 Android 4.0 上可用的 API,但我不太习惯确保我没有使用Android 4.0 上不可用的 Java 本身的任何功能。

考虑以下代码,它尝试从 View 类中导入 initializeScrollbars() API,因为无论出于何种原因,它一直是 removed来自官方SDK:

try {
final Method initializeScrollbars = android.view.View.class.getDeclaredMethod("initializeScrollbars", TypedArray.class);
initializeScrollbars.invoke(this, a);
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}

虽然这段代码在我的 Android 8.0 测试系统上运行良好,但它在 Android 4.0 上不起作用。错误是:

Could not find method java.lang.ReflectiveOperationException.printStackTrace

经过一番研究,我发现 ReflectiveOperationException 在 Java 7 之前不可用,因此显然 Android 4.0 不支持 Java 7。

这让我想知道:是否有一个概述可以清楚地显示哪个 Android 版本与哪个 Java 版本一起使用?例如我怎样才能找到第一个支持 Java 7 的 Android 版本?我怎样才能找到第一个支持 Java 8 的 Android 版本?

这确实很容易找到,但我就是没看到。谷歌搜索总是导致人们询问 Android Studio 支持的 Java 版本的结果,而不是 Android 本身。

那么,任何人都可以阐明这一点吗?我知道它一定在某个非常明显的地方,但我似乎没有找到它......

最佳答案

and so, apparently, Android 4.0 does not support Java 7.

根据您的定义,Android 不支持任何版本的 Java。 Android SDK 中的 javajavax 类并不完全匹配任何版本的 Java,无论是数字版本(例如,6、7、8)还是您想要的任何版本考虑 Java SE/EE/ME。

Is there an overview which clearly shows which Android versions come with which Java version

在语言特性方面(例如,lambda 表达式),引用 the documentation :

Android Studio 3.0 and later supports all Java 7 language features and a subset of Java 8 language features that vary by platform version

在这里,“Android Studio”实际上是指编译源代码和创建 Dalvik 字节码的构建工具。当前的工具可以在所有版本的 Android 上支持所有 Java 7 和一些 Java 8 功能。其他 Java 8 功能仅在 API 级别 24+ 上可用,通常是因为它们依赖于当时才添加到 Android SDK 中的某些类。

但您的担忧似乎与类和方法有关,在这种情况下,没有任何 Java 版本到任何 Android 版本的简单映射。

此外,您正在使用反射侵入框架类,这意味着您的结果不仅会因 Android 版本而异,而且会因设备型号而异,因为设备制造商可以而且确实会更改框架类的实现.

关于java - 哪些 Android 版本运行哪些 Java 版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129834/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com