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



例如java.nio.file.FILES是在api 26中添加的。因此,如果我针对 api 26 编译我的应用程序,我可以在早于 api 26 的 android 版本中使用相同的类吗?在原始 JVM 中,来自较高 jdk 的字节码无法在较低的 jre 上运行,所以这就是我担心的。

当我配置的最低 SDK 低于使用某些功能所需的最低 SDK 时,例如java.nio.file.FILES我将收到来自 Android Studio 或 IntelliJ 的 Lint 组件的警告。它会建议我注释包含新功能的方法。 当从较低的操作系统(例如 API 19(调用较新的 SDK (API 26( 中的方法时,会引发NoSuchMethodError

@RequiresApi(Build.VERSION_CODES.基特卡特( public void foo
(( {}
if (Build.VERSION.SDK_INT>= 19( { foo((; } else { 条((; }

如果部署操作系统足够,则可以通过读取 https://developer.android.com/reference/android/os/Build.VERSION_CODES 来使用较新的代码switch

分支请参阅 https://stackoverflow.com/a/38638312/866333

导入 java.lang.reflect.Field; 字段[] 字段 = Build.VERSION_CODES.class.getFields((;字符串 osName = fields[Build.VERSION.SDK_INT + 1].getName((;Log.d("Android OsName:",osName(;

在JDK支持方面,https://developer.android.com/studio/write/java8-support 表示只要您使用Android Studio 3,Java 8功能(例如Lambda表达式(的子集就可以在"任何"SDK(API级别(上使用。然而,遗憾的是,Java 8 的大多数优点似乎都需要 API 24。

最新更新