xcodebuild为Xcode 7.0.1生成不同的存档

时间:2015-10-16 00:32:20

标签: ios xcode xcodebuild

我正在使用xcodebuild从工作区生成存档。我使用以下命令:

xcodebuild -workspace MyProject.xcworkspace -scheme "MyProject" 
           -destination generic/platform=iOS archive 
           -archivePath "../PathToArchive/MyProject.xcarchive

(为了便于阅读,我将它分隔开多行)

此命令生成MyProject.xcarchive。但是它会生成通用“Xcode Archive”而不是“iOS App Archive”。这不能提交到App Store。

如果我使用Xcode.app版本7.0.1(7A1001)而不是xcodebuild归档完全相同的工作空间和方案,那么我会得到一个可以提交到App Store的“iOS App Archive”。

检查这两个xcarchive的内容显示主要区别在于捆绑的Info.plist文件。 Xcode.app生成的那个包含额外的ApplicationProperties dict,其中包含版本控制和签名详细信息。由xcodebuild生成的那个在Info.plist中缺少这些细节。

将Xcode.app生成的Info.plist复制到xcarchive生成的xcodebuild“修复”存档,并将其提交到App Store。但这不是解决方案,因为这意味着我无法在命令行上构建。

请注意,执行xcodebuild -version打印:

Xcode 7.0.1
Build version 7A1001

修改:有时 xcodebuild似乎会生成正确的 iOS App Archive 而不是 Generic Archive 。我不确定为什么会这样。这不一致。

2 个答案:

答案 0 :(得分:1)

你在使用Cocoapods吗?如果是这样,请尝试使用预发布版本gem install cocoapods --pre。我有这个问题,因为复制吊舱阶段不应该存在,请通过https://github.com/CocoaPods/CocoaPods/issues/4021找到适合您的解决方案。

答案 1 :(得分:0)

经过很多挫折之后,我发现了xcodebuild产生错误的xcarchive包裹的原因。

我必须为我正在构建的方案禁用“Parallelize Build”选项。

Parallelize Build Setting

取消勾选此选项后,构建需要更长时间,但xcodebuild始终生成“iOS App Archive”而不是“Generic Archive”。启用“Parallelize Build”xcodebuild将在90%的时间内生成“通用存档”,偶尔会生成正确的存档。

因为我希望 Xcode中的构建时间保持不受影响,所以我为我的方案启用了“Parallelize Build”选项。我复制了使用xcodebuild构建的方案,并且仅为部署方案取消选中该选项。