Tim*_*Tim 50 xcode unity-game-engine jenkins xcode6.1
基本上我们升级到xcode 6.1,我们的构建正在获取"ResourceRules.plist:无法读取资源"错误.
我们有一台Jenkins服务器为我们提供ios版本.我们使用Jenkins上的Xcode插件进行实际构建和签名.有关如何在不手动打开xcode的情况下进行此更改以及在其他答案中找到此解决方案的任何想法:
单击您的项目>目标>选择目标>构建设置>
代码签名资源规则路径
并添加:
$(SDKROOT)/ResourceRules.plist
我对Xcode和iOS构建起来很新.我在Unity-iPhone.xcodeproj文件中找到了project.pbxproj文件.它看起来像包含/*Begin XCBuildConfiguration部分*/部分下的构建设置,它列出了在Xcode中找到的类似构建属性,但是我没有看到类似"代码签名资源规则路径"的内容.
有没有人有手动编辑这个文件的经验?总的来说这是个坏主意吗?
谢谢
小智 66
如果您将Jenkins与XCode插件一起使用,则可以'Code Signing Resource Rules Path'通过添加以下内容来修改变量:
"CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist"
Run Code Online (Sandbox Code Playgroud)
到了
'Custom xcodebuild arguments' 设置XCode插件.
此修复程序不需要XCode GUI.
sid*_*eys 13
我遇到了同样的问题.Nicks解决方案确实有效,但需要额外的依赖性.你不需要那个笨重的npm xcode模块.只需在此文件中添加一行: $ PROJECT_ROOT/platforms/ios/cordova/build.xcconfig
CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
Run Code Online (Sandbox Code Playgroud)
请注意,在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.');
});
Run Code Online (Sandbox Code Playgroud)
这可能会在即将发布的Cordova版本中合并,因此钩子将变得不必要(我正在为Cordova-iOS 创建一个看到这个PR).
如果上述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.'
Run Code Online (Sandbox Code Playgroud)
如果你想变得非常疯狂,可以直接更新PackageApplication.
# 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");
Run Code Online (Sandbox Code Playgroud)
我已经习惯了这个脚本来接受一个钥匙串arg,所以这对我来说很有意义.注意我没有使用Xcode Jenkins插件 - 我正在使用Jenkins但是从脚本运行所有构建命令.
| 归档时间: |
|
| 查看次数: |
28722 次 |
| 最近记录: |