Xcode模拟器报_OBJC_CLASS_$_AppsFlyerLib未定义错误如何解决
错误产生原因
- AppsFlyer SDK二进制架构缺失:当前使用的AppsFlyer SDK版本未包含对应模拟器的CPU架构切片,尤其是Apple Silicon(M系列)Mac上运行的arm64架构模拟器,旧版SDK仅包含物理设备的arm64架构切片,未适配arm64模拟器,因此真机运行正常,模拟器链接时找不到对应类符号。
- 构建设置架构过滤规则错误:项目或Pod依赖的构建设置中
EXCLUDED_ARCHS字段错误排除了模拟器对应的架构,导致编译阶段没有链接对应模拟器架构的SDK二进制文件。 - CocoaPods本地缓存损坏:本地缓存的AppsFlyer Pod包存在架构切片丢失的问题,即便执行
pod install --repo-update也会复用损坏的缓存包,无法解决问题。
修复方案
方案1:升级AppsFlyer SDK(优先推荐)
将Podfile中AppsFlyerLib的版本指定为6.8.0及以上,该版本开始原生支持Apple Silicon模拟器的arm64架构,修改后执行以下命令更新依赖:pod update AppsFlyerLib
更新完成后重新构建项目即可。
方案2:配置架构排除规则(适用于无法升级SDK的旧项目)
如果项目暂时无法升级SDK,可以强制模拟器使用x86_64架构运行(通过Rosetta转译兼容):
- 打开项目Target → Build Settings → 搜索
EXCLUDED_ARCHS - 在Debug模式的「Any iOS Simulator SDK」选项中添加
arm64 - 在Podfile末尾添加以下配置,避免每次执行pod install覆盖Pod的构建设置:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end end
- 执行
pod install重新生成项目配置后再构建。
方案3:清理CocoaPods缓存
如果前两种方案无效,先清除本地缓存的AppsFlyerLib包再重新拉取:
- 执行命令清理缓存:
pod cache clean AppsFlyerLib --all - 再执行
pod install --repo-update重新拉取依赖后构建。
内容的提问来源于stack exchange,提问作者tHatpart
相关产品推荐
相关产品推荐

