基于Cordova定制的AEMM-iOS在Xcode 11 Beta构建失败求助
排查Xcode 11 Beta中AEMM-iOS构建失败的思路
我之前也碰到过Xcode大版本升级导致Cordova衍生项目构建崩溃的情况,结合你的场景,咱们一步步拆解问题:
1. 先拿到具体错误日志,别只看xcodebuild返回码1
命令行里的xcodebuild返回代码1太笼统了,根本没法精准定位问题。建议直接用Xcode 11 Beta打开项目:
- 找到路径里的
CordovaPlugins.xcodeproj双击打开 - 选择Debug模拟器(比如iPhone 11),点击顶部的构建按钮
- 打开Xcode的Report Navigator(左侧导航栏最后一个图标),查看构建失败的具体细节——是某个文件编译错误?还是链接时找不到符号?或是配置不兼容?
这一步是核心,只有拿到具体错误信息,才能针对性解决问题。
2. 检查定制CordovaLib与新版Cordova-iOS的兼容性
你的AEMM-iOS是3年前基于旧版Cordova-iOS定制的,新版Cordova-iOS大概率已经重构了不少核心代码,直接替换或合并定制提交很容易出现隐性冲突:
- 对比你当年修改的CordovaLib文件(比如类、方法、编译配置)和新版Cordova-iOS的对应文件,查看是否有API废弃、结构变更的情况
- 检查项目Build Settings:
- 确认
Deployment Target是否符合Xcode 11 Beta要求(Xcode 11最低支持iOS 9.0,若之前的目标版本更低,可能需要调整) - 检查
Objective-C Automatic Reference Counting(ARC)设置,旧定制代码可能未适配ARC规则
- 确认
3. 调整构建参数,适配Xcode 11的架构变化
Xcode 11对模拟器架构的处理做了调整,32位i386架构已被废弃,你命令行里指定的ARCHS=x86_64 i386和VALID_ARCHS=x86_64 i386可能导致冲突:
- 尝试移除这两个参数,让Xcode自动处理架构;或修改为仅指定
x86_64 - 打开
build-debug.xcconfig文件,检查是否存在与Xcode 11不兼容的编译标志、路径设置,比如硬编码的旧Xcode路径
4. 排查bin文件夹的脚本兼容性
你提到替换bin文件夹后因配置错误恢复,Cordova的bin脚本是构建流程的核心,很可能与Xcode 11的命令行工具不兼容:
- 检查bin文件夹里的构建脚本(比如
build、run),查看是否有硬编码的Xcode路径,或调用xcodebuild的参数是否过时 - 运行
xcode-select -p确认当前命令行工具指向Xcode 11 Beta路径,示例命令:
若路径不对,用xcode-select -p # 正常应返回 /Applications/Xcode-beta.app/Contents/Developerxcode-select -s /Applications/Xcode-beta.app/Contents/Developer切换
5. 排查第三方Cordova插件的适配问题
项目里的CordovaPlugins可能包含第三方插件,这类插件大概率未适配Xcode 11:
- 先暂时移除所有第三方插件,只保留AEMM核心代码尝试构建。若能成功,再逐个添加插件,排查出问题插件
- 打开有问题的插件源码,检查是否使用了Xcode 11中废弃的API,或需要添加新的系统框架依赖
先从第一步查看具体错误日志开始,这能帮你快速缩小问题范围,避免盲目试错。
内容的提问来源于stack exchange,提问作者Gopal Devra
相关产品推荐
相关产品推荐

