【问题标题】:CodeSign Issues: resource-rules (deprecated in Mac OS X >= 10.10)CodeSign 问题:资源规则(在 Mac OS X >= 10.10 中已弃用)
【发布时间】:2016-11-24 03:35:12
【问题描述】:

首先,为了简化“可能重复”的假设,我在这里遇到了这两个帖子: Jenkins vs. Xcode plugin - codesign troubles

Xcode 6.1 error while building IPA

随后this apple tech note

这些解决方案没有解决任何问题。我最近将 Mac 机器从更旧的 OS X 升级到 El Capitan 以及最新最好的 XCode 版本(7.something 或其他),并且正在运行 Jenkins。升级前正在构建的项目现在无法构建。

第一个错误来自我的标题(来自升级后的第一个 jenkins 构建):

error: /usr/bin/codesign --force --preserve-metadata=identifier,entitlements,resource-rules --sign Stuff_I_Dont_think_I_canShow/TheProject.app failed with error 1. Output: Warning: usage of --preserve-metadata with option "resource-rules" (deprecated in Mac OS X >= 10.10)!

尝试了两个帖子中的解决方案,推送了更改,但再次失败:

Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “SOMEID123” were found(同样,我不确定我是否可以显示团队 ID,这些东西对我来说是新的,我不确定什么是敏感信息,什么不是敏感信息)

在这里进行了更多挖掘并遇到了这个答案:--resource-rules has been deprecated in mac os x >= 10.10。其中引用:

自 Xcode 7 起,代码签名资源规则路径构建设置必须 留空

好的。好吧,我有 Xcode 7。所以我删除了以前引用的解决方案的更改,现在我仍然收到相同的错误:Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID “SOMEID123” were found.

这里发生了什么?我已经浪费了很多时间来解决这个问题而没有结果。我是否必须以某种方式明确删除 resource-rules 在某个不起眼的位置的使用?任何知识共享将不胜感激。

这是脚本的打包和签名部分(经过一定程度的审查):

# Build & package app
cd $PROJECT_DIR/src/xcode
xcodebuild -target MyApp -configuration Release clean build SYMROOT=$BUILD_DIR_BASE
xcrun -sdk iphoneos PackageApplication -v $BUILD_DIR/Mobile_MyApp.app -o $BUILD_DIR/Mobile_MyApp.ipa --sign "iPhone Distribution: Company" --embed "$CERT_DIR/hf83uw90-i987-21j0-5t6y-f897e2384957.mobileprovision"

再补充一点信息,这是一个git项目,在打包之前,会检索项目,然后访问repos。

【问题讨论】:

  • 已弃用并不意味着退役和功能失效。
  • 显示构建脚本,特别是您正在执行的构建和代码签名或打包,您可能需要对脚本进行多次更新,而不仅仅是更改资源规则
  • @Wain 我对此很陌生,我不确定我可以展示多少,但我正在添加脚本的构建和打包部分的审查版本,剩下的就是从我们的 repos 中检索,然后推送。

标签: ios xcode macos jenkins


【解决方案1】:

因此,您的配置文件 (PROVISIONFILE) 是 $CERT_DIR/hf83uw90-i987-21j0-5t6y-f897e2384957.mobileprovision,而您的分发名称 (DISTRIBUTION_NAME) 是 iPhone Distribution: Company

我会将其添加到脚本中:

PROFILE_UUID=`grep "<key>UUID</key>" $PROVISIONFILE -A 1 --binary-files=text | sed -E -e "/<key>/ d" -e "s/(^.*<string>)//" -e "s/(<.*)//"`

然后在xcodebuild

PROVISIONING_PROFILE=$PROFILE_UUID CODE_SIGN_IDENTITY="$DISTRIBUTION_NAME"

【讨论】:

  • 在我进行任何更改之前,您能否简单地告诉我这是在做什么以及您是如何得出这个解决方案的?
  • 它强制在构建期间使用配置细节(而不是项目设置),我猜它在我的构建脚本中已经存在几年了,可能更长
  • 只是一个更新(不是您要求的),但我仍在努力尝试您的解决方案,发生了涉及此问题的其他问题。
  • 请详细说明
  • 另一个 Jenkins 作业因其他原因而失败。我相信在您回答之前篡改配置文件。我将在明天修复它,并希望成功地在脚本上尝试您的解决方案。
猜你喜欢
  • 2014-12-15
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2015-03-22
  • 2015-11-03
  • 2015-01-05
相关资源
最近更新 更多