Ionic iOS构建集成OneSignal时pod install报错问题咨询
Capacitor3.3.1接入OneSignal iOS端Pod install冲突解决方案
冲突本质是全局use_frameworks!/use_modular_headers!的一刀切配置无法同时满足两个依赖的链接规则:
全局开启配置时,CocoaPods要求所有依赖为动态framework,但OneSignal iOS SDK提供的是静态链接二进制framework,触发静态传递依赖校验报错
全局关闭配置走纯静态链接时,CocoaPods不支持带自定义module map的Swift静态库(即Capacitor核心库),触发模块兼容报错
通过局部定向配置+跳过指定校验即可解决,操作步骤如下:调整Podfile全局配置
打开iOS项目根目录下的Podfile,删除文件中全局声明的use_frameworks!、全局use_modular_headers!两行配置。添加局部适配规则
在target 'App' do代码块内部,添加如下配置:# 仅为Capacitor核心依赖开启模块化头文件,满足Swift模块编译要求 pod 'Capacitor', :modular_headers => true pod 'CapacitorCordova', :modular_headers => true # 跳过静态framework传递依赖校验,兼容OneSignal静态二进制SDK pre_install do |installer| Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {} end若执行pod install仍提示OneSignal相关模块化头文件错误,额外在上述代码块中补充一行配置:
pod 'OneSignal', :modular_headers => false清理缓存重装依赖
进入iOS目录执行以下命令,清理旧构建缓存与安装残留后重新拉取依赖:rm -rf Pods Podfile.lock build pod deintegrate pod install --repo-update
版本适配注意项
- 项目使用
@capacitor/cli@3.3.1属于Capacitor3大版本,对应OneSignal Cordova插件必须锁定3.x版本,禁止安装4.0及以上版本,否则会出现API不兼容问题。安装对应版本命令:npm install onesignal-cordova-plugin@3.x - 所有自定义Pod配置必须写在项目根目录的Podfile中,不要直接修改Pods目录下的自动生成文件,否则下次执行pod install时改动会被覆盖。
内容的提问来源于stack exchange,提问作者Comboi App
相关产品推荐
相关产品推荐

