gpt4 book ai didi

iOS 项目无法在部署目标 7.0 的 xcodebuild 下编译,但适用于 6.0。在 Xcode 下为两者编译

转载 作者:行者123 更新时间:2023-11-28 21:45:00 31 4
gpt4 key购买 nike

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

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

在 Xcode 下,项目继续正常编译。然而,在 xcodebuild 下,该项目无法编译并出现很多错误,如下所示:

Undefined symbols for architecture armv7:
"std::string::_Rep::_S_empty_rep_storage", referenced from: in drmNativeInterface

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

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

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

  • "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。但显然这不是解决方案,因为我需要那个框架!

有没有人知道可能导致此问题的原因或解决方法?

**注意:**

There are a lot of questions on SO where projects will build in Xcode and not in xcodebuilder, but I couldn't find any where a project will build in xcodebuilder just fine for one deployment target and not for another.

提前致谢。

最佳答案

链接 libstdc++ 库(在本例中,准确地说是 libstdc++6.dylib)解决了这个问题。

关于iOS 项目无法在部署目标 7.0 的 xcodebuild 下编译,但适用于 6.0。在 Xcode 下为两者编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30533402/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com