CodeSign问题:资源规则(在Mac OS X中弃用> = 10.10)

时间:2016-07-20 19:16:17

标签: ios xcode macos jenkins

首先,为了减轻“可能重复”的假设,我在这两个帖子中运行: 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。

1 个答案:

答案 0 :(得分:2)

因此,您的配置文件(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"