I'm trying to migrate from ThreeTen Android Backport to java.time with desugaring. On debug builds this works perfectly, but on release builds (minifyEnabled = true
) I get a weird error on runtime.
After a ZonedDateTime is serialized (passing a Bundle in an Intent), the ZonedDateTime is lacking the TimeOffset:
before: 2022-06-07T02:00+02:00
after: 2022-06-07T02:00null
I'm using gradle version 7.2.1 (AGP 7.3.3) in combination with the basic backup from the android docs listed above. (changing it to java 11 does not fix the problem)
android {
...
compileOptions {
// Flag to enable support for the new language APIs (java.time)
coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_1_8
}
...
}
dependencies {
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
}
Do I miss any configuration (e.g. in proguard-rules)? How can I fix this issue?
UPDATE 1: 09.06.2022
Here is a minimal reproducable example of the problem. Keep in mind that this only happens with minifyEnabled = true
val zonedDateTime = ZonedDateTime.parse("2022-06-07T02:00:00.000+02:00", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSVV"))
// zonedDateTime.toString() == "2022-06-07T02:00+02:00"
val bundle = Bundle()
bundle.putSerializable("date", zonedDateTime)
bundle.getSerializable("date") // .toString() == "2022-06-07T02:00null"