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

升级react-native-incall-manager4.0.0 Android端lambda编译报错

react-native-incall-manager 4.0.0 Android端lambda编译报错解决方案

问题描述

升级react-native-incall-manager至4.0.0版本后,Android端出现JDK相关编译报错,提示不支持lambda表达式,项目内已明确配置JDK 1.8,多日排查未定位根因。本次升级组件的目的是修复Android 11系统下InCallManager.setSpeakerForceOn()、setSpeakerOn()方法不生效的问题。

环境与报错信息

  • 本地JDK环境日志:
openjdk version "11.0.14.1" 2022-02-08 LTS
OpenJDK Runtime Environment Zulu11.54+25-CA (build 11.0.14.1+1-LTS)
OpenJDK 64-Bit Server VM Zulu11.54+25-CA (build 11.0.14.1+1-LTS, mixed mode
  • React Native端编译报错:

ProximityManager.java:51: error: lambda expressions are not supported in -source 7
UiThreadUtil.runOnUiThread(() -> {
(use -source 8 or higher to enable lambda expressions)
/node_modules/react-native-incall-manager/android/src/main/java/com/zxcpoiu/incallmanager/InCallManagerModule.java:196: error: lambda expressions are not supported in -source 7
UiThreadUtil.runOnUiThread(() -> {
^ (use -source 8 or higher to enable lambda expressions)

  • Android Studio同步阶段报错:

UiThreadUtil.runOnUiThread(() -> {
^
(use -source 8 or higher to enable lambda expressions)

已提供配置截图证明项目JDK 1.8设置完成。

根因

react-native-incall-manager@4.0.0的Android模块build.gradle未显式声明Java编译版本,编译时默认使用-source 7版本,不会自动继承主项目的JDK 1.8配置,因此lambda语法无法通过编译。

解决方法

  • 全局配置法(无需修改node_modules,推荐)
    打开项目根目录下android/build.gradle文件,在allprojects配置块中添加全局Java编译参数:
    allprojects {
        // 保留原有所有配置
        tasks.withType(JavaCompile) {
            sourceCompatibility = JavaVersion.VERSION_1_8
            targetCompatibility = JavaVersion.VERSION_1_8
        }
    }
    
    配置完成后进入android目录执行./gradlew clean清理缓存,返回项目根目录重新执行打包/运行命令即可。
  • 补丁持久化法
    如果不想修改全局子项目编译配置,可直接修改依赖包配置后用patch-package持久化修改:
    1. 打开node_modules/react-native-incall-manager/android/build.gradle,在android配置块内添加编译选项:
      android {
          // 保留原有所有配置
          compileOptions {
              sourceCompatibility JavaVersion.VERSION_1_8
              targetCompatibility JavaVersion.VERSION_1_8
          }
      }
      
    2. 项目根目录执行npx patch-package react-native-incall-manager生成永久补丁,后续重新安装依赖时补丁会自动生效。

注:修复编译问题后,4.0.0版本可正常解决Android 11系统下扬声器控制方法失效的问题,无需额外适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 03:57:37