gson 2.8.6导致android编译时出现java.lang.RuntimeException

gson 2.8.6导致android编译时出现java.lang.RuntimeException

执行 gradle assembleRelease 或者点击 run 时,跑不起来

详细错误日志:

error processing C:\Users\user68\.gradle\caches\transforms-2\files-2.1\421b53cccffea597abe076395f5d00de\jetified-gson-2.8.6.jar
java.lang.RuntimeException
        at org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148)
        at org.objectweb.asm.ClassReader.readModule(ClassReader.java:731)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:632)
        at org.objectweb.asm.ClassReader.accept(ClassReader.java:500)
        at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:144)
        at com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeJar(DesugaringClassAnalyzer.java:92)
        at com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:63)
        at com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda$getInitalGraphData$4(DesugarIncrementalTransformHelper.java:150)
        at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
        at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
        at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
        at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
        at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

> Task :proj.android:transformClassesWithDexBuilderForRelease FAILED
java.lang.RuntimeException: java.lang.RuntimeException

当使用 gson 2.8.6 出现这种情况,是因为 com.android.tools.build:gradle 版本过低

在项目根目录的 build.gradle 文件里

buildscript{
    ........

    dependencies {
          classpath 'com.android.tools.build:gradle:3.2.1'
    }

}

提高版本 gradle 版本号到 3.5.3 以上

github错误讨论页面

升级后便能成功编译了

如果要求编辑 gradle-wrapper.properties 文件,则在项目根目录的 gradle/wrapper/gradle-wrapper.properties 中,修改 distributionUrl 为:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip

如果公司内部采用的服务器打包,那么打包服务器上的 gradle 也需要进行升级,否则会打包失败

指定使用 java 1.8 版本

app 工程的 build.gradle 文件中添加 compileOptions

android{
    ......

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}


Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://zwc365.com/2020/09/07/gson-run-build-error

Buy me a cup of coffee ☕.