firebase-kotlin-sdk icon indicating copy to clipboard operation
firebase-kotlin-sdk copied to clipboard

JVM (Desktop) - Runtime error java.lang.NoSuchMethodError: 'android.os.Looper android.os.Handler.getLooper()'

Open mdyaseen14 opened this issue 9 months ago • 0 comments
trafficstars

In Kotlin multiplatform added GitLive Firebase Kotlin SDK as below,

In build.gradle.kts (:composeApp) - Kotlin sources commonMain dependency implementation(libs.bundles.firebase.mp)

Gradle versions file `git-live-firebase="2.1.0"

[libraries] firebase-mp-common = { module = "dev.gitlive:firebase-common", version.ref = "git-live-firebase" } firebase-mp-auth = { module = "dev.gitlive:firebase-auth", version.ref = "git-live-firebase" } firebase-mp-database = { module = "dev.gitlive:firebase-database", version.ref = "git-live-firebase" } firebase-mp-firestore = { module = "dev.gitlive:firebase-firestore", version.ref = "git-live-firebase" } firebase-mp-storage = { module = "dev.gitlive:firebase-storage", version.ref = "git-live-firebase" }

[bundles] firebase-mp = ["firebase-mp-common", "firebase-mp-auth", "firebase-mp-database", "firebase-mp-firestore", "firebase-mp-storage"] `

Following error occurs even in blank application ` Caused by: java.lang.NoSuchMethodError: 'android.os.Looper android.os.Handler.getLooper()'

at kotlinx.coroutines.CoroutineStart.invoke(CoroutineStart.kt:358)
at kotlinx.coroutines.AbstractCoroutine.start(AbstractCoroutine.kt:134)
at kotlinx.coroutines.BuildersKt__BuildersKt.runBlocking(Builders.kt:68)
at kotlinx.coroutines.BuildersKt.runBlocking(Unknown Source)
at androidx.lifecycle.MainDispatcherChecker.updateMainDispatcherThread(MainDispatcherChecker.desktop.kt:28)
at androidx.lifecycle.MainDispatcherChecker.isMainDispatcherThread(MainDispatcherChecker.desktop.kt:56)
at androidx.lifecycle.LifecycleRegistry_desktopKt.isMainThread(LifecycleRegistry.desktop.kt:20)
at androidx.lifecycle.LifecycleRegistry.enforceMainThreadIfNeeded(LifecycleRegistry.jvm.kt:302)
at androidx.lifecycle.LifecycleRegistry.setCurrentState(LifecycleRegistry.jvm.kt:106)
at androidx.compose.ui.scene.ComposeContainer.updateLifecycleState(ComposeContainer.desktop.kt:463)
at androidx.compose.ui.scene.ComposeContainer.onWindowFocusChanged(ComposeContainer.desktop.kt:225)
at androidx.compose.ui.scene.ComposeContainer.setWindow(ComposeContainer.desktop.kt:317)
at androidx.compose.ui.scene.ComposeContainer.<init>(ComposeContainer.desktop.kt:185)
at androidx.compose.ui.scene.ComposeContainer.<init>(ComposeContainer.desktop.kt:84)
at androidx.compose.ui.awt.ComposeWindowPanel.<init>(ComposeWindowPanel.desktop.kt:52)
at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:66)
at androidx.compose.ui.awt.ComposeWindow.<init>(ComposeWindow.desktop.kt:64)
at androidx.compose.ui.window.Window_desktopKt$Window$3$1.invoke(Window.desktop.kt:183)
at androidx.compose.ui.window.Window_desktopKt$Window$3$1.invoke(Window.desktop.kt:181)
at androidx.compose.ui.window.Window_desktopKt$Window$13$1.invoke(Window.desktop.kt:605)
at androidx.compose.ui.window.Window_desktopKt$Window$13$1.invoke(Window.desktop.kt:604)
at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2$1.invoke(AwtWindow.desktop.kt:70)
at androidx.compose.ui.window.AwtWindow_desktopKt$AwtWindow$2$1.invoke(AwtWindow.desktop.kt:69)
at androidx.compose.runtime.DisposableEffectImpl.onRemembered(Effects.kt:82)
at androidx.compose.runtime.CompositionImpl$RememberEventDispatcher.dispatchRememberObservers(Composition.kt:1364)
at androidx.compose.runtime.CompositionImpl.applyChangesInLocked(Composition.kt:992)
at androidx.compose.runtime.CompositionImpl.applyChanges(Composition.kt:1013)
at androidx.compose.runtime.Recomposer.composeInitial$runtime(Recomposer.kt:1150)
at androidx.compose.runtime.CompositionImpl.composeInitial(Composition.kt:649)
at androidx.compose.runtime.CompositionImpl.setContent(Composition.kt:635)
at androidx.compose.ui.window.Application_desktopKt$awaitApplication$2$1$2.invokeSuspend(Application.desktop.kt:221)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith$$$capture(ContinuationImpl.kt:33)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:100)
at java.desktop/java.awt.event.InvocationEvent.dispatch$$$capture(Unknown Source)
at java.desktop/java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
at java.base/java.security.AccessController.doPrivileged(Unknown Source)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

`

In MainDispatcherChecker.desktop.kt file isMainDispatcherThread() called, isMainDispatcherAvailable is true if firebase added and fails.

If firebase dependency removed working ok. Kindly resolve.

mdyaseen14 avatar Feb 01 '25 15:02 mdyaseen14