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

执行react-native run-android遇OrientationPackage冲突编译失败求助

解决react-native run-android编译时OrientationPackage冲突问题

问题本质

你碰到的是两个不同npm包提供了同名的OrientationPackage类——分别来自com.github.yamill.orientation和org.wonday.orientation,RN自动生成的PackageList.java会同时引入这两个类,导致编译时出现引用歧义。直接修改自动生成的文件没用,因为每次构建都会重新生成这个文件。

解决方案

1. 卸载其中一个冲突包(最直接有效)

先打开你的package.json,检查是否同时装了两个方向相关的包:

  • react-native-orientation(对应com.github.yamill.orientation)
  • react-native-orientation-locker(对应org.wonday.orientation)

找到后,卸载其中一个不需要的:

# 卸载react-native-orientation
npm uninstall react-native-orientation
# 或者卸载react-native-orientation-locker
npm uninstall react-native-orientation-locker

然后清理缓存,重新构建:

# 重置RN缓存
npx react-native start --reset-cache
# 清理Android构建缓存
cd android && ./gradlew clean && cd ..
# 重新运行项目
react-native run-android

2. 禁用其中一个包的自动链接(仅当必须保留两个包时)

如果确实需要同时保留两个包,就修改RN的自动链接配置:

  • 在项目根目录创建/编辑react-native.config.js,添加以下内容:
module.exports = {
  dependencies: {
    // 替换成你要禁用自动链接的包名,比如react-native-orientation
    'react-native-orientation': {
      platforms: {
        android: null, // 关闭该包在Android端的自动链接
      },
    },
  },
};

同样执行缓存清理和重新构建:

npx react-native start --reset-cache
cd android && ./gradlew clean && cd ..
react-native run-android

3. 清理残留配置(如果卸载后仍有问题)

如果卸载包后还是报错,检查以下位置是否有残留:

  • android/app/build.gradle的dependencies块,删除冲突包的引用
  • android/settings.gradle,删除冲突包的include语句
  • MainApplication.java,如果手动加了这两个Package的引用,删掉其中一个

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:25:28