开启混淆后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
相关产品推荐
相关产品推荐

