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

升级AGP至8.3.0后R8混淆致重写方法变final的问题咨询

AGP 8.3.0升级后R8将重写方法转为final的解决办法

升级到AGP 8.3.0(搭配Gradle 8.4、Java 17)后,R8默认开启了一项性能优化:将非库类中无需被重写的方法标记为final,但这会破坏依赖方法重写的业务逻辑,导致应用出现异常行为。

针对大量方法被标记为final的场景,无需逐个使用-keep,可以通过以下ProGuard/R8规则直接阻止该转换:

  • 全局禁止非库类方法被标记为final:

    -dontmarknonlibraryclassesasfinal
    

    这个规则会让R8跳过对应用代码中所有类的方法的final标记,覆盖所有重写方法的场景,适合大量函数受影响的情况。

  • 若需要精细控制(比如仅针对特定包),可以使用:

    -keepclassmembers class com.your.app.package.** {
        !final <methods>;
    }
    

    把com.your.app.package.**替换为你需要保留非final方法的包路径即可。

将上述规则添加到你的proguard-rules.pro文件中,重新构建混淆后的包即可解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 20:43:08