繁体   English   中英

在Cordova构建ios期间,代码签名错误未找到团队ID

[英]Code Sign Error not finding team ID during Cordova build ios

在阅读了所有以前关于代码签名错误的帖子后,我已经达到了死胡同。 使用ios平台(版本3.8.0)构建cordova项目(版本4.3.0)并使用Bamboo服务器进行持续集成。 我无法让我的应用为该版本的iOS应用签名。 这是我的构建任务的顺序:

  1. 解锁钥匙串(我已确保我的iPhone开发人员和分发证书有效且未过期。我还确保Bamboo服务器上没有弹出许可窗口,例如请求解锁钥匙串的权限。)
  2. cordova平台删除ios(清理目录并开始新鲜)
  3. 为ios添加插件
  4. cordova平台添加ios
  5. cordova build ios --release --device(构建设备的发布版本,最终上传到app store)
  6. xcrun嵌入了mobileprovision

我在上面运行#5任务时遇到此错误:

    === BUILD TARGET Abczyx OF PROJECT Abczyx WITH CONFIGURATION Release ===
    Check dependencies
    Code Sign error: No code signing identities found: No valid signing identities (i.e. 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的首选项>帐户>用户>签署身份和配置配置文件屏幕。

我在我的本地机器的OS X 10.9.4 mac book pro上使用Xcode 6.2,Build版本6C131e,我仍然得到同样的错误。 然而,其中一个奇怪的事情是,在我的本地机器上,我有时运行cordova build ios --device没有--release标志的设备,我能够在我的platforms / ios / build / device文件夹中构建一个--release已签名进行调试,但这在远程Bamboo服务器上不起作用(尽管它在很多天前工作过)。

我已经在这里研究了Cordova iOS v.3.8.0的发行说明,发现没有任何帮助可以尝试超越CB-7872 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist ,它已经修复: https//github.com/阿帕奇/科尔多瓦-IOS /斑点/主/ RELEASENOTES.md

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

我已经确认个人资料条款是最新的,没有其他人在我的回购协议上工作。

我已经验证我的CODE_SIGN_IDENTITY适用于此帖子和脚本: Xcode失败并出现“代码签名”错误

我尝试在构建之后添加延迟,但是在我尝试这个之前我已经失败了构建步骤: 无法生成cordova ios app的发布版本

我试图看看删除自动完成/管理方案功能但不确定这只是另一个兔子漏洞: xcodebuild说不包含方案

我试过看一下这里的来源: https//github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/lib/build.js但我没有看到任何明显的东西确认或测试......

两个问题:

  1. 为什么teamID有“null”? 我怎样才能检查它在哪里检查?

  2. 我还缺少什么? 我还能检查什么? 特别是在cordova构建ios脚本的源代码?

TL; DR

  1. 为什么teamID有“null”? 我怎样才能检查它在哪里检查?

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

  1. 我还缺少什么? 我还能检查什么? 特别是在cordova构建ios脚本的源代码?

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

长版

我们使用围绕Apple开发人员控制台和代码签名的包装工具来确定它并确保正确设置了p12文件(cert + key)文件。

  1. 安装KrauseFx的Fastlane gem: https//github.com/KrauseFx/fastlane
  2. 将Keychain Access中的iPhone分发p12文件从Bamboo构建服务器导出到本地计算机(以便于故障排除)。 p12文件基本上包含带有嵌套密钥图标的证书,这在评论中上面提到的Rich Tolley是必要的。
  3. 双击p12文件将其安装在“登录”钥匙串中。 确保您可以看到嵌套的证书密钥结构。
  4. 打开Xcode>首选项并确保将iOS Distribution添加为签名身份的一部分(显示iOS开发和iOS分发)
  5. 通过重新开始(无平台或插件或使用cordova platform rm ios等)清洁cordova /项目目录。 然后添加插件,然后添加平台。
  6. 我们运行了cordova build ios --device --release ,它构建了我们的“Abczy.app”。
  7. 移动到正确的cordova平台目录,因为相对路径可能无法正常工作:〜/.../ platforms / ios / build / device(检查.app文件是否存在)
  8. 运行此命令的转换.app.ipaxcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop (我已经搬到了造成.ipa到我的桌面,使其更容易操纵) 。
  9. 转到包含.ipa的文件夹,并确保您拥有同一目录中包含的apple developer的mobileprovision文件。
  10. 执行: sigh resign ./Abczyx.ipa -p "Abczyx-dist.mobileprovision" 复制并粘贴您将使用的证书/密钥的名称,然后它将使用分发mobileprovision对应用程序进行签名。 如果您使用开发人员mobileprovision,它将会出现致命错误,但无论如何都会签署应用程序。
  11. 或者,你可以输入: sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM