Code Sign Error在Cordova构buildios期间找不到团队ID

在阅读了之前所有关于代号错误的post之后,我已经达到了死胡同。 使用ios平台(版本3.8.0)构buildcordova项目(版本4.3.0),并使用Bamboo服务器进行持续集成。 我无法让我的应用程序签署发布的iOS应用程序。 这是我的构build任务的顺序:

  1. 解锁钥匙串(我已经确定我的iPhone开发者和发行者证书是有效的,没有过期,我也确保没有在Bamboo服务器上popup许可窗口,例如请求解锁钥匙链的权限。
  2. cordova平台删除ios(清理目录,并开始新鲜)
  3. 为ios添加插件
  4. cordova平台添加ios
  5. cordova构buildios –release –device(构build发布版本的设备,最终上传到应用程序商店)
  6. xcrunembeddedmobileprovision

然后我运行上面的#5任务时出现这个错误:

=== BUILD TARGET Abczyx OF PROJECT Abczyx WITH CONFIGURATION Release === Check dependencies Code Sign error: No code signing identities found: No valid signing identities (ie certificate and private key pair) matching the team ID “(null)” were found. CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.1' The following build commands failed: Check dependencies (1 failure) Error code 65 for command: xcodebuild with args: -xcconfig,/usr/local/Bamboo/Abczyx/platforms/ios/cordova/build-debug.xcconfig,-project,Abczyx.xcodeproj,ARCHS=armv7 armv7s arm64,-target,Abczyx,-configuration,Release,-sdk,iphoneos,build,VALID_ARCHS=armv7 armv7s arm64,CONFIGURATION_BUILD_DIR=/usr/local/Bamboo/Abczyx/platforms/ios/build/device,SHARED_PRECOMPS_DIR=/usr/local/Bamboo/Abczyx/platforms/ios/build/sharedpch ERROR building one of the platforms: Error: /usr/local/Bamboo/Abczyx/platforms/ios/cordova/build: Command failed with exit code 2 

这是我的build-release.xcconfig

  #include "build.xcconfig" CODE_SIGN_IDENTITY = iPhone Distribution CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Distribution #include "build-extras.xcconfig" 

这是我的build.xcconfig

  // Type of signing identity used for codesigning, resolves to first match of given type. // "iPhone Developer": Development builds (default, local only; iOS Development certificate) or "iPhone Distribution": Distribution builds (Adhoc/In-House/AppStore; iOS Distribution certificate) CODE_SIGN_IDENTITY = iPhone Developer CODE_SIGN_IDENTITY[sdk=iphoneos*] = iPhone Developer // (CB-7872) Solution for XCode 6.1 signing errors related to resource envelope format deprecation CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist 

Bamboo服务器在OS X 10.9.4上运行Xcode 6.1.1 Build版本6A2008a。 然后,我单击刷新了xcode的首选项>帐户>用户>签名身份和供应configuration文件屏幕。

我正在使用Xcode 6.2,在我的本地机器的OS X 10.9.4 mac book pro上创build版本6C131e,而且我仍然得到这个相同的错误。 然而,奇怪的事情之一是,在我的本地机器上,我有时运行cordova build ios --device没有 – --release标志,我可以在我的平台/ ios / build /设备文件夹中build立一个。已经签名进行debugging,但是这在远程Bamboo服务器上不起作用(尽pipe它在很多天之前就已经工作了)。

我已经在这里研究了Cordova iOS v.3.8.0的发行注记,并且发现没有什么有用的尝试超越CB-7872 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist ,它已经被修复: https : //github.com/阿帕奇/cordova-IOS /斑点/主/ RELEASENOTES.md

我已经validation了Bamboo服务器包含它正在检查的sdk iphoneos8.1。

我已经validation了configuration文件的规定是最新的,没有人在我的回购工作。

我已经validation了我的CODE_SIGN_IDENTITY对于这个post和脚本是很好的: Xcode失败并显示“Code Signing”错误

我已经试过在构build之后添加一个延迟,但是在构build步骤之前,我已经可以尝试这个了: Failed to generate release build of cordova ios app

我试图去看看删除自动完成/pipe理计划function,但不知道这只是另一个兔子洞: Xcodebuild说不包含计划

我已经尝试在这里查看源代码: https : //github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/lib/build.js但我没有看到任何明显的确认或testing…

两个问题:

  1. 为什么对于teamID有一个“空”? 我如何检查它在哪里检查?

  2. 我还有什么遗漏? 我还能检查什么? 具体来说,在cordova构buildios脚本的来源?

TL; DR

  1. 为什么对于teamID有一个“空”? 我如何检查它在哪里检查?

iPhone发行版最可能的不正确的钥匙串设置。 检查并确保您具有嵌套密钥的证书。

  1. 我还有什么遗漏? 我还能检查什么? 具体来说,在cordova构buildios脚本的来源?

如果使用命令行工具,确保设置正确的标志和选项。 否则,请尝试不同的包装工具,如Fastlanerubygem。

长版

我们使用苹果开发者控制台上的包装工具和代码签名来确定p12文件(cert + key)文件的设置是否正确。

  1. 安装KrauseFx的Fastlane gem: https : //github.com/KrauseFx/fastlane
  2. 从我们的Bamboo构build服务器将Keychain Access中的iPhone发行版p12文件导出到本地计算机(以便于排除故障)。 p12文件基本上包含一个带有嵌套键图标的证书,这在注释中是上面提到的Rich Tolley所必需的。
  3. 双击p12文件将其安装在“login”钥匙串中。 确保你能看到嵌套的cert-key结构。
  4. 打开Xcode>首选项并确保iOS发行版作为签名标识的一部分添加(显示iOS Development和iOS发行版)
  5. 清洁您的cordova /项目目录,开始新鲜(没有平台或插件或使用cordova platform rm ios等)。 然后添加插件,然后添加平台。
  6. 我们跑cordova build ios --device --release ,build立我们的“Abczy.app”。
  7. 移动到正确的cordova平台目录,因为相对path可能无法正常工作:〜/…/ platforms / ios / build / device(检查.app文件是否存在)
  8. 运行这个命令将.app转换为xcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktopxcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop (我将生成的.ipa移动到桌面上,使其更易于操作) 。
  9. 转到包含.ipa的文件夹,并确保您具有包含在同一目录中的apple开发人员的mobileprovision文件。
  10. 运行: sigh resign ./Abczyx.ipa -p "Abczyx-dist.mobileprovision" 。 复制并粘贴您将使用的证书/密钥的名称,然后使用mobileprovision分配对应用程序进行签名。 如果您使用开发人员mobileprovision,则会出现致命错误,但应用程序仍将被签名。
  11. 或者,您可以input: sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"