Xcode如何设置EXPANDED_CODE_SIGN_IDENTITY?
How does Xcode set EXPANDED_CODE_SIGN_IDENTITY?
我在证书过期后开始收到代码签名错误。我有一个更新的证书,过期的证书已被删除。但不知何故,Xcode 将 EXPANDED_CODE_SIGN_IDENTITY 设置为过期证书的 SHA-1。它从哪里得到这个值?我认为它必须缓存在某个地方,因为它试图用于代码签名的 SHA-1 钥匙串中没有证书。我搜索了 pbxproj 文件并没有找到它,从项目根目录开始的递归 grep 也没有产生任何结果。
以下是有关我的配置的一些详细信息:
- Xcode
中没有设置账户
- 我使用的是从 Team Agent 导出的证书,而不是开发者帐户
- Xcode版本为6.1.1
- OSX版本为10.10.2
项目标识在 Xcode 中设置如下:
当我检查钥匙串时,它找到了正确的身份:
$ security find-identity -p codesigning
Policy: Code Signing
Matching identities
1) F1326572E0B71C3C8442805230CB4B33B708A2E2 "iPhone Developer: XXX XXX (C395QGL4DK)"
在构建输出中我看到环境变量设置不正确:
export EXPANDED_CODE_SIGN_IDENTITY=9F5616A53464FC5C003847ED620357A7BC72ABB1
我尝试用以下方法修复它:
- 从钥匙串访问中删除证书并重新添加
- 将私钥的访问控制设置为允许所有应用程序
- 删除所有配置文件并重新添加我正在使用的配置文件
- 删除 ~/Library/Developer/Xcode/DerivedData
下的所有内容
- 删除 ~/Library/Caches/com.apple.dt.Xcode
下的所有内容
- 重启Xcode
- 重启 Mac
我现在 运行 没有想法可以尝试了。我还有另外两个开发人员一起工作,他们最初都遇到了同样的问题。但是,在执行了我尝试过的一些相同步骤后,他们又开始工作了。我们都使用相同的证书、相同的配置文件和相同的项目设置。它一定是我系统上的设置或延迟缓存,但我没能找到它。
如果我能找到 Xcode 在哪里设置这个环境变量,我就可以清理它,一切都会好起来的。
如果有帮助,我正在使用 jenkins 构建应用程序,因此所有来自控制台的命令 运行...
所以我关闭了 CODE_SIGNING_ALLOWED 和 "overrided" EXPANDED_CODE_SIGN_IDENTITY_NAME 和 EXPANDED_CODE_SIGN_IDENTITY。出于某种原因,它帮助我构建了具有适当身份的应用程序。
xcodebuild -project my.xcodeproj/ -sdk iphoneos \
CODE_SIGNING_REQUIRED=YES \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGN_IDENTITY="My Identity" \
EXPANDED_CODE_SIGN_IDENTITY_NAME="My Identity" \
EXPANDED_CODE_SIGN_IDENTITY=<CODE_SIGN_IDENTITY>
最后一个可以通过
获得
security find-certificate -a -c "My Identity" -Z|grep ^SHA-1|cut -d " " -f3|uniq
我遇到了同样的问题,对我来说答案很简单:我试图使用与旧证书绑定的配置文件(我猜 EXPANDED_CODE_SIGN_IDENTITY 是从配置文件中提取的你正在尝试使用)。
无论如何,在与新证书绑定的开发中心创建新配置文件后,这种情况就停止了。
我在证书过期后开始收到代码签名错误。我有一个更新的证书,过期的证书已被删除。但不知何故,Xcode 将 EXPANDED_CODE_SIGN_IDENTITY 设置为过期证书的 SHA-1。它从哪里得到这个值?我认为它必须缓存在某个地方,因为它试图用于代码签名的 SHA-1 钥匙串中没有证书。我搜索了 pbxproj 文件并没有找到它,从项目根目录开始的递归 grep 也没有产生任何结果。
以下是有关我的配置的一些详细信息:
- Xcode 中没有设置账户
- 我使用的是从 Team Agent 导出的证书,而不是开发者帐户
- Xcode版本为6.1.1
- OSX版本为10.10.2
项目标识在 Xcode 中设置如下:
当我检查钥匙串时,它找到了正确的身份:
$ security find-identity -p codesigning
Policy: Code Signing
Matching identities
1) F1326572E0B71C3C8442805230CB4B33B708A2E2 "iPhone Developer: XXX XXX (C395QGL4DK)"
在构建输出中我看到环境变量设置不正确:
export EXPANDED_CODE_SIGN_IDENTITY=9F5616A53464FC5C003847ED620357A7BC72ABB1
我尝试用以下方法修复它:
- 从钥匙串访问中删除证书并重新添加
- 将私钥的访问控制设置为允许所有应用程序
- 删除所有配置文件并重新添加我正在使用的配置文件
- 删除 ~/Library/Developer/Xcode/DerivedData 下的所有内容
- 删除 ~/Library/Caches/com.apple.dt.Xcode 下的所有内容
- 重启Xcode
- 重启 Mac
我现在 运行 没有想法可以尝试了。我还有另外两个开发人员一起工作,他们最初都遇到了同样的问题。但是,在执行了我尝试过的一些相同步骤后,他们又开始工作了。我们都使用相同的证书、相同的配置文件和相同的项目设置。它一定是我系统上的设置或延迟缓存,但我没能找到它。
如果我能找到 Xcode 在哪里设置这个环境变量,我就可以清理它,一切都会好起来的。
如果有帮助,我正在使用 jenkins 构建应用程序,因此所有来自控制台的命令 运行... 所以我关闭了 CODE_SIGNING_ALLOWED 和 "overrided" EXPANDED_CODE_SIGN_IDENTITY_NAME 和 EXPANDED_CODE_SIGN_IDENTITY。出于某种原因,它帮助我构建了具有适当身份的应用程序。
xcodebuild -project my.xcodeproj/ -sdk iphoneos \
CODE_SIGNING_REQUIRED=YES \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGN_IDENTITY="My Identity" \
EXPANDED_CODE_SIGN_IDENTITY_NAME="My Identity" \
EXPANDED_CODE_SIGN_IDENTITY=<CODE_SIGN_IDENTITY>
最后一个可以通过
获得security find-certificate -a -c "My Identity" -Z|grep ^SHA-1|cut -d " " -f3|uniq
我遇到了同样的问题,对我来说答案很简单:我试图使用与旧证书绑定的配置文件(我猜 EXPANDED_CODE_SIGN_IDENTITY 是从配置文件中提取的你正在尝试使用)。
无论如何,在与新证书绑定的开发中心创建新配置文件后,这种情况就停止了。