#7854·realm-java

kapt plugin throwing error with kotlinx.coroutines 1.7.x

Author: ElegyDCreated Oct 25, 2023Updated Aug 30, 2024
LabelsT-BugO-CommunityFrequency:AlwaysRepro:AlwaysSDK-Use:LocalEncryption:Off

How frequently does the bug occur?

Always

Description

I have updated my app dependencies and some now depend on org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1 and org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1. Before, they were version 1.6.4. When building the project now, Realm throws an error Field "xyz" of type "@org.jetbrains.annotations.Nullable byte[]" is not supported. Field xyz being a variable of a RealmObject implemented in Kotlin (var xyz: ByteArray? = null).

I tried updating both to the latest version (as of now 1.7.3) but the issue remains. When explicitly downgrading to version 1.6.4 it works again: implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4!!") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4!!")

The release notes of kotlinx-coroutines 1.7.0 list some breaking changes, but I haven't been able to find more details.

Stacktrace & log output

bash
> Task :app:kaptDebugKotlin FAILED
error: Field "xyz" of type "@org.jetbrains.annotations.Nullable byte[]" is not supported.
public class Foo extends io.realm.RealmObject {
       ^
warning: Unclosed files for the types 'io.realm.foo_bar_FooRealmProxy'; these types will not undergo annotation processing

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:kaptDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.gradle.internal.KaptWithoutKotlincTask$KaptExecutionWorkAction
   > java.lang.reflect.InvocationTargetException (no error message)

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 21s
40 actionable tasks: 40 executed

Can you reproduce the bug?

Always

Reproduction Steps

  • Create an Android Studio project with Kotlin.
  • Install the Realm Java SDK.
  • Include the org.jetbrains.kotlinx:kotlinx-coroutines-core and/or org.jetbrains.kotlinx:kotlinx-coroutines-android dependency with a version >= 1.7.0: implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
  • Create a Realm Object class with a variable of type ByteArray? and a default value of null: var foo: ByteArray? = null
  • Build the project.

Version

10.17.0

What Atlas App Services are you using?

Local Database only

Are you using encryption?

No

Platform OS and version(s)

Android 14, SDK 34

Build environment

Android Studio version: Giraffe 2022.3.1 Patch 2 Android Build Tools version: 33.0.1 Gradle version: 8.0 Kotlin & kapt version: 1.9.0