无法生成cordovaIOS应用程序的发布版本
我正在使用phonegap CLI 3.1和XCode5。 我正尝试通过Phonegap CLI和Xcrun生成发布模式的构build。 我不想使用Phonegap Build来上传mobileprovision或者其他任何程序。 我想通过xcrun来分配mobileprovison来释放构build。
1)cordova build ios –release
通过命令“/ Applications / MAMP / htdocs / MyTest / MyTestApp / platforms / ios / cordova / build”在平台“ios”上编译应用程序 – 释放平台“ios”编译成功。
2)sudo xcrun -sdk iphoneos PackageApplication -v“ios / build / emulator / MyTestApp.app”-o“/Users/mymac/Desktop/Testnew/MyTestApp.ipa”–sign“iPhone Distribution:NAME(TEAM_ID)” – -embed“MyTestApp_Dis.mobileprovision”
打包应用程序:'ios / build / emulator / MyTestApp.app'参数:embed = MyTestApp_Dis.mobileprovision verbose = 1 output = / Users / mymac / Desktop / Testnew / MyTestApp.ipa sign = iPhone Distribution:NAME(TEAM_ID)
环境variables:
HOME = /用户/ mymac
SUDO_GID = 20
SDKROOT = /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS7.0.sdk
VERSIONER_PERL_PREFER_32_BIT =没有
MAIL = / var / mail / root
SSH_AUTH_SOCK = / tmp / launch-zsBMC8 / Listeners
LANG = en_US.UTF-8
USER = root
LOGNAME = root
__CF_USER_TEXT_ENCODING = 0x0:0:0
USERNAME = root
PATH = / usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ usr / local / git / bin
SUDO_USER = mymac
SHELL = / bin / bash
TERM = xterm-256color
SUDO_COMMAND = / usr / bin / xcrun -sdk iphoneos PackageApplication -v ios / build / emulator / MyTestApp.app -o /Users/mymac/Desktop/Testnew/MyTestApp.ipa –sign iPhone Distribution:NAME(TEAM_ID)–embed MyTestApp_Dis.mobileprovision
SUDO_UID = 501
VERSIONER_PERL_VERSION = 5.12
输出目录:'/Users/mymac/Desktop/Testnew/MyTestApp.ipa'
临时目录:'/ tmp / W81FhZ9VAH'(详细设置时不会在退出时删除)
+ / bin / cp -Rp ios / build / emulator / MyTestApp.app / tmp / W81FhZ9VAH / Payload
Program / bin / cp返回0:[]
检查原始应用程序
- / usr / bin / codesign –verify -vvvv ios / build / emulator / MyTestApp.app
程序/ usr / bin / codesign返回1:[ios / build / emulator / MyTestApp.app:代码对象根本没有签名
在架构:i386
]代码签名失败:ios / build / emulator / MyTestApp.app:代码对象根本没有签名架构:i386
完成检查原来的应用程序
embedded“MyTestApp_Dis.mobileprovision”
- / bin / rm -rf /tmp/W81FhZ9VAH/Payload/MyTestApp.app/embedded.mobileprovision程序/ bin / rm返回0:[]
- / bin / cp -rp MyTestApp_Dis.mobileprovision /tmp/W81FhZ9VAH/Payload/MyTestApp.app/embedded.mobileprovision Program / bin / cp返回0:[]
- / usr / bin / codesign -d –entitlements / tmp / W81FhZ9VAH / entitlements_rawixGWnKhi /tmp/W81FhZ9VAH/Payload/MyTestApp.app程序/ usr / bin / codesign返回1:[/tmp/W81FhZ9VAH/Payload/MyTestApp.app:code对象根本没有签名]
错误:无法从“/tmp/W81FhZ9VAH/Payload/MyTestApp.app”读取授权
嗯,我有类似的问题,像沙市。
当从shell运行'cordova buld ios [–release]',然后再执行'xcrun …'时,它对我来说还行。
但是:当从一个脚本中运行这个序列时,我也会收到一个“Codesign check check failed”错误…
如果我插入(如)cordova和xcrun调用之间的脚本“等待”循环,它的工作原理。
所以 – 对我来说,好像cordova在没有完全完成的情况下返回壳体(?)
事实是,如果我编写我的脚本
#!/bin/bash cordova build ios --release sleep 5 sh -c "xcrun ..."
它为我工作。 问题:这是Cordova / phonegap中的错误吗?
所以,最后我得到了一切工作好吧…:D
Jenkins抱怨一个失败的'codesign …'运行的问题是一个MacOS(configuration)问题
关键的是允许jenkins访问系统的钥匙链。 Jenkins用户的loginshell允许的访问权限与Jenkins用户帐户(!)下运行的Jenkins服务器进程不同
现在我通过在运行构build脚本之前运行Jenkins作业中的login.keychain解锁来实现这一点
例如:在Jenkins的“执行shell”的工作中,
security unlock-keychain -p password /Users/Shared/Jenkins/Library/Keychains/login.keychain echo ##### building now ###################### ./buildit.sh ios --release -v
这可能不是100%最好的解决scheme – 但现在它工作:P
另请参见:[1]: 除非用户login,否则钥匙串将不会从Jenkins脚本解锁
与此同时,我发现:事实是,当cordova退出并返回壳体 – cordova有关的活动还没有完成!
在cordova退出后需要一段时间才能显示“platforms / ios / AppName / _CodeSignature / CodeResources”文件。 这个文件显然对于由xcrun命令启动的'codesign'是必不可less的。
所以我做我的脚本(我称之为“buildit.sh”)
#!/bin/bash [...] cordova build ios --release signaturefile="platforms/ios/build/device/$appname/_CodeSignature/CodeResources" echo DEBUG:signatur file is $signaturefile while [ ! -f $signaturefile ] do echo waiting sleep 1 done xcrun ...
然后在一个脚本中的整个构build/打包过程成功。
但是:从我的ContinuousIntegration服务器Jenkins运行脚本,我发现这个标准可能是必不可less的,但还不够。 从CI我仍然得到一个
/ usr / bin / codesign –verify -vvvv […]程序/ usr / bin / codesign返回1:[…]代码对象根本没有签名
错误!??
编辑(05.12.2013):这是由于jenkins服务无法访问钥匙串。 例如,在Jenkins工作中,在运行构build脚本之前对钥匙串解锁进行sorting。 (可能不是最优雅的解决scheme,但至less它可以解决问题而不是脚本:)
为了跳过代码签名,您可以像这样从控制台执行手动构build:
xcodebuild clean build CODE_SIGN_IDENTITY =“”CODE_SIGNING_REQUIRED = NO另外使用-configuration,-target和-sdk参数来定义你的构build设置。
禁用代码签名:
*转到/应用程序。 右键单击XCode并select“显示包装内容”。 将Contents / Developer / Platforms / iPhoneOS.platform / Developer / SDKs / iPhoneOS5.1.sdk / SDKSettings.plist复制到您的桌面。 (确保实际上复制和粘贴,没有拖放)打开它并在DefaultProperties下设置CODE_SIGNING_REQUIRED为NO。 将其复制并replace原始文件。 重新启动XCode。 打开你的项目。 在Project Navigator中select您的项目并打开您的项目的生成设置部分(而不是任何特定的目标)在代码签名find代码签名身份和debugging和发布模式设置任何iOS SKD不代码签名。 现在,您应该可以毫无错误地构build您的项目。*
做一个IPA:
在“Project Navigator”中select产品右键单击[NameOfYourProject] .app并select'Show in Finder'。 创build一个文件夹并将其命名为Payload将[NameOfYourProject] .app添加到Payload。 压缩有效负载并将其重命名为[NameOfYourProject] .ipa
- jQuery手机button按下事件处理缓慢
- 如何从Sencha Touch / Phonegap应用程序中的虚拟键盘中删除“下一步”和“上一步”button
- PhoneGap页面在iOS设备中的键盘出现之后向上滚动,使PhoneGap页面损坏
- 使用video作为离子/cordova为iOS的背景
- API的phonegap 3.3.0相机为IOS不工作
- cordovaInfo.plist NSCameraUsageDescription密钥丢失
- cordovaIOS错误build立Images.xcassets
- 离子2 Facebook的login – '应用程序不安装'和'没有login'&'给定的URL是不允许的'错误
- cordovakatzer插件背景模式不适用于iOS-9