React Native 0.78 Android构建失败:缺失com.facebook.react.common.annotations.internal包(LegacyArchitectureLogger导入错误)
React Native 0.78 Android构建失败:缺失com.facebook.react.common.annotations.internal包(LegacyArchitectureLogger导入错误)
我太懂你现在的头疼了——新架构的构建问题总是藏在自动生成代码和依赖适配的细节里,尤其是这种找不到类的导入错误,排查起来特别绕。结合你提供的所有信息,咱们一步步拆解解决:
一、先解决核心兼容性隐患:React版本不匹配
首先要明确:React 19.0.0目前属于非稳定的尝鲜版本,而React Native 0.78.0官方明确推荐的是React 18.2.x稳定版。新架构对React的底层依赖要求极严,非稳定版的React很容易和RN新架构工具链产生版本冲突,这大概率是你碰到LegacyArchitectureLogger导入错误的核心原因之一。
快速修复命令:
# 降级React到官方推荐的稳定版(Yarn) yarn add react@18.2.0 # 或者用npm npm install react@18.2.0
二、修复Codegen(代码生成)和自动链接问题
你提到的"No modules to process in combine-js-to-schema-cli"提示已经很明确:新架构依赖的Codegen工具没有正确识别或生成所需文件,导致自动生成的ReactNativeApplicationEntryPoint.java用了错误的导入路径。
步骤1:强制重新运行Codegen
先确保新架构环境变量正确设置,再手动触发Codegen重新生成文件:
# Mac/Linux设置新架构启用环境变量 export RCT_NEW_ARCH_ENABLED=1 # Windows用户执行:set RCT_NEW_ARCH_ENABLED=1 # 手动运行RN内置的Codegen命令 npx react-native codegen
步骤2:彻底清理所有缓存(比之前的操作更彻底)
缓存残留是新架构构建问题的重灾区,执行这套“大扫除”命令:
# 清理前端依赖缓存 rm -rf node_modules yarn cache clean rm -f package-lock.json yarn.lock # 清理Android端所有缓存 cd android ./gradlew clean rm -rf .gradle build app/build cd .. # 重新安装依赖并触发构建 yarn install RCT_NEW_ARCH_ENABLED=1 yarn android
步骤3:检查Gradle配置正确性
打开android/app/build.gradle,确认新架构的配置没有被误修改:
project.ext.react = [ newArchEnabled: System.getenv("RCT_NEW_ARCH_ENABLED") == "1", // 其他原有配置保持默认即可 ] // 确保这行代码存在且在正确位置(一般在文件顶部) apply from: "../../node_modules/react-native/react.gradle"
三、适配Vision Camera和Worklets Core的新架构配置
Vision Camera 4.6.4本身支持RN 0.78新架构,但Worklets Core的配置如果出错,会直接干扰Codegen的运行:
- 确认Worklets Babel插件配置
打开babel.config.js,确保Worklets插件正确启用(这是Vision Camera Frame Processors的必要配置):
module.exports = { presets: ['module:metro-react-native-babel-preset'], plugins: [ ['react-native-worklets-core/plugin', { workletsEnabled: true }], ], };
- 重新安装依赖确保完整性
有时候依赖包会出现损坏,重新安装Vision Camera和Worklets Core:
yarn add react-native-vision-camera@^4.6.4 react-native-worklets-core@^1.5.0
四、权宜之计:临时修复自动生成代码的导入错误
如果上面的步骤都没解决问题,你可以手动修正自动生成文件里的错误导入(注意:这个修改会被下次构建覆盖,属于紧急临时方案):
- 打开自动生成的文件:
/Users/socon/Documents/Chinmay/socon-mobile/android/app/build/generated/autolinking/src/main/java/com/facebook/react/ReactNativeApplicationEntryPoint.java - 将错误的导入语句:
替换为RN 0.78中该类的实际路径:import com.facebook.react.common.annotations.internal.LegacyArchitectureLogger;import com.facebook.react.config.LegacyArchitectureLogger; - 重新运行
yarn android
针对你疑问的直接解答
- React Native 0.78和React 19、新架构的兼容性:RN 0.78官方未针对React 19做新架构适配,仅支持React 18.2.x稳定版,这是你碰到问题的核心诱因。
- LegacyArchitectureLogger导入错误的已知方案:核心是修复Codegen的生成逻辑(重新运行Codegen、清理缓存、匹配React版本),临时方案是手动修正导入路径。
- Vision Camera对新架构的影响:只要Worklets Core和Babel插件配置正确,Vision Camera不会干扰新架构,但配置错误会导致Codegen无法解析模块,进而引发自动生成代码的错误。
内容来源于stack exchange




