--resource-rules已在mac os x> = 10.10中弃用

时间:2014-10-20 06:49:08

标签: ios iphone code-signing ipa osx-yosemite

我尝试使用iResign应用程序在Mac Os 10.10上使用新的配置文件重新签名我的ipa文件,但我收到了此警告:“警告: - Mac OS X中已弃用--resource-rules> = 10.10”。

我现在该怎么办?

8 个答案:

答案 0 :(得分:153)

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

Code Signing Resource Rules Path

并添加:

$(SDKROOT)/ResourceRules.plist

enter image description here

答案 1 :(得分:24)

Xcode 7 开始,XSetWindowAttributes xattr; memset(&xattr,0,sizeof(XSetWindowAttributes)); xattr.override_redirect = 0; 构建设置必须保留为空,否则会产生此警告。

Technical Note TN2206提供了详细信息:

  

资源规则

     

OS X Mavericks v10.9之前的系统记录了一个   签名功能(--resource-rules)来控制捆绑包中的哪些文件   应该用代码签名密封。此功能已过时   对于小牛队。代码签名在小牛队制作,后来总是密封   捆绑中的所有文件;没有必要明确指定任何   更多。这也意味着代码签名资源规则路径构建   不应再使用Xcode中的设置,应将其留空。

     

因此不再可能从中排除部分捆绑   签名。捆绑包应该被视为只读   签名。

答案 2 :(得分:10)

在Xcode 7之后,之前的解决方案停止了工作。 Rishi Goel(https://stackoverflow.com/a/32762413/2252465)指出了一个新的

  1. 删除CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist
  2. 找到/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=$destApp/ResourceRules.plist");
    

    将其更改为:

    my @codesign_args = ("/usr/bin/codesign", "--force", "--preserve-metadata=identifier,entitlements",
                      "--sign", $opt{sign});
    

答案 3 :(得分:6)

我找到了解决方法:如果您从XCode运行iResign应用程序 - 那么您将毫无问题地重新签名应用程序(警告将出现在控制台而不是弹出窗口中)。 但如果您关闭XCode并单独运行应用程序 - 那么弹出窗口将返回给您!

BTW:发现错误:) 条件

if (systemVersionFloat < 10.9f)

优胜美地10.10被打破。有趣的。

谢谢,

答案 4 :(得分:4)

尝试在xcodebuild命令中添加以下参数。

-sdk iphoneos CODE_SIGN_RESOURCE_RULES_PATH='$(SDKROOT)/ResourceRules.plist' 

答案 5 :(得分:1)

我刚刚在Xcode 7 GM中打开了我现有的iOS应用程序(来自Xcode 6.4)并看到了这个弃用警告。

有趣的是,答案和评论都是为了更新代码签名资源规则路径&#39;他们还参考了Mac应用程序。

就我而言,项目默认设置了此键和值(我从未设置过)。警告是关于资源规则也被弃用。

对我来说,删除&#39;代码签名资源规则路径&#39;删除了警告。我没有以这种方式提交新版本,所以我可能不得不回来更新这个答案。

我觉得有趣的是我的回答与其他人所看到的相反。

答案 6 :(得分:1)

如果您要使用终端设备对应用程序进行签名,那么您甚至可以在执行代码签名时省略resource-rules,因为无需在外部指定要签名的资源和不签名的资源。现在,必须对包中的所有资源进行签名。

要使用终端设备退出应用,您可以按照以下步骤操作:

unzip MyApp.ipa

rm -rf Payload/MyApp.app/_CodeSignature/

cp ~/Desktop/MyAdHoc.mobileprovision Payload/MyApp.app/embedded.mobileprovision 

codesign -f -s "iPhone Distribution: Code signing Certificate for Enterprise or Ad-hoc app" Payload/MyApp.app

zip -qr MyApp_Resigned.ipa Payload/

答案 7 :(得分:0)

如果你从参数列表中注释掉两个--resource-rules参数,iResign应用程序调用的是codesign任务,那么你就不必更改应用程序的项目构建设置了。项目

我不喜欢为我想要使用的每个项目修改构建设置的想法,只是为了让我可以辞职。

我重建了resign工具,并将其复制到我的Applications目录中,因此我不必在Xcode中打开它。