在阅读了所有以前关于代码签名错误的帖子后,我已经达到了死胡同。使用ios平台(版本3.8.0)构建cordova项目(版本4.3.0)并使用Bamboo服务器进行持续集成。我无法让我的应用为该版本的iOS应用签名。这是我的构建任务的顺序:
我在上面运行#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文件夹中构建.ipa签名用于调试,但这不适用于远程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:Xcode fails with "Code Signing" Error
我尝试在构建后添加延迟,但在尝试此操作之前我已经失败了构建步骤:Failed to generate release build of cordova ios app
我试图尝试删除自动完成/管理方案功能,但不确定这只是另一个兔子洞: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脚本的源代码中?
答案 0 :(得分:5)
<强> TL; DR 强>
最有可能为iPhone发行版设置不正确的钥匙串。检查并确保您拥有带嵌套密钥的证书。
如果使用命令行工具,请确保设置了正确的标志和选项。否则,尝试使用Fastlane ruby gem等不同的包装工具。
长版
我们使用围绕Apple开发人员控制台和代码签名的包装工具来确定它并确保正确设置了p12文件(cert + key)文件。
cordova platform rm ios
等)清洁cordova /项目目录。然后添加插件,然后添加平台。cordova build ios --device --release
,构建了我们的“Abczy.app”。.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"
。复制并粘贴您将使用的证书/密钥的名称,然后它将使用分发mobileprovision对应用程序进行签名。如果您使用开发人员mobileprovision,它将会出现致命错误,但无论如何都会签署应用程序。sigh resign ./Abczyx.ipa -i "iPhone Developer: Joey Jojobuttafucco (123FTR12PAC)" -p "Abczyx-dist.mobileprovision"