iOS/Xcode14环境下Apollo从0.4.0(CocoaPods)升级至SPM版1.0.7遇问题求助
我之前成功把CocoaPods集成的Apollo 0.4.x升级到了1.0.7的SPM版本,遇到过一模一样的ApolloCodeGenLib错误,问题出在旧配置残留和生成步骤的细节上,给你整理下可行的解决步骤:
彻底清理旧版CocoaPods残留
检查项目的Build Phases,删掉所有和旧版Apollo相关的脚本(比如之前调用apollo-codegen的自定义脚本,或者Pods自动添加的Apollo构建脚本),这些脚本大概率还在引用ApolloCodeGenLib的路径。另外,确认项目的Frameworks、Libraries and Embedded Content里没有残留旧的Apollo相关框架。清理Xcode缓存
按Command+Shift+K清理当前项目构建缓存,然后手动删除Derived Data:打开Finder,前往~/Library/Developer/Xcode/DerivedData,找到对应项目的文件夹删掉,避免旧缓存干扰。检查apollo-codegen-config.json配置
打开生成的配置文件,确认以下几个关键参数:schemaName是你设置的SchemasmoduleType为embeddedInTargettargetName准确对应你的MyAppName
确保没有任何和ApolloCodeGenLib或旧版路径相关的配置项。
正确关联生成的Schemas目录
把cli生成的Schemas目录拖进Xcode时,选择「Create groups」,并确保勾选的目标是MyAppName,不要勾选「Copy items if needed」——因为后续cli会自动更新这个目录的内容,复制后会导致本地副本和cli生成的内容不一致。重新生成代码
先删除现有Schemas目录,然后重新运行:./apollo-ios-cli generate生成完成后检查Schemas里的代码,确认没有
import ApolloCodeGenLib的语句(旧版生成的代码会有这个,新版1.0.7不会)。验证SPM依赖
进入Xcode的Project设置 -> Package Dependencies,确认只添加了Apollo、apollo-ios-cli、Apollo-Websocket三个包,没有额外引入ApolloCodeGenLib。
按照上面的步骤走一遍,基本就能解决ApolloCodeGenLib相关的编译错误。
内容的提问来源于stack exchange,提问作者cspam

