【问题标题】:iOS project fails to compile under xcodebuild for deployment target 7.0, but is fine for 6.0. Compiles for both under XcodeiOS 项目无法在 xcodebuild 下为部署目标 7.0 编译,但对于 6.0 很好。在 Xcode 下为两者编译
【发布时间】:2015-05-29 15:25:11
【问题描述】:

我有一个以 iOS 6.0 作为部署目标的 iOS 项目。它在 Xcode 和 xcodebuilder 下都可以很好地构建(对于 CI 来说是必需的)。然而,客户现在希望该项目仅适用于安装了 iOS7+ 的用户。

没问题,我只是增加部署目标数对吗?错了!

在 Xcode 下,项目继续编译得很好。然而,在 xcodebuild 下,项目编译失败,出现很多这样的错误:

架构 armv7 的未定义符号:
“std::string::_Rep::_S_empty_rep_storage”,引用自: 在drmNativeInterface中

它使用Adobe PrimetimedrmNativeInterface 是其中的一部分。

为了帮助隔离问题,我创建了一个全新的单屏项目并进行了以下更改:

  • 添加了 drmNativeInterface 框架和两个 Apple 提供的在 Xcode 中构建项目所需的依赖项,MediaPlayerAVFoundation"Link Binary with Libraries"。 Primetime 文档也列出了其他依赖项,但如果我添加这些依赖项并没有什么区别 - 这些是在 Xcode 下成功构建所需的唯一两个。

  • "armv6 armv7 armv7s" 替换了有效的拱门 "arm64 armv7 armv7s"(即使 drmNativeInterface 显然包含 i386、x86_64、armv7s 和 arm64 切片,即使 Xcode 也不会编译项目,除非我将 arm64 切换为 armv6)。

  • 将两种配置的 "Build Active Architecture Only" 设置为 NO。

  • 最后,将"-lstdc++ -ObjC -all_load" 添加到"Other Linker Flags"

除了上面那几个步骤之外,该项目是库存单屏:没有添加任何代码。

Xcode 会编译它,但 xcodebuild 不会。为了让 xcodebuild 编译它,我必须将部署目标切换到 6.0,这会破坏客户端的请求。

CI xcodebuild 命令包含一些参数,但这是我用于此测试项目的最小化命令:

xcodebuild -project "MyProject.xcodeproj" -scheme "MyProject"

我尝试添加 FRAMEWORK_SEARCH_PATHSHEADER_SEARCH_PATHSALWAYS_SEARCH_USER_PATHS 参数,以防 xcodebuild 根本无法使用项目文件中包含的路径,但这没有任何区别。

如果我从项目中删除 drmNativeInterface 框架 - 只留下 2 个基于 Apple 的依赖项 - 该项目对于 Xcode 和 xcodebuild 都可以正常编译。但显然这不是一个解决方案,因为我需要那个框架!

有谁知道是什么原因造成的或如何解决?

**注:**

有很多关于 SO 项目将在 Xcode 中构建而不在 xcodebuilder 中构建的问题,但我找不到任何项目将在 xcodebuilder 中构建的地方适合一个部署目标而不适合另一个部署目标。

提前致谢。

【问题讨论】:

  • 我之前在我的机器上安装了多个版本的 Xcode 时遇到过问题。您是否使用xcode-select 设置了命令行调用使用的正确版本?
  • 我在我的机器上全新安装了 Yosemite,Xcode 6.3.2 是唯一安装的版本。该问题也在 CI 服务器上重现。

标签: ios xcode xcodebuild


【解决方案1】:

链接 libstdc++ 库(在这种情况下,准确地说是 libstdc++6.dylib)解决了这个问题。

【讨论】:

    【解决方案2】:

    你在Link Binary With Libraries 中丢失了libstdc++6.dylib 只需像这样添加它:

    【讨论】:

    • 在您发布此内容之前,我已经回答了我自己的问题,但感谢您为可能不知道如何执行此操作的 Xcode 新手添加 gif。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多