You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开启混淆后Jetpack Compose的setContent内异常栈不可读问题

Compose setContent代码块内混淆后异常栈不可读问题

开启代码混淆(minification)后,仅在Compose的setContent代码块内部抛出异常时,异常栈信息会变成混淆后的未知源信息;但在setContent外部抛出异常时,能得到正常可读的异常栈。

混淆配置

release {
      isDebuggable = false
      isMinifyEnabled = true
      isShrinkResources = true
      proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
      signingConfig = signingConfigs.getByName(signingCfg)
    }

setContent内抛异常的情况

测试代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
      throw InvalidClassException("Test Exception")
      Content()
    }
  }

得到的混淆后异常栈

Caused by: java.io.InvalidClassException: Test Exception
                    at g4.a.h(Unknown Source:31)
                    at h0.c.h(Unknown Source:53)
                    at androidx.compose.ui.platform.k1.a(Unknown Source:24)
                    at s.l0.h(Unknown Source:163)
                    at h0.c.h(Unknown Source:53)
                    at y9.z.b(Unknown Source:151)
                    at androidx.compose.ui.platform.l1.a(Unknown Source:282)
                    at y.v.a(Unknown Source:38)
                    at y.v.h(Unknown Source:15)
                    at h0.c.h(Unknown Source:53)
                    at y9.z.b(Unknown Source:151)
                    at androidx.compose.ui.platform.w0.a(Unknown Source:484)
                    at androidx.compose.ui.platform.f3.a(Unknown Source:170)
                    at androidx.compose.ui.platform.f3.h(Unknown Source:27)
                    at h0.c.h(Unknown Source:53)
                    at y9.z.a(Unknown Source:216)
                    at androidx.compose.ui.platform.f3.a(Unknown Source:144)
                    at androidx.compose.ui.platform.f3.h(Unknown Source:15)
                    at h0.c.h(Unknown Source:53)
                    at d5.a.O(Unknown Source:14)
                    at a0.q.q(Unknown Source:117)
                    at a0.q.k(Unknown Source:10)
                    at a0.x.n(Unknown Source:33)
                    at a0.e2.a(Unknown Source:33)
                    at a0.x.o(Unknown Source:8)
                    at a0.x.g(Unknown Source:2)
                    at androidx.compose.ui.platform.g3.invoke(SourceFile:24)
                    at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(Unknown Source:6)
                    at androidx.compose.ui.platform.WrappedComposition.g(Unknown Source:8)

setContent外抛异常的情况

测试代码

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    throw InvalidClassException("Test Exception") // 能得到正常可读的异常栈
    setContent {   
      Content()
    }
  }

结果

此时可以得到正常可读的异常栈信息。

已尝试的操作

  • 更新所有Compose相关依赖至以下版本:
agp = 8.2.0
kotlinCompilerExtensionVersion = "1.5.12"
kotlin = 1.9.23
  • 问题仍未解决,目前唯一临时解决办法是设置isMinifyEnabled = false,怀疑该问题与R8/Proguard相关。

内容的提问来源于stack exchange,提问作者Matin Petrulak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 13:17:54