使用react-native-camera创建简易App时遭遇Android构建错误
解决React Native Camera集成的Android Dex合并冲突错误
这个错误是典型的依赖冲突问题——你的项目里有两个不同的依赖包包含了相同的com.facebook.infer.annotation.FalseOnNull类,导致Dex合并时出现冲突。下面是几种针对性的解决办法,按优先级推荐:
方案1:排除react-native-camera中的重复依赖
直接从react-native-camera的依赖中移除冲突的包是最根本的解决方式:
- 打开项目根目录下的
android/app/build.gradle文件 - 找到
dependencies代码块,修改react-native-camera的依赖声明,添加排除规则:
dependencies { // 其他依赖保持不变 implementation(project(':react-native-camera')) { exclude group: 'com.facebook.infer.annotation' } }
方案2:启用MultiDex(兜底方案)
如果排除依赖后问题仍存在,或者你的项目本身依赖较多,可以通过启用MultiDex来支持多个Dex文件:
- 在
android/app/build.gradle的defaultConfig中添加配置:
defaultConfig { // 保留你已有的配置(比如applicationId、minSdkVersion等) multiDexEnabled true }
- 同样在
dependencies块中添加MultiDex依赖:
dependencies { // 其他依赖保持不变 implementation 'com.android.support:multidex:1.0.3' }
- 配置Application类:
- 如果你的项目有自定义Application类,让它继承
MultiDexApplication:public class MyApplication extends MultiDexApplication { // 你的现有代码 } - 如果无法修改Application的继承关系,就在
attachBaseContext方法中初始化MultiDex:@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }
- 如果你的项目有自定义Application类,让它继承
方案3:清理项目缓存后重新构建
有时候缓存文件会导致奇怪的依赖问题,执行以下命令彻底清理后重新构建:
# 进入android目录清理gradle缓存 cd android && gradlew clean # 返回根目录清理node_modules和锁文件 cd .. && rm -rf node_modules package-lock.json # 重新安装依赖 npm install # 重新link依赖(如果需要) react-native link react-native-camera # 重新运行项目 react-native run-android
优先尝试方案1,因为它直接解决了重复类的根源问题;如果无效再尝试方案2或3。
内容的提问来源于stack exchange,提问作者Sayyed Alireza Rezaei Asl
相关产品推荐
相关产品推荐

