React Native 0.75.x Android项目编译报错:Unresolved reference: BackgroundStyleApplicator
我之前也踩过这个坑,这大概率是react-native-keyboard-controller库和React Native 0.75.x的版本兼容问题导致的,下面是几个亲测有效的解决办法:
升级到兼容的库版本
旧版本的react-native-keyboard-controller可能还没适配RN 0.75的代码变化,直接升级到最新稳定版就能解决大部分兼容问题。执行以下命令更新:# npm 命令 npm install react-native-keyboard-controller@latest # 或者 yarn 命令 yarn add react-native-keyboard-controller@latest更新完成后,清理Android构建缓存再重新编译:
cd android && ./gradlew clean && cd .. && npx react-native run-android确认版本兼容性范围
你可以查看react-native-keyboard-controller的package.json或者项目说明文档,确认当前使用的库版本是否明确支持RN 0.75.x。如果库还没适配这个版本,要么等待官方发布兼容更新,要么临时降级React Native到库支持的稳定版本(比如0.74.x系列),降级命令示例:npx react-native downgrade 0.74.3临时手动修复(不推荐长期使用)
如果升级库后还是出现这个错误,有可能是库的打包文件遗漏了BackgroundStyleApplicator.kt类。你可以到node_modules/react-native-keyboard-controller/android/src/main/java/com/reactnativekeyboardcontroller/views/background/目录下检查是否存在这个文件:- 如果不存在,可以从库的官方源码中找到该文件,复制到对应目录后再重新编译项目。
注意:这个方法只是临时救急,后续执行npm install或yarn install时,修改的文件会被覆盖,所以只适合紧急场景使用。
- 如果不存在,可以从库的官方源码中找到该文件,复制到对应目录后再重新编译项目。
全量清理缓存重新构建
有时候缓存堆积也会导致这类奇怪的编译错误,执行以下命令彻底清理各类缓存后再尝试构建:# 清理npm缓存 npm cache clean --force # 清理Metro缓存 npx react-native start --reset-cache # 清理Android构建缓存 cd android && ./gradlew cleanBuildCache clean缓存清理完成后,重新运行
npx react-native run-android启动项目。
内容来源于stack exchange

