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

Posted

技术标签:

【中文标题】--resource-rules 已在 mac os x >= 10.10 中弃用【英文标题】:--resource-rules has been deprecated in mac os x >= 10.10 【发布时间】:2014-12-15 02:19:14 【问题描述】:

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

我现在该怎么办?

【问题讨论】:

您要从签名中排除哪些文件? 我有一个带有开发证书的 ipa 文件,现在我想将其更改为企业分发证书。我使用 iResign 应用程序在 Mac OS X 10.10 上辞职,但它显示了该警告。 听起来像是iResign 中的一个错误(不管是什么),您可能应该改用 Xcode 重新构建应用程序? 感谢您的支持。但是我的一些朋友不知道如何使用 Xcode 进行构建。如果他们可以使用他们的分发证书重新签署 ipa 文件,那就更好了。我会建议他们使用 Mac OS 10.9.5 或更低版本。无论如何,非常感谢你 【参考方案1】:

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

Code Signing Resource Rules Path

并添加:

$(SDKROOT)/ResourceRules.plist

【讨论】:

这帮助我解决了我在使用 TestFlight 时遇到的问题。 我没有看到Code Signing Resource Rules Path...有什么想法吗? 这似乎解决了我在使用 TestFlight 时遇到的问题 转到Build Settings Georg 并确保您选择了所有级别 这解决了我在创建 IPA 失败时使用 Mac 版 TestFlight 的问题。老实说,感觉就像苹果正在慢慢扼杀 TestFlight 的所有优点。当他们获得时,我认为这将是一件好事......【参考方案2】:

Xcode 7 起,Code Signing Resource Rules Path 构建设置 必须留空,否则会产生此警告。

Technical Note TN2206 提供详细信息:

资源规则

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

因此不再可能从 签名。捆绑包应被视为只读 签名。

【讨论】:

好消息,虽然这似乎暗示了上述最高投票答案的解决方案的相反...:S 我猜从 Xcode 6.x 开始,最高投票的答案是正确的。它不适用于我的情况。 自 XCode 7 起正确答案需要更新到此【参考方案3】:

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

    删除CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist

    找到/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", $optsign,
                      "--resource-rules=$destApp/ResourceRules.plist");
    

    改成:

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

【讨论】:

这实际上是唯一有效的解决方案。谢谢。 这是我认为的解决方案 无法解锁此文件【参考方案4】:

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

顺便说一句:发现错误 :) 条件

if (systemVersionFloat < 10.9f)

Yosemite 10.10 已损坏。好笑。

谢谢,

【讨论】:

非常感谢!这真是一个有趣的错误。我最近发现了这个错误。这里也有新的更新:github.com/maciekish/iReSign 条件从何而来?我应该如何解决这种情况? 这看起来不像是一个错误,而是硬编码的强制弃用。【参考方案5】:

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

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

【讨论】:

【参考方案6】:

如果您使用终端退出应用程序,那么您甚至可以在执行代码签名时省略 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】:

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

有趣的是,答案和 cmets 都说要更新“代码签名资源规则路径”,并且他们还引用了 Mac 应用程序。

在我的例子中,项目已经默认设置了这个键和值(我从来没有设置过)。警告是关于资源规则也被弃用。

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

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

【讨论】:

【参考方案8】:

如果您从参数列表中注释掉两个--resource-rules 参数,iResign 应用程序在其中调用代码设计任务,那么您不必更改应用程序项目的项目构建设置。

我不喜欢必须为我要处理的每个项目修改构建设置,以便我可以辞职。

我重新构建了 resign 工具,并将其复制到了我的 Applications 目录中,这样我就不必在 Xcode 中打开它了。

【讨论】:

以上是关于--resource-rules 已在 mac os x >= 10.10 中弃用的主要内容,如果未能解决你的问题,请参考以下文章

如果 VT-x 虚拟技术被锁定,或已在您的 Mac 上停用

iOS打包常见错误

此服务的太多实例已在运行

socket.error: [Errno 48] 地址已在使用中

未找到 ngrok 命令且已在 /usr/local/bin 上

测试缓冲区是不是已在 R 中刷新