配置Retrolambda后仍出现Java 8支持缺失相关错误的技术咨询
解决Retrolambda配置后仍出现的Java 8特性编译错误
我来帮你搞定这两个编译报错的问题,这俩其实都是因为你的项目最低API版本低于Java 8特性要求的版本,Retrolambda默认没处理好这些兼容性情况导致的,给你针对性的解决办法:
针对错误1:Invoke-customs are only supported starting with Android O (--min-api 26)
你需要在app模块的build.gradle里给Retrolambda添加额外的JVM参数,绕过这个版本检查限制:
retrolambda { jvmArgs '-noverify' }
针对错误2:Default interface methods are only supported starting with Android N (--min-api 24)
默认接口方法需要启用Core Library Desugaring来让低版本Android系统支持,具体步骤如下:
- 在app模块的
android块里启用desugaring功能(在你已有的compileOptions基础上补充):
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 // 新增这行启用desugaring coreLibraryDesugaringEnabled true } }
- 在
dependencies块中添加desugaring的核心依赖:
dependencies { coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4' }
额外提示
如果单独用某一个方案没解决问题,可以把两个方案结合起来试试。另外要确保你的Android Gradle Plugin版本不低于3.0.0,这样才能正常支持Core Library Desugaring功能。
内容的提问来源于stack exchange,提问作者jdev
相关产品推荐
相关产品推荐

