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

React Native 0.73升级后react-native-vision-camera编译Kotlin失败求助

问题

将React Native项目从0.72.7版本升级到0.73版本后,原本使用的react-native-vision-camera 3.6.10在构建Android APK时出现以下编译错误:

> Task :react-native-vision-camera:compileDebugKotlin
e: file:///Users/user/Documents/project/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/CameraDevicesManager.kt:74:3 'hasConstants' overrides nothing
e: file:///Users/user/Documents/project/node_modules/react-native-vision-camera/android/src/main/java/com/mrousavy/camera/frameprocessor/VisionCameraProxy.kt:38:58 Only safe (?.) or non-null asserted (!!.) calls are allowed on a nullable receiver of type JavaScriptContextHolder?

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-vision-camera:compileDebugKotlin'.
> A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
   > Compilation error. See log for more details

尝试将Kotlin版本从1.8.0降级到1.6.20和1.7.21,问题未解决且错误增多,需要修复该问题或找到适配的Kotlin版本。

解决方案

1. 升级react-native-vision-camera到适配RN 0.73的版本

react-native-vision-camera 3.6.10版本不兼容RN 0.73的API变更(比如hasConstants方法在RN 0.73中已被移除,JavaScriptContextHolder的空安全处理逻辑变更)。直接升级到v3.9.0及以上版本(该版本开始官方支持RN 0.73),步骤如下:

  • 执行卸载和重装命令:
    npm uninstall react-native-vision-camera
    npm install react-native-vision-camera@latest
    
  • 重新同步并清理项目:进入Android目录执行./gradlew clean,再重新构建。

2. 保持Kotlin版本与RN 0.73默认版本一致

RN 0.73默认使用Kotlin 1.8.20,不要随意降级。修改项目根目录下的android/build.gradle文件,确保Kotlin版本配置正确:

buildscript {
    ext {
        kotlinVersion = "1.8.20"
        // 其他配置项...
    }
    // 其余代码...
}

3. 若无法升级依赖,手动修复模块代码(临时方案)

如果暂时不能升级vision-camera,可手动修改node_modules中的代码解决编译错误:

  • 修复hasConstants错误:打开CameraDevicesManager.kt文件,删除或注释掉第74行的override fun hasConstants(): Boolean方法(RN 0.73中ReactContextBaseJavaModule已移除该方法)。
  • 修复空安全调用错误:打开VisionCameraProxy.kt文件,将第38行的contextHolder.context修改为contextHolder?.context!!(非空断言)或结合业务逻辑做空安全处理。

注意:手动修改node_modules无法持久化,建议使用patch-package工具生成补丁,方便后续安装依赖时自动应用修改:

npm install patch-package --save-dev
# 修改代码后执行
npx patch-package react-native-vision-camera

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:50:25