M1芯片Mac用Xcode13.4.1编译WebViewGold iOS应用报错如何解决
M1芯片Mac Xcode13.4.1编译WebViewGold报错修复方案
适用场景:搭载Apple M1系列芯片的Mac设备、Xcode 13.4.1版本、编译WebViewGold封装的iOS应用
报错1:linking in object file built for iOS
这个报错的核心原因是WebViewGold预置的部分预编译Framework未提供Apple Silicon架构模拟器对应的arm64切片,常规调整架构排除项的方案未生效,是因为没有覆盖所有依赖Target、未匹配Xcode运行模式,按以下步骤操作:
- 完全退出Xcode,在访达的应用程序目录找到Xcode图标,右键选择「显示简介」,勾选「使用Rosetta打开」后重启Xcode
- 打开项目后选中项目根节点,切换到
Build Settings标签页,搜索Excluded Architectures,给**所有Target(包含Pods下的全部第三方依赖Target)**的iOS Simulator配置添加值arm64 - 同一配置页搜索
Build Active Architecture Only,将Debug模式下的对应值改为Yes,Release模式保持No - 按下快捷键
Command + Shift + K清理全量构建缓存后重新编译
报错2:ld: warning: directory not found for option
这个报错是WebViewGold模板残留了已删除依赖的搜索路径,常规清理路径的方案未生效,是因为只改了主Target配置、漏了Pods层级的残留配置,按以下步骤操作:
- 在
Build Settings标签页分别搜索Framework Search Paths、Library Search Paths两个配置项 - 逐个检查主项目Target、所有Pods Target下的路径条目,删除所有指向不存在目录的条目,重点清理旧版本广告SDK、推送SDK的残留路径(WebViewGold模板常遗留已下线的第三方SDK路径配置)
- 清理时注意保留
$(inherited)条目、以及指向当前Pods实际存放目录的有效路径,不要全量删除所有配置 - 清理完成后执行构建缓存清理操作
报错3:'Framework not found
这个报错在当前环境下基本是CocoaPods依赖未正确拉取链接、Framework嵌入模式配置错误导致,按以下步骤操作:
- 完全关闭Xcode,打开终端,通过
cd命令进入项目根目录(即.xcworkspace文件所在的目录) - 依次执行以下命令重装依赖:
sudo gem install cocoapods pod deintegrate pod cache clean --all pod install --repo-update
- 依赖重装完成后,打开目录下的
.xcworkspace文件(注意不要打开.xcodeproj后缀的项目文件),切换到主Target的General标签页,找到Frameworks, Libraries, and Embedded Content区域,将报错缺失的Framework对应的Embed选项修改为Embed & Sign;如果列表中找不到对应Framework,直接从Pods目录下的对应依赖产物中拖入即可 - 回到
Build Settings标签页搜索Other Linker Flags,检查是否存在指向已删除Framework的-framework xxx条目,如果对应Framework已经从项目中移除,直接删除该条链接参数
如果以上操作完成后仍有编译异常,打开访达进入~/Library/Developer/Xcode/DerivedData目录,删除和当前项目同名的所有缓存文件夹,重启Xcode后重新编译即可。
内容的提问来源于stack exchange,提问作者Dario Fumagalli
相关产品推荐
相关产品推荐

