我正在使用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 。我不确定为什么会这样。这不一致。
答案 0 :(得分:1)
你在使用Cocoapods吗?如果是这样,请尝试使用预发布版本gem install cocoapods --pre
。我有这个问题,因为复制吊舱阶段不应该存在,请通过https://github.com/CocoaPods/CocoaPods/issues/4021找到适合您的解决方案。
答案 1 :(得分:0)
经过很多挫折之后,我发现了xcodebuild
产生错误的xcarchive
包裹的原因。
我必须为我正在构建的方案禁用“Parallelize Build”选项。
取消勾选此选项后,构建需要更长时间,但xcodebuild
始终生成“iOS App Archive”而不是“Generic Archive”。启用“Parallelize Build”xcodebuild
将在90%的时间内生成“通用存档”,偶尔会生成正确的存档。
因为我希望 Xcode中的构建时间保持不受影响,所以我为我的方案启用了“Parallelize Build”选项。我复制了使用xcodebuild
构建的方案,并且仅为部署方案取消选中该选项。