Xcode命令行生成错误

时间:2015-01-05 13:26:23

标签: xcode ant xcode6 osx-yosemite ios8.1

我正在尝试使用 xcodebuild xcrun 从命令行终端归档我的Xcode项目。要足够清楚,我是从ANT脚本那样做的。

<target name="build">

<exec executable="/Applications/Xcode.app/Contents/Developer/usr/bin/xcodebuild">
<arg value="-project"/>
<arg value="${local.projectPath}/${app.id}.xcodeproj"/>
<arg value="-scheme"/>
<arg value="${scheme}"/>
<arg value="-configuration"/>
<arg value="${configuration}"/>
<arg value="clean"/>
<arg value="build"/>
</exec>

</target>

<target name="package" depends="build">

<exec executable="xcrun">
<arg value="-sdk"/>
<arg value="iphoneos"/>
<arg value="PackageApplication"/>
<arg value="-v"/>
<arg value="${local.projectPath}/DerivedData/dist/${app.id}/Build/Products/${configuration}-iphoneos/${app.id}.app"/>
<arg value="-o"/>
<arg value="${local.ipaPath}/${app.id}.${appVersion}.b${buildNumber}.${environment}.ipa"/>
<arg value="--sign"/>
<arg value="iPhone Distribution: ${developerName}"/>
<arg value="--embed"/>
<arg value="${provisioningProfile}"/>
</exec>

升级到6.1版本后,我收到以下错误。

/var/folders/hk/bg4j097j1kncryfrplv4b3bw0000gp/T/f3UZyfiqbS/Payload/MyApp.app/ResourceRules.plist:无法读取资源

然后,我找到了以下帖子。

Xcode - Sharing app - PackageApplication failed with exit code 1

据此,我在构建设置的代码签名部分添加了以下内容。

代码签名资源规则路径:$(SDKROOT)/ResourceRules.plist

尽管警告仍然存在,但这解决了我的问题。但我遇到了Apple的技术说明@ https://developer.apple.com/library/mac/technotes/tn2206/_index.html#//apple_ref/doc/uid/DTS40007919-CH1-TNTAG401,其中指出:

“OS X之前的系统Mavericks记录了一个签名功能(--resource-rules)来控制捆绑中的哪些文件应该被代码签名密封。这个功能已经被淘汰给了Mavericks。代码签名在小牛队以及后来总是将所有文件密封在一个捆绑包中;不再需要明确指定它。这也意味着不再使用Xcode中的代码签名资源规则路径构建设置,应该留空< / strong>即可。 因此不再可能从签名中排除一部分捆绑。一旦签名,捆绑包应被视为只读。“

我现在完全糊涂了。如果我将该字段留空,我会收到错误。如果我加入,则违反了Apple的指导方针。我现在应该怎么做?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

检查此问题: Xcode - Sharing app - PackageApplication failed with exit code 1

Apple声称“没有必要......”就像被忽略一样,但是你没有违反任何规则,我认为编译这个项目的其他平台仍在考虑这个领域,所以如果你有问题编译或存档只需将$(SDKROOT)/ResourceRules.plist添加到代码签名资源规则路径,然后重试。