一直使用Java8的Stream功能来简化代码,比如如下的操作:
double num = list.stream().filter(t -> !StringUtils.isEmpty(t.字段名)).count();
在Android 11等高版本中没有问题,但运行在Android 6中就报错了,提示:No interface method stream()...
很显然低版本Android并不支持Java Stream功能,为了让其支持该功能,需要做一些额外的设置,官方称为“脱糖”。链接:
在应用模块的build.gradle中添加如下代码同步编译即可:
- android {
- defaultConfig {
- // Required when setting minSdkVersion to 20 or lower
- multiDexEnabled true
- }
-
- compileOptions {
- // Flag to enable support for the new language APIs
- coreLibraryDesugaringEnabled true
- // Sets Java compatibility to Java 8
- sourceCompatibility JavaVersion.VERSION_1_8
- targetCompatibility JavaVersion.VERSION_1_8
- }
- }
-
- dependencies {
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.0.4'
- }