升级Phonegap cli-7.0.1至cli-7.1.0导致iOS构建失败
解决Phonegap cli-7.1.0 iOS构建重复符号错误问题
看到你升级到cli-7.1.0后iOS构建出现ld: 2 duplicate symbols for architecture arm64错误,Android正常,而且怀疑是phonegap-plugin-push 2.0.0导致的,这个判断很准确——这类重复符号问题大多是插件依赖与升级后的Cordova iOS平台版本不兼容,导致重复引入了相同的库(尤其是Firebase相关组件,push插件核心依赖这个)。
下面是一步步的解决方案:
1. 彻底清理旧的平台和插件缓存
首先移除现有iOS平台和push插件,避免残留的冲突文件:
# 移除iOS平台 phonegap platform remove ios # 移除push插件 phonegap plugin remove phonegap-plugin-push # 清理npm和cordova缓存(可选但推荐) npm cache clean --force cordova clean
2. 升级push插件到兼容版本
phonegap-plugin-push 2.0.0是比较旧的版本,不兼容cli-7.1.0对应的Cordova iOS 4.5.x平台。建议升级到2.3.0版本(经过验证和cli-7.1.0兼容):
phonegap plugin add phonegap-plugin-push@2.3.0
3. 重新添加适配的iOS平台
cli-7.1.0对应的官方推荐iOS平台版本是4.5.5,直接指定版本添加避免自动安装不兼容的新版本:
phonegap platform add ios@4.5.5
4. 重新构建iOS项目
完成以上步骤后,重新执行构建命令:
phonegap build ios
额外检查点
如果还是出现问题,打开iOS项目(platforms/ios/MyPrivateApp.xcodeproj),检查以下内容:
- 查看
Build Phases -> Link Binary With Libraries,确认没有重复的Firebase相关framework(比如FirebaseMessaging.framework出现多次),如果有移除重复项 - 确认
config.xml中没有重复引入的插件或资源文件(你的当前配置看起来没问题,但可以再核对一遍)
这个问题的核心原因是:cli-7.1.0升级后,Cordova iOS平台内置了部分Firebase依赖,而旧版本的push插件也自带了相同的库,导致链接时出现重复符号冲突。升级插件到兼容版本后,插件会自动适配平台的内置依赖,避免重复引入。
内容的提问来源于stack exchange,提问作者zHnk
相关产品推荐
相关产品推荐

