求助:M1芯片Mac运行Intel环境开发的React Native项目出现Undefined symbol报错如何解决
解决M1 Mac上React Native项目Swift符号未定义的问题
我之前帮团队处理过几乎一模一样的情况!这种Undefined symbol: Swift.String.unicodeScalars.getter报错,本质上是M1芯片的arm64架构兼容性,加上旧项目依赖的Swift/Xcode版本和M1环境不匹配导致的,给你几个亲测有效的修复步骤,按从易到难的顺序来试:
调整Xcode项目架构设置
打开项目的Xcode工程,选中你的主target,进入Build Settings标签:- 找到
Architectures选项,将其修改为Standard Architectures (arm64, x86_64) - 找到
Build Active Architecture Only,把Debug和Release模式下的值都改成No - 检查
Excluded Architectures,确保没有添加arm64(如果有就删掉)
改完后先尝试重新build项目,很多时候这一步就能解决问题。
- 找到
更新Xcode版本并清理依赖缓存
旧项目用的Xcode 12.5.1对M1芯片的Swift支持存在一些已知bug,建议升级到Xcode 13.0及以上版本(App Store里就能更新)。更新完成后,清理项目缓存重新安装依赖:# 清理RN依赖 rm -rf node_modules && rm package-lock.json && npm install # 清理iOS Pod依赖 cd ios && pod deintegrate && pod install && cd ..给Podfile添加架构兼容配置
如果上面两步都没解决,打开ios/Podfile,在文件末尾添加这段配置,强制所有Pod兼容arm64和x86_64架构,并统一Swift版本:post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ARCHS[sdk=iphonesimulator*]'] = 'arm64 x86_64' # 这里的Swift版本要和你项目实际使用的版本一致,比如5.0/5.5等 config.build_settings['SWIFT_VERSION'] = '5.0' end end end保存后重新执行
cd ios && pod install。清理Xcode Derived Data
有时候缓存会导致奇怪的编译问题,打开Xcode,点击顶部菜单栏的Xcode -> Preferences -> Locations,找到Derived Data,点击旁边的箭头打开文件夹,删除里面的所有内容,然后重启Xcode再尝试build。
内容的提问来源于stack exchange,提问作者Karel Suchomel
相关产品推荐
相关产品推荐

