在 Android 上使用 java.time 时出现 NoClassDefFoundError

NoClassDefFoundError when using java.time on Android

我的 Android 应用程序使用的 JAR 依赖于 java.time 中的一些 类,例如 LocalTime,因此至少需要 Java 8.

网络上的多个来源指出 Android 和工具链的更高版本支持 Java 8.

我使用 gradle 构建我的应用程序,但不使用(或希望使用)Android Studio。我使用插件的 3.1.4 版(最新版本与 Gradle 4.4 兼容,该版本与 Ubuntu 的最新 LTS 一起发布,撰写本文时为 18.04)。最低 SDK 为 14,目标为 26。构建工具版本为 27.0.3。

该应用程序构建和安装正常,但当它尝试使用 类 之一时,它崩溃并出现异常:

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Ljava/time/LocalTime;

问题:

Is java.time available on Android versions with Java 8 support?

是的。

If so, what is the minimum API version?

LocalDateTime 可用于 API 26 级及更高级别,如 the JavaDocs 中所述(参见 upper-right 角)。

Anything else I am missing?

您可以考虑使用 Java 8 date/time API 中的 a backport