简体   繁体   中英

android: Desugaring of ZonedDateTime results in TimeOffset being null

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 (eg 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"

The general issue was that the desugar_jdk_libs "did not support Serialization with the default java serializer in desugared library besides collections" .

This issue is resolved in version 1.1.6 of the library:

coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.6"

Now everything wokrs as expected when minify is enabled!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM