升级Android Gradle Plugin至4.1.3后release包出现java.lang.AssertionError崩溃
问题根因及解决方案
你遇到的release包触发java.lang.AssertionError崩溃的问题,主要是AGP 4.1+的构建规则调整和项目配置不匹配导致的,可按以下顺序排查修复:
- 检查release构建类型配置:确认app模块build.gradle的
buildTypes.release块下,没有手动设置buildConfigField "boolean", "DEBUG_ASSERTIONS", "true",AGP 4.1+默认仅debug构建开启断言,release默认关闭,手动配置会覆盖默认行为。 - 检查混淆规则:确认你的ProGuard/R8规则没有禁用代码优化,也没有额外保留断言相关类/逻辑。推荐release构建使用官方默认的优化版混淆配置
proguard-android-optimize.txt,该配置会自动在构建阶段移除所有assert语句,不会触发断言崩溃。 - 排查代码写法:不要在
assert语句中写带副作用的代码(比如assert (index++ < list.size)),即使断言被移除也可能导致逻辑异常,特殊场景下也会导致混淆无法正常移除断言逻辑。
如果需要快速修复上线,可直接在release构建配置中强制关闭断言,示例配置如下:
android { buildTypes { release { // 强制关闭断言开关 buildConfigField "boolean", "DEBUG_ASSERTIONS", "false" // 用官方优化版混淆配置确保断言被移除 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 其余原有配置保持不变 } } }
内容的提问来源于stack exchange,提问作者tugceaktepe
相关产品推荐
相关产品推荐

