使用Cordova 6.5.0构建iOS应用报错:找不到匹配配置文件如何解决?
cordova build ios 签名配置文件找不到的问题 我之前也碰到过一模一样的问题——Xcode里明明能正常构建归档,Cordova命令行却死活找不到匹配的配置文件。这主要是因为Cordova和Xcode读取签名配置的逻辑不完全一致,给你几个实用的排查和解决步骤:
1. 配置build.json明确签名信息
Cordova默认可能不会自动读取Xcode里的签名配置,你需要在项目根目录创建或修改build.json文件,手动指定团队ID和配置文件的UUID:
{ "ios": { "debug": { "codeSignIdentity": "iPhone Developer", "provisioningProfile": "你的Debug配置文件UUID", "teamId": "你的团队ID(Xcode里的Team ID)" }, "release": { "codeSignIdentity": "iPhone Distribution", "provisioningProfile": "你的Release配置文件UUID", "teamId": "你的团队ID" } } }
怎么获取配置文件UUID? 在Xcode的Signing & Capabilities里找到对应的配置文件,右键选择Show in Finder,再右键该文件选Show Package Contents,打开embedded.mobileprovision,里面的UUID字段就是你要的字符串。
2. 确保Cordova和Xcode的签名模式一致
如果Xcode用的是自动签名,那你需要在config.xml里添加对应的偏好设置,让Cordova也使用自动签名:
<preference name="CodeSignIdentity" value="iPhone Developer" /> <preference name="developmentTeam" value="你的团队ID" /> <preference name="ProvisioningProfile" value="Automatic" />
如果是手动签名,就确保config.xml里的ProvisioningProfile值是配置文件的UUID,和build.json保持一致。
3. 清理缓存,从头构建
缓存是这类问题的重灾区,先清理Cordova的构建缓存:
cordova clean ios
然后打开Xcode,清理Derived Data:点击Xcode顶部菜单栏的Xcode -> Preferences -> Locations,找到Derived Data,点击旁边的箭头打开文件夹,删除整个文件夹。之后再重新执行cordova build ios。
4. 确认Xcode命令行工具版本
有时候你切换了Xcode版本,但命令行工具还是指向旧版本,导致Cordova读取的配置不对。执行以下命令检查当前命令行工具路径:
xcode-select -p
如果不是你正在使用的Xcode路径,用以下命令切换:
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
(把路径换成你实际的Xcode安装路径)
5. 直接在build命令里指定签名参数
如果上面的方法都不行,试试直接在build命令里强制指定签名信息:
cordova build ios --device --codeSignIdentity="iPhone Distribution" --provisioningProfile="你的配置文件UUID" --teamID="你的团队ID"
这种方式会覆盖build.json和config.xml的配置,适合临时测试。
一般来说,前三个步骤就能解决大部分问题。如果还是不行,检查一下你的配置文件是否真的包含对应的Bundle ID,以及团队ID是否正确——有时候配置文件的Bundle ID和项目的不一致,Xcode会自动匹配,但Cordova不会。
内容的提问来源于stack exchange,提问作者DudeM

