构建IPA时出现Xcode 6.1错误

Şaf*_*zer 140 build code-signing ipa xcode6.1

刚刚升级到Xcode 6.1,并猜测:现在我在使用TestFlight桌面应用程序提交构建时遇到了麻烦.这是我在应用程序开始构建IPA时遇到的错误:

错误

错误:/ usr/bin/codesign --force --preserve-metadata = identifier,entitlements,resource-rules --sign 854059d45eed724593debef577a562e1ba96ab55 --resource-rules =/tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist/tmp /QYFSJIvu7W/Payload/XX.app失败,错误1.输出:警告:使用带有"resource-rules"选项的--preserve-metadata(在Mac OS X中不推荐使用> = 10.10)!警告:在Mac OS X中,不推荐使用--resource-rules> = 10.10!/tmp/QYFSJIvu7W/Payload/XX.app/ResourceRules.plist:无法读取资源

"支持文章"不知道发生了什么.

它似乎不是TestFlight问题,因为在像Jenkins这样的CI环境中使用xcrun或类似工具也会发生同样的事情.

该应用程序几个月没有更新,所以我知道我不应该期待任何更新来解决这个问题.它过去对我和我的客户来说非常好用,所以我并不是真的热衷于放弃其他东西.

关于这个错误是什么的任何想法,以及如何解决它将非常感激.

Tim*_*Tim 312

我希望我知道它为什么有效,但这是一个对我有用的修复:

找到了修复!

单击您的项目>目标>选择目标>构建设置>

Code Signing Resource Rules Path

并添加:

$(SDKROOT)/ResourceRules.plist

  • 如果您通过脚本或命令行编辑xcodeproj设置,则CODE_SIGN_RESOURCE_RULES_PATH是变量名称.https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/Articles/Getting%20Information%20on%20a%20Build%20Setting.html#//apple_ref/doc/uid/TP40010155-CH6-SW1 (10认同)
  • 谢谢!坦率地说,我不在乎它为什么会这样运作:)这是苹果公司在过去几个月中打破了他们连胜的最新举措.无论如何,谢谢你指出解决方案.(以及在发布之前没有彻底查找错误的我的downvote) (7认同)
  • 确保选择了ALL而不是BASIC设置("常规,功能,信息,构建设置等"下面的行) (7认同)
  • 我在Build Settings中看不到`Code Signing Resource Rules Path`.任何的想法? (5认同)

Ali*_*tra 60

PackageApplications的以下补丁为我修复了它,我删除了资源规则,因为它说在10.10上已经弃用了.

Testflight在没有它的情况下构建工作.Appstore也是如此.

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin
 % diff PackageApplication PackageApplicationFixed 
155,157c155,156
<     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements,resource-rules",
<                          "--sign", $opt{sign},
<                          "--resource-rules=$destApp/ResourceRules.plist");
---
>     my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
>                          "--sign", $opt{sign});
Run Code Online (Sandbox Code Playgroud)

  • 这是一个修复PackageApplication的oneliner:perl -p -i'Orig'-e'BEGIN {undef $ /;} s /,resource-rules(.*sign}).*ResourceRules.plist"/ $ 1/smg'"/ Applications/Xcode6.1.1.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/PackageApplication"(调整你的路径)以及一个完整的脚本来应用它:https://bitbucket.org/WeWantToKnow/xcode_scripts /raw/4d252906062afc00f3c61e534b2c7810288bf0f1/xcode_fix_PackageApplicationResourceRules.sh使用:xcode_fix_PackageApplicationResourceRules.sh /Applications/Xcode6.1.1.app (8认同)

Ada*_*dam 10

我通过电子邮件发送了TestFlight支持并获得了此响应:

我们的团队目前正在使用TestFlight桌面应用程序调查此问题.在此期间,请使用Xcode创建IPA文件,然后使用桌面应用程序或TestFlight网站上传.

建议的解决方法确实有效.


Vla*_*rov 10

自Xcode 7发布以来,Tim Gostony 的答案不再有效.现在,当存在资源规则时,App Store提交过程失败.解决方案是清除代码签名资源规则路径并用xcodebuild工具替换xcrun:

xcodebuild -exportArchive -archivePath [path to archive] -exportPath [path to output directory] -exportOptionsPlist [path to options.plist file]
Run Code Online (Sandbox Code Playgroud)

用于导出ad-hoc分发ipa文件的最简单的Options.plist如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>iCloudContainerEnvironment</key>
    <string>Production</string>
    <key>teamID</key>
    <string>[YOUR TEAM ID]</string>
    <key>method</key>
    <string>ad-hoc</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

这个plist文件还有其他选项可用于bitcode,app thinning等.这就是为什么我认为xcodebuild工具是导出iOS 9及更高版本的ipa文件的正确工具.

xcodebuild -help命令提供了有关选项plist的更多详细信息.