最近在其它项目集成bugly的tinker热修复的时候,报了Error:Java 8 language support, as requested by 'android.enableD8.desugaring= true' in your gradle.properties file, is not supported when 'android.useDexArchive= false'. 由于这个项目是指定 java8,其它项目低于8的没有这个问题。
什么是D8 ?D8的功能是把java字节码转化成dex代码,D8作为DX的一个替换方案。
D8的使用:
Android Studio 3.0 : 需要主动在gradle.properties文件中新增:android.enableD8=true
Android Studio 3.1或之后的版本D8将会被作为默认的Dex编译器。如果遇到问题,你可以通过修改gradle.properties文件里的一个属性恢复到DX android.enableD8=false
如果想详细查看有关D8的知识可以看这个博客:Android Studio 3.0+ 新Dex编译器D8 Desugar R8
如何解决这个问题:
当前项目配置:
classpath 'com.android.tools.build:gradle:3.2.1'
// 集成Bugly热更新aar(本地集成使用方式)
implementation 'com.tencent.bugly:crashreport_upgrade:latest.release'
//1. 指定tinker依赖版本(注:应用升级1.3.5版本起,不再内置tinker)
implementation 'com.tencent.tinker:tinker-android-lib:1.9.9'
按照提示新增了:gradle.properties文件
内容为:
android.enableD8.desugaring = true android.useDexArchive = true
结果还是提示上面的错误,将 'com.tencent.bugly:crashreport_upgrade:latest.release' 改为: 'com.tencent.bugly:crashreport_upgrade:1.3.6' 具体为1.3.6的版本,就可以了。
但是会出现警告,但是可以编译通过了。希望官方尽快修复这个问题吧。
github上面已经有人提出这个问题了:https://github.com/BuglyDevTeam/Bugly-Android-Demo/issues/67