我遇到了同样的问题。Nicks 解决方案确实有效,但需要额外的依赖项。为此,您不需要笨拙的npm xcode模块。只需在此文件中添加一行:
$PROJECT_ROOT/platforms/ios/cordova/build.xcconfig
CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
请注意,在 XCode 6.1.1 之前,需要将其指定为"$(SDKROOT)/ResourceRules.plist"
(注意引号)。
如果您在 Jenkins 等自动构建系统中运行它并且不会/不能使用任何 XCode GUI,只需在以下位置创建一个小的 Cordova 钩子,利用 npm 的fs.appendFile:
$PROJECT_ROOT/hooks/before_build/ios_resourcerules .js(确保它有 chmod +x)
#! /usr/local/bin/node
var fs = require("fs");
fs.appendFileSync('build.xcconfig', '\nCODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist', function (err) {
if (err) throw err;
console.log('CODE_SIGN_RESOURCE_RULES_PATH added to Cordova iOS build configuration.');
});
这可能会在即将发布的 Cordova 版本中合并,因此挂钩将变得不必要(我正在创建一个See this PR for Cordova-iOS)。
如果上述 JavaScript 片段由于“错误参数”失败而无法执行,请按如下方式替换文件内容:
#!/bin/bash
if [ ! -f ./build.xcconfig ]; then
echo "[ERROR] hook befor_build/ios_resourcerules.sh cannot execute, ./build/xcconfig not found in $PWD"
exit 1
fi
echo '// (CB-7872) Solution for XCode 6.1 signing errors related to resource envelope format deprecation' >> ./build.xcconfig
echo 'CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist' >> ./build.xcconfig
echo 'CODE_SIGN_RESOURCE_RULES_PATH added to Cordova iOS build configuration.'