--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 中弃用的主要内容,如果未能解决你的问题,请参考以下文章
socket.error: [Errno 48] 地址已在使用中