当前位置: 首页 > 知识库问答 >
问题:

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

张权
2023-03-14

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

考虑以下代码,它试图从视图类导入initializeScrollbars()API,因为无论出于何种原因,它已从官方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

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

这让我想知道:是否有一个概述可以清楚地显示哪些Android版本和哪些Java版本?e、 g.我如何找到第一个支持Java 7的Android版本?我如何找到第一个支持Java 8的Android版本?

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

那么,有人能解释一下吗?我知道它一定在某个非常明显的地方,但我似乎没有找到它。。。

共有2个答案

暨修洁
2023-03-14

来自“支持旧版本”AOSP文档,位于https://source.android.com/setup/build/older-versions#jdk:

Ubuntu:OpenJDK 8

Mac OS X:JDK 8u45或更高版本

Ubuntu:OpenJDK 7

Mac OS X:jdk-7u71-macosx-x64.dmg

Ubuntu:Java JDK 6

Mac OS X:JavaJDK 6

Ubuntu:Java JDK 5

该文档目前(2022年2月)没有将Android与

卞博简
2023-03-14

显然,Android 4.0不支持Java7。

根据您的定义,Android不支持任何版本的Java。AndroidSDK中的javajavax类不完全匹配任何版本的Java,无论是数字版本(例如,6、7、8)还是您希望JavaSE/EE/ME的任何版本。

是否有一个概述可以清楚地显示哪些Android版本和哪些Java版本

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

Android Studio 3.0及更高版本支持所有Java 7语言功能和Java 8语言功能的子集,这些功能因平台版本而异

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

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

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

 类似资料:
  • 问题内容: 我正在为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功能集。因此,我将Time

  • 问题内容: 哪个Java SE版本适用于android studio 3.1? 我最近在Windows 10上安装了Java SE 10,但android studio始终显示Gradle同步失败消息,并显示以下错误: 问题答案: Android Studio 3.1的最大可能版本是Java8。此外,较低的API版本无法使用Java 8的某些功能。例如,我的最低API版本是16,如果尝试使用,则会

  • 主要内容:1) Red Hat Linux,2) Ubuntu Linux,3) SuSE Linux,4) Gentoo Linux,5) 其他 Linux 发行版,Linux 发行版本的选择新手往往会被 Linux 众多的发行版本搞得一头雾水,我们首先来解释一下这个问题。 从技术上来说,李纳斯•托瓦兹开发的 Linux 只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将 Linux 内核

  • 我定期更新Firefox和Chrome浏览器,当前版本为54.0.1 32位,以便使用哪个版本的Geckodriver。我尝试了 作为将来的参考,我可以在哪里找到支持的firefox浏览器和相应的geckodriver版本的列表 注意:启动浏览器中没有任何代码更改 以前的代码使用Geckodriver-V0.16.1处理较旧的firefox版本,现在更新Firefox54.0.1和Geckodri

  • 本文向大家介绍Python2.x与3​​.x版本有哪些区别,包括了Python2.x与3​​.x版本有哪些区别的使用技巧和注意事项,需要的朋友参考一下 Python的3​​.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下相容。 许多针对早期Python版本设计的程式都无法

  • junit-vintage engine是否意味着与JUnit4.12.x之前的版本兼容? 我将异常的来源缩小到VintageTestDescriptor.java中的几行(盯着第86行看) Category在JUnit4.12的实验包中,但似乎在JUnit4.7中没有。我找不到doc上的junit版本的复古引擎是兼容的。