我知道这个问题可能是重复的,但我没有找到任何关于我的问题的答案。在我的 Android 应用中使用了 LocalDateTime
,需要 API 26,而我的设备 API 是 25。
我该怎么办?非常感谢您的帮助。
我知道这个问题可能是重复的,但我没有找到任何关于我的问题的答案。在我的 Android 应用中使用了 LocalDateTime
,需要 API 26,而我的设备 API 是 25。
我该怎么办?非常感谢您的帮助。
implementation 'com.jakewharton.threetenabp:threetenabp:1.2.1'
LocalDateTime
导入更改为:import java.time.LocalDateTime;
import org.threeten.bp.LocalDateTime;
class MyApplication : Application() {
override fun onCreate() {
super.onCreate()
AndroidThreeTen.init(this);
}
}
上述提到的库不再是最佳选择,正如JakeWharton/ThreeTenABP README中所提到的:
注意:该库的开发正在逐渐停止。请考虑在未来几个月内切换到Android Gradle插件4.0、java.time.*以及其核心库的desugaring功能。
要在旧的API级别中使用LocalDateTime
,请使用Gradle插件4.0的desugaring功能:
https://developer.android.com/studio/write/java8-support#library-desugaring
在较低版本的Android上使用LocalDateTime
需要进行解糖操作(您必须使用Android Gradle插件版本4.0或更高版本),启用Java8并在您的app.gradle
中使用以下代码:
android {
defaultConfig {
// Required when setting minSdkVersion to 20 or lower
multiDexEnabled = true
}
compileOptions {
// Flag to enable support for the new language APIs
coreLibraryDesugaringEnabled = true // <- this flag is required
// Sets Java compatibility to Java 8
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
// For Kotlin projects
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5") // <- this dependency is required
}
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5")
,我就必须在使用需要API26的代码的函数上方放置 @RequiresApi(Build.VERSION_CODES.O)
。一旦我将 coreLibraryDesugaringEnabled = true
添加到 compileOptions
中,我就不再需要这样做了。 - Lance Samaria为什么不使用Joda-Time?与在Android上使用Joda-Time的问题类似,threetenbp使用JAR资源来加载时区信息。这是Android上一种极其低效的机制。
此库将时区信息放置为标准的Android asset,并提供了一个自定义加载器,以便有效地解析它。
这些解释来自Jake Wharton的ThreeTenABP。Joda-Time具有非常大的API,带来了非常大的二进制大小和方法计数。 JSR-310和Joda-Time的创作者也表示,尽管Joda-Time没有破坏,但它确实存在设计缺陷。
如果您已经在使用Joda-Time,则除非其大小或方法计数与您相关,否则很少理由进行更改。但是对于新项目,此库以Java 8的标准API作为更小的包,不仅二进制大小和方法计数小,而且API大小也小得多。
coreLibraryDesugaringEnabled = true
,但仍然看到问题没有解决,请检查你是否安装了最新版本的 coreLibraryDesugaring,就像我的情况一样,我升级到 1.1.5
后问题得到了解决。请注意保留 HTML 标签。