maxrave-dev / maxrave-dev/SimpMusic

App crashes with UnsupportedOperationException on Android 15 when using blur and glass effects (Haze , Liquid Glass)

Open
#1,977 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Kotlin
Stars
11.4k
Forks
599
Avg merge
3d 18h
Merged PRs (30d)
7

Description

Duplicate Check
  • I confirm I searched for existing reports and found no duplicates.
Describe the Bug

The app crashes on Android 15 with a java.lang.UnsupportedOperationException, in androidx.compose.ui.platform or while rendering.

From error logs, the exception is thrown during View dispatchDraw – most likely when applying blur or 'glass' UI effects (Haze, Liquid Glass,).


Root Cause:

Android 15 (API 35) introduced stricter rendering pipeline checks. Libraries like Haze and Liquid Glass (used for real-time blur effects) rely on low-level drawing APIs that are no longer supported in Android 15, causing this exception.

Note:
i dont know about the cause i just researched about this and this is what i learnt. I know it is in be


Relevant Libraries involved:

  • dev.chrisbanes.haze:haze:1.7.2
  • liquid-glass:2.0.0-alpha03

**Full crash log and context below. (See 'Log / Error Details')

Steps to Reproduce
  1. Install the app on a device running Android 15 (my device Motorola moto g45 5G with SDK 35).
  2. Launch the app and visit any screen that shows a blur/glass effect (this only happens when im listerning for long period of time like 10-20 mins).
  3. The app crashes with an UnsupportedOperationException.
Expected Behavior

App should render blur/glass effects without crashing, or gracefully disable/fallback on Android 15 if not supported by the library.

App Version

1.1.1

Android Version

Android 15 (SDK 35)

Device Model

Motorola moto g45 5G

Custom ROM
  • I am using a custom ROM
Custom ROM Name (if applicable)

No response

Screenshots (optional)

No response

Log / Error Details

Build version: 1.1.1
Current date: 2026-04-27 11:04:43
Device: Motorola moto g45 5G
OS version: Android 15 (SDK 35)

Stack trace:
java.lang.UnsupportedOperationException
at k2.f.p(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:3)
at v.r.z(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:5)
at rf.c.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:430)
at f2.e.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:3)
at b3.n0.b(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:52)
at b3.k1.W0(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:48)
at b3.j1.b(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:27)
at z1.q.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:310)
at b3.i1.invoke(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:482)
at b3.a.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:856)
at l2.c.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:47)
at b3.a.d(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:104)
at l2.g.x(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:35)
at l2.c.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:55)
at c3.x1.f(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:99)
at androidx.compose.ui.platform.AndroidComposeView.dispatchDraw(r8-map-id-8603b06c612de919ac488c9879899034b7d5472669fcfa686d24b7f18541929c:74)
at android.view.View.draw(View.java:24935)
at android.view.View.updateDisplayListIfDirty(View.java:23782)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4533)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4506)
at android.view.View.updateDisplayListIfDirty(View.java:23736)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:703)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:709)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:807)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:6028)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:5674)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:4626)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:3178)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:10901)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1455)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1464)
at android.view.Choreographer.doCallbacks(Choreographer.java:1037)
at android.view.Choreographer.doFrame(Choreographer.java:955)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1438)
at android.os.Handler.handleCallback(Handler.java:1001)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loopOnce(Looper.java:268)
at android.os.Looper.loop(Looper.java:384)
at android.app.ActivityThread.main(ActivityThread.java:8936)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:907)

User actions:
2026-04-27 10:52:21: MainActivity created
2026-04-27 10:52:21: MainActivity resumed
2026-04-27 10:52:49: MainActivity paused
2026-04-27 11:03:17: MainActivity resumed

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the crash on Android 15 (SDK 35) while using a screen with blur or glass effects, then inspect the AndroidComposeView.dispatchDraw stack and the Haze 1.7.2 and liquid-glass 2.0.0-alpha03 integrations. Done means the affected screen no longer crashes, either while rendering the effects or with a graceful fallback, and the behavior is checked on Android 15.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, kotlin
Domain
mobile-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.