【发布时间】:2019-01-10 13:31:35
【问题描述】:
我刚刚尝试在 Android 4.0 设备上运行使用 Java 8 编译的应用程序。虽然我习惯于仔细查看 Android 文档中的 Android API 级别,以确保我只使用 Android 4.0 上可用的 API,但我不太习惯确保我没有使用Java 本身的任何功能在 Android 4.0 上不可用。
考虑以下代码,它尝试从 View 类导入 initializeScrollbars() API,因为无论出于何种原因,它一直是来自官方 SDK 的 removed:
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 本身。
那么,任何人都可以对此有所了解吗?我知道它一定是在某个非常明显的地方,但我似乎没有找到它......
【问题讨论】: