Cordova在CLI上构建iOS版本失败的代码签名检查

时间:2014-10-03 03:50:49

标签: ios xcode cordova xcodebuild ipa

我正在尝试使用xcodebuild工具从适用于iOS的Cordova内置.app文件生成.ipa文件。

我在OSX v10.9.5,Xcode 6.0.1,Cordova 3.5.0-0.2.7。

当我将目录更改为Cordova项目时,我运行以下命令:

cordova build ios --release

这会按预期在platforms/ios/build/emulators文件夹中生成.app文件。

然后我运行以下命令来签署.app:

codesign -s "code sign certificate" path-to/my.app

我随后验证:

codesign -dv path-to/my.app

返回类似这样的内容,表明.app已签名:

Identifier=com.myapp.name
Format=bundle with Mach-O thin (i386)
CodeDirectory v=20200 size=3942 flags=0x0(none) hashes=190+3 location=embedded
Signature size=4359
Signed Time=3 Oct, 2014 10:55:16 am
Info.plist entries=21
TeamIdentifier=TQY89NPL4X
Sealed Resources=none
Internal requirements count=2 size=1004

这似乎是正确的。

然后我生成一个存档,用于创建.ipa文件:

xcodebuild clean archive -scheme myApp -target myApp -sdk iphoneos -configuration AdHoc CODE_SIGN_IDENTITY="the code sign identity" PROVISIONING_PROFILE="UDID of provisioning profile"

这很好并且成功。

使用生成的存档我使用此命令尝试生成.ipa文件:

xcodebuild -project myApp.xcodeproj -exportArchive -exportFormat ipa -archivePath /path-to/myApp.xcarchive  -exportPath $(pwd)/myApp.ipa CODE_SIGN_IDENTITY="code sign identity" -alltargets -configuration Release

这确实会在正确的位置生成.ipa,但我收到令人担忧的通知/错误,即代码签名验证失败了:

Codesign check fails : /myApp.app: resource envelope is obsolete

我担心由于代码签名失败,应用商店在提交时会拒绝生成的.ipa。

在这个过程中我有什么不正确的做法吗?

如何让.app通过代码签名验证步骤?

通过代码签名验证真的很重要吗?

有没有办法在提交前测试.ipa文件,以保证不会被拒绝?

1 个答案:

答案 0 :(得分:3)

尝试使用xcrun命令打包应用程序并生成ipa xcrun manual page

样品:

xcrun -sdk iphoneos PackageApplication -v "${PRODUCTDIR}/${TARGET}.app" -o "${OUTDIR}/${TARGET}.ipa" --sign "${IDENTITY}" --embed "${PROVISONING_PROFILE}"

我用它来创建我可以上传到TestFlight的.ipa。