在 Cordova 构建期间找不到团队 ID 的代码签名错误 ios
Code Sign Error not finding team ID during Cordova build ios
通读了之前所有关于代码签名错误的 post 之后,我已经走到了死胡同。在使用 ios 平台(版本 3.8.0)构建一个 cordova 项目(版本 4.3.0)并使用 Bamboo 服务器进行持续集成时。我无法让我的应用程序为发布的 iOS 应用程序签名。这是我的构建任务的顺序:
- 解锁钥匙串(我确保我的 iPhone 开发人员和分发证书有效且未过期。我还确保没有弹出的权限 windows Bamboo 服务器,例如请求解锁钥匙串的权限。)
- cordova platform remove ios(清理目录并重新开始)
- 为 ios
添加插件
- cordova平台添加ios
- cordova build ios --release --device(为最终上传到应用商店的设备构建发布版本)
- xc运行 嵌入 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 服务器是 运行ning Xcode 6.1.1 在 OS X 10.9.4 上构建版本 6A2008a。然后我单击了 xcode 的首选项 > 帐户 > 用户 > 签名身份和配置文件屏幕的刷新。
我正在使用 Xcode 6.2,在 OS X 10.9.4 mac book pro 上为我的本地 machine 构建版本 6C131e,我仍然得到同样的错误。然而,一件奇怪的事情是,在我本地的 machine 上,我有时 运行 cordova build ios --device
没有 --release
标志,我能够在我的 platforms/ios/build/device 文件夹已为调试签名,但这在远程 Bamboo 服务器上不起作用(尽管它在很多天前工作过一次)。
我在这里研究了 Cordova iOS v.3.8.0 的发行说明,发现除了 CB-7872 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist
之外没有任何有用的尝试,它已经被修复:https://github.com/apache/cordova-ios/blob/master/RELEASENOTES.md
我已验证 Bamboo 服务器包含它正在检查的 sdk iphoneos8.1。
我已确认配置文件条款是最新的,并且没有其他人处理过我的存储库。
我已经验证我的 CODE_SIGN_IDENTITY 可以很好地处理这个 post 和脚本:Xcode fails with "Code Signing" Error
我试过在构建后添加延迟,但在我尝试这个之前我已经失败了构建步骤:Failed to generate release build of cordova ios app
我试图考虑删除 auto-complete/manage 方案功能,但不确定这是否只是另一个容易掉入的兔子洞:xcodebuild says does not contain scheme
我试过在这里查看源代码:https://github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/lib/build.js 但我没有看到任何明显的东西可以确认或测试...
两个问题:
为什么teamID有"null"?我如何查看它正在检查的位置?
我还缺少什么?我还能检查什么?具体在cordova build ios script?
的源码中
TL;DR
- 为什么 teamID 有一个 "null"?我怎样才能检查它在哪里
正在检查?
很可能 iPhone 分发的钥匙串设置不正确。检查并确保您拥有带有嵌套密钥的证书。
- 我还缺少什么?我还能检查什么?具体在
cordova 构建 ios 脚本的来源?
如果您使用命令行工具,请确保设置了正确的标志和选项。否则,尝试不同的包装器工具,如 Fastlane ruby gem.
长版
我们使用围绕 Apple 开发者控制台和代码签名的包装器工具解决了这个问题,并确保 p12 文件(证书+密钥)文件设置正确。
- 安装 KrauseFx 的 Fastlane gem: https://github.com/KrauseFx/fastlane
- 将 iPhone 分发 p12 文件从我们的 Bamboo 构建服务器的 Keychain Access 导出到本地计算机(以便更轻松地进行故障排除)。 p12 文件基本上包含一个带有嵌套密钥图标的证书,正如上面评论中提到的 Rich Tolley 所必需的。
- 双击 p12 文件将其安装到 "login" 钥匙串中。确保您可以看到嵌套的证书密钥结构。
- 打开 Xcode>首选项并确保将 iOS 分发添加为签名身份的一部分(显示 iOS 开发和 iOS 分发)
- 通过重新开始(没有平台或插件或使用
cordova platform rm ios
等)来清理您的 cordova/project 目录。然后添加插件,然后添加平台。
- 我们运行
cordova build ios --device --release
,这构建了我们"Abczy.app".
- 移动到正确的 cordova 平台目录,因为相对路径可能无法正常工作:~/.../platforms/ios/build/device(检查
.app
文件是否存在)
- 运行 此命令将
.app
转换为 .ipa
:
xcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop
(我已将生成的 .ipa
移动到我的桌面上以使其更易于操作)。
- 转到包含您的
.ipa
的文件夹,并确保您在同一目录中包含来自 apple developer 的 mobileprovision 文件。
- 运行:
sigh resign ./Abczyx.ipa -p "Abczyx-dist.mobileprovision"
。复制并粘贴您将使用的 cert/key 的名称,然后它将使用分发 mobileprovision 对应用程序进行签名。如果您使用开发人员 mobileprovision,它会出现致命错误,但该应用程序仍会被签名。
- 或者,您可以输入:
sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"
通读了之前所有关于代码签名错误的 post 之后,我已经走到了死胡同。在使用 ios 平台(版本 3.8.0)构建一个 cordova 项目(版本 4.3.0)并使用 Bamboo 服务器进行持续集成时。我无法让我的应用程序为发布的 iOS 应用程序签名。这是我的构建任务的顺序:
- 解锁钥匙串(我确保我的 iPhone 开发人员和分发证书有效且未过期。我还确保没有弹出的权限 windows Bamboo 服务器,例如请求解锁钥匙串的权限。)
- cordova platform remove ios(清理目录并重新开始)
- 为 ios 添加插件
- cordova平台添加ios
- cordova build ios --release --device(为最终上传到应用商店的设备构建发布版本)
- xc运行 嵌入 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 服务器是 运行ning Xcode 6.1.1 在 OS X 10.9.4 上构建版本 6A2008a。然后我单击了 xcode 的首选项 > 帐户 > 用户 > 签名身份和配置文件屏幕的刷新。
我正在使用 Xcode 6.2,在 OS X 10.9.4 mac book pro 上为我的本地 machine 构建版本 6C131e,我仍然得到同样的错误。然而,一件奇怪的事情是,在我本地的 machine 上,我有时 运行 cordova build ios --device
没有 --release
标志,我能够在我的 platforms/ios/build/device 文件夹已为调试签名,但这在远程 Bamboo 服务器上不起作用(尽管它在很多天前工作过一次)。
我在这里研究了 Cordova iOS v.3.8.0 的发行说明,发现除了 CB-7872 CODE_SIGN_RESOURCE_RULES_PATH = $(SDKROOT)/ResourceRules.plist
之外没有任何有用的尝试,它已经被修复:https://github.com/apache/cordova-ios/blob/master/RELEASENOTES.md
我已验证 Bamboo 服务器包含它正在检查的 sdk iphoneos8.1。
我已确认配置文件条款是最新的,并且没有其他人处理过我的存储库。
我已经验证我的 CODE_SIGN_IDENTITY 可以很好地处理这个 post 和脚本:Xcode fails with "Code Signing" Error
我试过在构建后添加延迟,但在我尝试这个之前我已经失败了构建步骤:Failed to generate release build of cordova ios app
我试图考虑删除 auto-complete/manage 方案功能,但不确定这是否只是另一个容易掉入的兔子洞:xcodebuild says does not contain scheme
我试过在这里查看源代码:https://github.com/apache/cordova-ios/blob/master/bin/templates/scripts/cordova/lib/build.js 但我没有看到任何明显的东西可以确认或测试...
两个问题:
为什么teamID有"null"?我如何查看它正在检查的位置?
我还缺少什么?我还能检查什么?具体在cordova build ios script?
的源码中
TL;DR
- 为什么 teamID 有一个 "null"?我怎样才能检查它在哪里 正在检查?
很可能 iPhone 分发的钥匙串设置不正确。检查并确保您拥有带有嵌套密钥的证书。
- 我还缺少什么?我还能检查什么?具体在 cordova 构建 ios 脚本的来源?
如果您使用命令行工具,请确保设置了正确的标志和选项。否则,尝试不同的包装器工具,如 Fastlane ruby gem.
长版
我们使用围绕 Apple 开发者控制台和代码签名的包装器工具解决了这个问题,并确保 p12 文件(证书+密钥)文件设置正确。
- 安装 KrauseFx 的 Fastlane gem: https://github.com/KrauseFx/fastlane
- 将 iPhone 分发 p12 文件从我们的 Bamboo 构建服务器的 Keychain Access 导出到本地计算机(以便更轻松地进行故障排除)。 p12 文件基本上包含一个带有嵌套密钥图标的证书,正如上面评论中提到的 Rich Tolley 所必需的。
- 双击 p12 文件将其安装到 "login" 钥匙串中。确保您可以看到嵌套的证书密钥结构。
- 打开 Xcode>首选项并确保将 iOS 分发添加为签名身份的一部分(显示 iOS 开发和 iOS 分发)
- 通过重新开始(没有平台或插件或使用
cordova platform rm ios
等)来清理您的 cordova/project 目录。然后添加插件,然后添加平台。 - 我们运行
cordova build ios --device --release
,这构建了我们"Abczy.app". - 移动到正确的 cordova 平台目录,因为相对路径可能无法正常工作:~/.../platforms/ios/build/device(检查
.app
文件是否存在) - 运行 此命令将
.app
转换为.ipa
:xcrun -sdk iphoneos PackageApplication -v Abczyx.app -o /Users/myname/Desktop
(我已将生成的.ipa
移动到我的桌面上以使其更易于操作)。 - 转到包含您的
.ipa
的文件夹,并确保您在同一目录中包含来自 apple developer 的 mobileprovision 文件。 - 运行:
sigh resign ./Abczyx.ipa -p "Abczyx-dist.mobileprovision"
。复制并粘贴您将使用的 cert/key 的名称,然后它将使用分发 mobileprovision 对应用程序进行签名。如果您使用开发人员 mobileprovision,它会出现致命错误,但该应用程序仍会被签名。 - 或者,您可以输入:
sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"