iOS项目无法在xcodebuild下针对部署目标7.0进行编译,但对6.0来说很好。在Xcode

时间:2015-05-29 15:25:11

标签: ios xcode xcodebuild

我有一个iOS项目,其中iOS 6.0作为部署目标。它在Xcode和xcodebuilder(CI必需)下构建得很好。但是,客户现在希望项目仅适用于安装了iOS7 +的用户。

没问题,我只是增加部署目标号码吗?错!

在Xcode下,项目继续编译得很好。但是在xcodebuild下,项目无法编译,出现大量错误:

  

架构armv7的未定义符号:
  “std :: string :: _ Rep :: _ S_empty_rep_storage”,引自:          在drmNativeInterface中

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

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

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

  • 用[{1}}替换有效的拱门"arm64 armv7 armv7s"(尽管drmNativeInterface显然包含i386,x86_64,armv7s和arm64切片,甚至Xcode也不会编译项目,除非我为armv6切换arm64 )。

  • 将两个配置的"armv6 armv7 armv7s"设置为NO。

  • 最后,将"Build Active Architecture Only"添加到"-lstdc++ -ObjC -all_load"

除上述几个步骤外,该项目是单屏幕股票:没有添加任何代码。

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

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

  

xcodebuild -project "Other Linker Flags" -scheme "MyProject.xcodeproj"

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

如果我从项目中删除ALWAYS_SEARCH_USER_PATHS框架 - 仅保留2个基于Apple的依赖项 - 项目编译就可以正常编译Xcode和xcodebuild。但显然这不是解决方案,因为我需要这个框架!

有没有人知道造成这种情况的原因或解决办法?

**注意:**

  

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

链接libstdc ++库(在本例中,libstdc ++ 6.dylib确切)修复了问题。

答案 1 :(得分:1)

您丢失了libstdc++6.dylib中的Link Binary With Libraries 只需添加它: enter image description here