Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android:用于编译的JDK版本对支持的最低api有影响吗?_Java_Android_Version - Fatal编程技术网

Java Android:用于编译的JDK版本对支持的最低api有影响吗?

Java Android:用于编译的JDK版本对支持的最低api有影响吗?,java,android,version,Java,Android,Version,例如,api 26中添加了java.nio.file.FILES。所以,如果我根据api 26编译我的应用程序,我可以在比api 26更早的android版本中使用相同的类吗?在原始的JVM中,来自更高jdk的字节码不能在更低的jre上运行,这就是我所担心的。当我配置的minimium SDK低于使用某些功能所需的字节码时,如java.nio.file.FILES我将从Android Studio的Lint组件或IntelliJ获得警告。它将建议我注释包含新特性的方法NoSuchMethodEr

例如,api 26中添加了java.nio.file.FILES。所以,如果我根据api 26编译我的应用程序,我可以在比api 26更早的android版本中使用相同的类吗?在原始的JVM中,来自更高jdk的字节码不能在更低的jre上运行,这就是我所担心的。

当我配置的minimium SDK低于使用某些功能所需的字节码时,如
java.nio.file.FILES
我将从Android Studio的Lint组件或IntelliJ获得警告。它将建议我注释包含新特性的方法<当从较低的操作系统(比如API 19)调用来自较新SDK(API 26)的方法时,会抛出code>NoSuchMethodError

就JDK支持而言,表示只要您使用Android Studio 3,Java 8功能的一个子集(如Lambda表达式)就可以在“任意”SDK(API级别)上使用。然而,不幸的是,大多数Java8都需要API 24

@RequiresApi(Build.VERSION_CODES.KITKAT) public void foo() {} if (Build.VERSION.SDK_INT >= 19) { foo(); } else { bar(); } import java.lang.reflect.Field; Field[] fields = Build.VERSION_CODES.class.getFields(); String osName = fields[Build.VERSION.SDK_INT + 1].getName(); Log.d("Android OsName:",osName);