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

重新构建项目时出现Desugar相关NullPointerException错误求助

解决Gradle 4.4下Desugar抛出的NullPointerException(Razorpay类相关)

我之前帮同事排查过一模一样的问题,这是Gradle 4.4版本的Desugar工具和Razorpay SDK混淆后冲突导致的,给你几个靠谱的解决办法:

1. 优先升级Gradle版本(最推荐)

Gradle 4.4的Desugar工具存在不少已知的兼容性bug,后续版本(比如4.10.2及以上的稳定版)已经修复了这类嵌套类解析的问题。你只需要修改项目根目录下的build.gradle文件:

buildscript {
    dependencies {
        classpath 'com.android.tools.build:gradle:4.10.2' // 替换成更高的稳定版也可以,比如5.x系列
    }
}

同步项目后,这个问题大概率会直接消失。

2. 调整Razorpay的混淆规则

如果暂时没法升级Gradle,那要确保Razorpay的类没有被过度混淆,避免生成Desugar无法识别的奇怪类结构。在模块的proguard-rules.pro文件里添加以下规则:

-keep class com.razorpay.** {*;}
-dontwarn com.razorpay.**

这样可以保留Razorpay SDK的所有类和方法,不会被混淆成Y_$B$$5这类难以解析的名称,自然就不会触发NullPointerException了。

3. 临时禁用Desugar(应急方案,不推荐)

如果上面两种方法都来不及测试,你可以暂时关闭Desugar功能,但这会导致项目无法使用Java 8的一些特性(比如Lambda表达式、默认方法等)。修改模块的build.gradle:

android {
    compileOptions {
        coreLibraryDesugaringEnabled false
    }
}

问题根源解释

这个错误的本质是:Gradle 4.4的Desugar工具在处理混淆后的嵌套类时,无法找到对应外部类的引用。Razorpay的SDK类被混淆后生成了Y_$B$$5这样的内部类,但对应的外部类Y_$B$可能因为混淆规则被移除或重命名,导致Desugar在调用Preconditions.checkNotNull时触发空指针异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:16:43