Java Android:用于编译的JDK版本对支持的最低api有影响吗?
例如,api 26中添加了java.nio.file.FILES。所以,如果我根据api 26编译我的应用程序,我可以在比api 26更早的android版本中使用相同的类吗?在原始的JVM中,来自更高jdk的字节码不能在更低的jre上运行,这就是我所担心的。当我配置的minimium SDK低于使用某些功能所需的字节码时,如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
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);