Xcode 解决了这个问题:

Xcode 解决了这个问题:,xcode,jenkins,unity3d,xcode6.1,Xcode,Jenkins,Unity3d,Xcode6.1,这显然是Apple不久前忘记修复的一个bug,因为本文还强调了:该线程中接受的修复可能重复,需要能够通过gui编辑xcode项目。这个问题似乎与通过基于Jenkins的CI解决方案运行的Unity构建的xcode项目有关。这意味着xcode项目是自动生成和自动构建的,不需要手动操作xcode项目。是的,@jpelletier它是通过命令行构建的统一构建的xcode项目,我们从不手动打开项目。@PeterMetz我在我的原始帖子中引用了同一个线程,然而,正如jpelletier所指出的,这些需要手

这显然是Apple不久前忘记修复的一个bug,因为本文还强调了:

该线程中接受的修复可能重复,需要能够通过gui编辑xcode项目。这个问题似乎与通过基于Jenkins的CI解决方案运行的Unity构建的xcode项目有关。这意味着xcode项目是自动生成和自动构建的,不需要手动操作xcode项目。是的,@jpelletier它是通过命令行构建的统一构建的xcode项目,我们从不手动打开项目。@PeterMetz我在我的原始帖子中引用了同一个线程,然而,正如jpelletier所指出的,这些需要手动干预才能打开项目,我们从来没有这样做过。@Tim我很抱歉,我的错!我们应该更仔细地阅读这个问题。我们实际上使用的是Unity3D,所有内容都是用C#编写的。一旦Unity构建完成,我就可以运行后处理脚本。这将在生成xcode项目之后,但在将其编译到应用程序之前发生。我可以相当轻松地将nodejs脚本更改为C#,并在Unity构建完成后启动它。我会试试看,如果行得通,就把你的答案记下来。谢谢你的剧本!谢谢你的剧本@蒂姆,你能把你的c#脚本写完后发出来吗?谢谢尼克,那太简单了,不知道我怎么没看到。工作得很好!我确信@martinmose脚本会起作用,只是在我尝试之前看到了这个。同样对于其他使用Unity的人,我有第三个选择,我打算尝试使用他们的来改变它。不幸的是,如果你使用的是Yosemite,上面的方法已经过时了。请参阅工程,但不推荐。请参阅链接了解修复方法:这在XCode 8.0上再次被破坏。有人对此有任何修复吗?您好@c0d3Junk13,如果与xcode 8集成成功,我也有类似的问题。值得一提的是,cordova需要xcode模块,所以您可能已经有了它,尽管我也不是该模块的粉丝。在您的代码中,您会看到一个错误“坏参数”。因为您将同步函数fs.appendFileSync与回调一起使用。要使用回调,请使用fs.appendFile。太棒了,谢谢!这对我很有用(编辑build.xcconfig文件)。我只需要做一个小小的修改就可以删除“$(SDKROOT)/ResourceRules.plist”中的引号。Cordova bug修复对任何人都有效吗?像@jarbot一样,我不得不删除Cordova添加到build.xcconfig文件中的行中的引号。@nick的解决方案对我们非常有效,不需要任何额外的依赖性。我不知道npm或Cordova在哪里进入了这个问题,不过……如果有人想知道,即使您使用的是Jenkins Xcode插件,这也能起作用。这给出了“警告:——资源规则在Mac OS X>=10.10中已被弃用!”
#!/usr/bin/env node

var CODE_SIGN_RESOURCE_RULES_PATH = '"$(SDKROOT)/ResourceRules.plist"';

var fs = require("fs");
var path = require("path");
var xcode = require('xcode');
var projectRoot = process.argv[2];

function getProjectName(protoPath) {
    var cordovaConfigPath = path.join(protoPath, 'www', 'config.xml');
    var content = fs.readFileSync(cordovaConfigPath, 'utf-8');

    return /<name>([\s\S]*)<\/name>/mi.exec(content)[1].trim();
}

function run(projectRoot) {
    var projectName = getProjectName(projectRoot);
    var xcodeProjectName = projectName + '.xcodeproj';
    var xcodeProjectPath = path.join(projectRoot, 'platforms', 'ios', xcodeProjectName, 'project.pbxproj');
    var xcodeProject;

    if (!fs.existsSync(xcodeProjectPath)) {
        return;
    }

    xcodeProject = xcode.project(xcodeProjectPath);

    console.log('Setting Code Sign Resource Rules Path for ' + projectName + ' to: [' + CODE_SIGN_RESOURCE_RULES_PATH + '] ...');
    xcodeProject.parse(function(error){
        if(error){
            console.log('An error occured during parsing of [' + xcodeProjectPath + ']: ' + JSON.stringify(error));
        }else{
            var configurations = nonComments(xcodeProject.pbxXCBuildConfigurationSection());
            for (config in configurations) {
                var buildSettings = configurations[config].buildSettings;

                buildSettings['CODE_SIGN_RESOURCE_RULES_PATH'] = CODE_SIGN_RESOURCE_RULES_PATH;
            }

            fs.writeFileSync(xcodeProjectPath, xcodeProject.writeSync(), 'utf-8');

            console.log('[' + xcodeProjectPath + '] now has Code Signing Resource Rules Path set to:[' + CODE_SIGN_RESOURCE_RULES_PATH + '] ...');
        }
    });
}

var COMMENT_KEY = /_comment$/;
function nonComments(obj) {
    var keys = Object.keys(obj),
        newObj = {}, i = 0;

    for (i; i < keys.length; i++) {
        if (!COMMENT_KEY.test(keys[i])) {
            newObj[keys[i]] = obj[keys[i]];
        }
    }

    return newObj;
}

run(projectRoot);
"CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist" 
CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
#! /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.');
});
#!/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.'
# In /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication
my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
                     "--sign", $opt{sign},
                     "--resource-rules=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/ResourceRules.plist");
# OLD:               "--resource-rules=$destApp/ResourceRules.plist");
sed -i '' 's/CONFIGURATION_BUILD_DIR/CODE_SIGN_RESOURCE_RULES_PATH = "\$(SDKROOT)\/ResourceRules\.plist";\'$'\n                CONFIGURATION_BUILD_DIR/g' /Users/admin/Jenkins/workspace/PROJECTNAME/Build/PROJECTNAME/Unity-iPhone.xcodeproj/project.pbxproj