【问题标题】:xcodebuild produces different archive to Xcode 7.0.1xcodebuild 生成与 Xcode 7.0.1 不同的存档
【发布时间】:2015-10-16 00:32:19
【问题描述】:

我正在使用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”。

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

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

注意,xcodebuild -version 打印:

Xcode 7.0.1
Build version 7A1001

编辑:有时xcodebuild 似乎会生成正确的iOS 应用存档,而不是通用存档。我不确定为什么会发生这种情况。不一致。

【问题讨论】:

  • 如果您升级了,您可能需要完全清除 ctrl+alt+cmd+shift+k(我认为),并且您需要删除所有派生数据
  • @Jeef 感谢您的建议,但清理和删除派生数据仍会导致同样的问题

标签: ios xcode xcodebuild


【解决方案1】:

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

【讨论】:

  • 我正在使用 Cocoapods 0.39。感谢您的链接,我将查找该路径以进行修复。这个 Cocoapods 问题是否只影响 xcodebuild 而不会影响 Xcode.app?
  • 对我来说两者都有影响。
  • 感谢您的帮助。我找到了问题的原因,虽然不是 CocoaPods,但它是“Parallelize Build”设置。我只是在注意到其他人在 CocoaPods 问题跟踪器中提到它之后才想尝试。
【解决方案2】:

经过一番挫折后,我发现了 xcodebuild 生成不正确的 xcarchive 包的原因。

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

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

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

【讨论】:

    猜你喜欢
    • 2016-12-19
    • 1970-01-01
    • 2011-07-20
    • 1970-01-01
    • 2012-02-23
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 2014-11-04
    相关资源
    最近更新 更多