"replacing existing signature" 后的协同设计 returns 未知错误
Codesign returns unknown error after "replacing existing signature"
我正在尝试在 Jenkins 上使用 xbuild 构建 Xamarin iOS 应用程序。有时在代码签名过程中构建失败并出现 未知错误 -1=ffffffffffffffff 有时构建成功。配置文件存储在 Jenkins 通过 Keychains and Provisioning Profiles Plugin.
引用的单独钥匙串 jenkins.keychain(不是系统或登录钥匙串)中
这是 Jenkins 的控制台日志:
Target _CodesignAppBundle:
Codesign Task
CodesignAllocate: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
DisableTimestamp: False
Entitlements: obj/iPhone/In-House/Entitlements.xcent
Keychain: <null>
Resources:
bin/iPhone/In-House/MyApp.app
ResourceRules: <null>
SigningKey: 123
ExtraArgs: <null>
IsAppExtension: False
Tool /usr/bin/codesign execution started with arguments: -v --force --sign 123 --entitlements /private/var/lib/jenkins/workspace/Master/Apps/iOS/obj/iPhone/In-House/Entitlements.xcent /private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app
bin/iPhone/In-House/MyApp.app: error : /private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app: replacing existing signature
/private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app: unknown error -1=ffffffffffffffff
Task "Codesign" execution -- FAILED
Done building target "_CodesignAppBundle" in project "/private/var/lib/jenkins/workspace/Master/Apps/iOS/MyApp.csproj".-- FAILED
按照 中的建议,我将 set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ${KEYCHAIN_PW} ${KEYCHAIN_PATH}
添加到我的构建脚本中,但它没有解决问题。
你知道如何解决这个问题吗?为什么要替换现有签名?
更新 1 - 我们在以下时间后不断收到错误消息:
- 从
xbuild
切换到 msbuild
版本 15.3.0.0
- 将 jenkins 钥匙串设置为
- 正在删除
- 不使用
security
commands 的相对路径
Apple forum 中描述了类似的问题。
解决问题的方法:
在 macOS Sierra 上,钥匙串文件扩展名从 *.keychain 更改为 *.keychain-db。代码签名错误是由于我们在编辑包含更新证书的 jenkins.keychain-db 文件时引用旧钥匙串文件引起的。 Keychains with the new extension are rejected from the upload with Jenkins' keychain plugin。所以我们不再使用钥匙串插件并将签名证书存储在 login.keychain-db 中。有了这个,我们就可以成功构建应用程序而不会出现 未知错误。
重新启动 Mac 可以解决问题
我解决此问题的方法是确保 Mac 具有使用新证书的适当权限。我在尝试 运行 Jenkins 作业时遇到此代码签名问题,但在我的本地计算机上 运行 正常。当我尝试手动对 Swift 库之一(例如 libswiftos.dylib
)进行代码签名时,Mac 然后要求输入密码才能使用新证书。完成后,Jenkins 作业 运行 成功。
我正在尝试在 Jenkins 上使用 xbuild 构建 Xamarin iOS 应用程序。有时在代码签名过程中构建失败并出现 未知错误 -1=ffffffffffffffff 有时构建成功。配置文件存储在 Jenkins 通过 Keychains and Provisioning Profiles Plugin.
引用的单独钥匙串 jenkins.keychain(不是系统或登录钥匙串)中这是 Jenkins 的控制台日志:
Target _CodesignAppBundle:
Codesign Task
CodesignAllocate: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
DisableTimestamp: False
Entitlements: obj/iPhone/In-House/Entitlements.xcent
Keychain: <null>
Resources:
bin/iPhone/In-House/MyApp.app
ResourceRules: <null>
SigningKey: 123
ExtraArgs: <null>
IsAppExtension: False
Tool /usr/bin/codesign execution started with arguments: -v --force --sign 123 --entitlements /private/var/lib/jenkins/workspace/Master/Apps/iOS/obj/iPhone/In-House/Entitlements.xcent /private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app
bin/iPhone/In-House/MyApp.app: error : /private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app: replacing existing signature
/private/var/lib/jenkins/workspace/Master/Apps/iOS/bin/iPhone/In-House/MyApp.app: unknown error -1=ffffffffffffffff
Task "Codesign" execution -- FAILED
Done building target "_CodesignAppBundle" in project "/private/var/lib/jenkins/workspace/Master/Apps/iOS/MyApp.csproj".-- FAILED
按照 set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ${KEYCHAIN_PW} ${KEYCHAIN_PATH}
添加到我的构建脚本中,但它没有解决问题。
你知道如何解决这个问题吗?为什么要替换现有签名?
更新 1 - 我们在以下时间后不断收到错误消息:
- 从
xbuild
切换到msbuild
版本 15.3.0.0 - 将 jenkins 钥匙串设置为
- 正在删除
- 不使用
security
commands 的相对路径
Apple forum 中描述了类似的问题。
解决问题的方法:
在 macOS Sierra 上,钥匙串文件扩展名从 *.keychain 更改为 *.keychain-db。代码签名错误是由于我们在编辑包含更新证书的 jenkins.keychain-db 文件时引用旧钥匙串文件引起的。 Keychains with the new extension are rejected from the upload with Jenkins' keychain plugin。所以我们不再使用钥匙串插件并将签名证书存储在 login.keychain-db 中。有了这个,我们就可以成功构建应用程序而不会出现 未知错误。
重新启动 Mac 可以解决问题
我解决此问题的方法是确保 Mac 具有使用新证书的适当权限。我在尝试 运行 Jenkins 作业时遇到此代码签名问题,但在我的本地计算机上 运行 正常。当我尝试手动对 Swift 库之一(例如 libswiftos.dylib
)进行代码签名时,Mac 然后要求输入密码才能使用新证书。完成后,Jenkins 作业 运行 成功。