在“替换现有签名”后,Codesign返回未知错误

时间:2017-08-01 14:32:59

标签: ios xamarin msbuild codesign xbuild

我正在尝试使用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

根据Codesign returned unknown error -1=ffffffffffffffff的建议,我在构建脚本中添加了set-key-partition-list -S apple-tool:,apple:,codesign: -s -k ${KEYCHAIN_PW} ${KEYCHAIN_PATH},但它没有解决问题。

您是否知道如何解决此问题?为什么要替换现有签名?

更新1 - 我们继续收到错误:

Apple forum中描述了类似的问题。

3 个答案:

答案 0 :(得分:1)

解决问题的原因是什么:

keychain文件扩展名在macOS Sierra上从 * .keychain 更改为 * .keychain-db 。代码签名错误是由于在我们编辑实际包含更新证书的 jenkins.keychain-db 文件时引用旧的keychain文件引起的。 Keychains with the new extension are rejected from the upload with Jenkins' keychain plugin。因此,我们不再使用keychain插件,并将签名证书存储在 login.keychain-db 中。有了这个,我们可以成功构建应用程序,而不会出现未知错误

答案 1 :(得分:1)

我对这个问题的解决方案是确保Mac具有使用新证书的适当权限。尝试运行Jenkins作业时出现此代码签名问题,但在本地计算机上运行正常。当我尝试手动对Swift库之一(例如libswiftos.dylib)进行代码签名时,Mac随后要求输入密码以使用新证书。一旦这样做,Jenkins的工作就可以成功运行。

答案 2 :(得分:-1)

重新启动Mac可以解决问题