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

Android 6.0以下设备缺失Java 8的BufferedReader.lines()方法问题咨询

问题原因与解决方案

核心原因

java.io.BufferedReader.lines()是Java 8新增的方法,但Android 6.0(API Level 23)及以下的系统原生未实现该方法。你配置的Java 8编译选项仅允许代码使用Java 8语法编译,无法自动填补系统库中缺失的Java 8核心方法。而Zemberek-nlp库直接调用了这个方法,低版本设备运行时找不到系统提供的实现,就会抛出NoSuchMethodError。

另外,默认情况下Android Gradle插件不会对第三方依赖库做核心库脱糖(Core Library Desugaring)处理,这也导致第三方库中的Java 8核心方法调用无法在低版本设备上兼容。

解决方案

开启Core Library Desugaring,让插件为低版本Android设备补充缺失的Java 8核心库方法,步骤如下:

  1. 在项目根目录的build.gradle(或settings.gradle,取决于Gradle版本)中添加desugar依赖
buildscript {
    dependencies {
        // 引入desugar工具依赖,版本请匹配你的AGP版本
        classpath 'com.android.tools:desugar_jdk_libs:2.0.4'
    }
}
  1. 在app模块的build.gradle中开启Desugaring并配置
android {
    compileOptions {
        // 保持已有的Java 8配置
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
        // 开启核心库脱糖
        coreLibraryDesugaringEnabled true
    }
}

dependencies {
    // 添加desugar的依赖库
    coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.0.4'
}

注意:desugar_jdk_libs的版本需要和你的Android Gradle插件版本匹配,比如AGP 7.2.x对应desugar版本2.0.x,可根据实际情况调整。

  1. 验证配置
    重新编译并在Android 6.0以下设备测试,BufferedReader.lines()的调用会被desugar替换为兼容低版本的实现,报错即可解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:18:17