React-Native安装vision-camera-code-scanner后Xcode编译出现arm64重复符号错误
问题
我有一个运行正常的React-Native项目,但在安装vision-camera-code-scanner后,项目无法在Xcode中编译,出现如下错误:
duplicate symbol '_OBJC_CLASS_$_GDTCCTCompressionHelper' in: /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-xxx/Build/Products/Debug-iphoneos/GoogleDataTransport.o /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-xxx/Build/Products/Debug-iphoneos/GoogleDataTransport/libGoogleDataTransport.a(GDTCCTCompressionHelper.o) duplicate symbol '_OBJC_METACLASS_$_GDTCCTCompressionHelper' in: /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-xxx/Build/Products/Debug-iphoneos/GoogleDataTransport.o /Users/XXX/Library/Developer/Xcode/DerivedData/XXX-xxx/Build/Products/Debug-iphoneos/GoogleDataTransport/libGoogleDataTransport.a(GDTCCTCompressionHelper.o) [...] ld: 105 duplicate symbols for architecture arm64
查看日志可知,重复符号存在于以下文件中:
GoogleDataTransport.o libGoogleDataTransport.a GoogleUtilities_Environment.o libGoogleUtilities.a GoogleUtilities_Logger.o libGoogleUtilities.a GoogleUtilities_UserDefaults.o libGoogleUtilities.a FBLPromises.o libPromisesObjC.a
我尝试查找重复文件但未成功,作为React-Native新手,请问该如何修复这个重复符号错误?
解决方案
清理缓存与派生数据
- 清理React Native缓存:
npx react-native clean - 打开Xcode,执行
Product->Clean Build Folder(快捷键Cmd+Shift+K);手动删除Xcode派生数据:找到路径~/Library/Developer/Xcode/DerivedData,删除对应项目的文件夹。
- 清理React Native缓存:
统一依赖版本解决冲突
该错误源于vision-camera-code-scanner与现有项目的Google相关库版本冲突,导致重复编译符号:- 查看依赖树定位冲突库:
yarn why GoogleDataTransport # npm用户执行:npm ls GoogleDataTransport - 在
package.json中添加版本强制统一配置:- Yarn用户添加
resolutions字段:"resolutions": { "GoogleDataTransport": "9.2.4", "GoogleUtilities": "7.11.5", "PromisesObjC": "2.3.1" } - npm用户添加
overrides字段:"overrides": { "GoogleDataTransport": "9.2.4", "GoogleUtilities": "7.11.5", "PromisesObjC": "2.3.1" }
- Yarn用户添加
- 重新安装依赖:
yarn install # npm用户执行:npm install
- 查看依赖树定位冲突库:
调整Xcode编译配置
- 打开Xcode项目,选中目标TARGET,进入
Build Settings页面。 - 搜索
Other Linker Flags,添加-ObjC和-all_load(已存在则跳过)。 - 搜索
Dead Code Stripping,设置为YES,让Xcode自动剔除重复符号。
- 打开Xcode项目,选中目标TARGET,进入
重新链接原生依赖
执行命令重新安装iOS依赖:npx pod-install ios重启Xcode后重新编译项目。
内容的提问来源于stack exchange,提问作者Rafael Pereira
相关产品推荐
相关产品推荐

