CocoaPods中间文件使用xcodebuild构建失败
我试图让xcodebuild与CocoaPods项目一起工作并遇到问题。 我在跑:
xcodebuild -workspace 'MyWorkspace.xcworkspace' -scheme DefaultScheme -configuration Release CODE_SIGN_IDENTITY="Distribution Profile" PRODUCT_NAME="MyProduct"
我收到以下错误:
The following build commands failed:
Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7s/libsupport.a normal armv7s
Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/arm64/libsupport.a normal arm64
Libtool /Users/myuser/repos/MyProjectDir/Build/Intermediates/Pods.build/Release-iphoneos/Pods.build/Objects-normal/armv7/libsupport.a normal armv7
该构建在xcode中正常工作。 我已经把这个搜索引擎砸死了,但还没有找到解决办法。 有人有主意吗?
编辑:我也得到像每个吊舱以下两行。
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: can't locate file for: -lPods-AFNetworking
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: -lPods-AFNetworking is not an object file (not allowed in a library)
第二次修改:如果我忽略了PRODUCT_NAME的说法,它完美地起作用。 那是怎么回事?
我有同样的问题,并找到了问题的根源。
环境:Xcode 6.1(6A1052c),OSX 10.10(14A389)和使用CocoaPods for CocoaLumberjack。
问题
原因是PRODUCT_NAME属性不仅影响内置* .app,而且影响CocoaPods的库* .a文件。
在我的场景中,我需要使用不同的产品名称构建很多* .app文件,并且在图像资源和设置上会有一些不同。 因此,我想在构建脚本中构建不同的* .app文件,只需点击一下即可触发该过程。
如果我们在xcodebuild的选项中使用* .xcworkspace在以下命令中设置PRODUCT_NAME,会发生什么情况:
xcodebuild -workspace $PROJECT_NAME.xcworkspace
-scheme $PROJECT_NAME
-configuration Distribution
CONFIGURATION_BUILD_DIR=$PROJECT_SRC/build
PRODUCT_NAME=$NEW_PRODUCT_NAME build
我的解决方案
最后,我的解决方案是分别构建项目和CocoaPods库 。
使用以下命令构建CocoaPods库
xcodebuild -project Pods/Pods.xcodeproj build
使用以下命令构建项目,并在搜索路径中添加CocoaPods和其他必要的库( 不要忘记包含所有必要的库 )
xcodebuild -project $(TARGET_PROJ)
-configuration Distribution
-target $(TARGET_TAR)
PRODUCT_NAME=$(NEW_PRODUCT_NAME)
LIBRARY_SEARCH_PATHS="./Pods/build/Release-iphoneos $OTHER_PATH"
建立!
这些工作对我来说有一个单击构建脚本为相同的二进制文件,但有一些不同的图像和设置。 希望这会帮助有同样问题的人。
不幸的是xcodebuild
是我曾经使用过的最差的记录工具之一。 可能提到的角色是问题,但从来不知道:/我可以补充说的是,通常情况下,您应该避免通过命令行传递诸如PRODUCT_NAME
参数。 创建多个配置并在构建工件时切换它们会更好。 根据我的经验,我知道这些观点有时会造成奇怪的行为。
事实证明, xcodebuild
不喜欢PRODUCT_NAME
说法。 我完全删除了这个论点,并建立了一切。 然后,我将PRODUCT_NAME
移至CODE_SIGN_IDENTITY
之前,并且工作正常。 所以,我认为它可能已经建成了第二次,因为豆荚资源是建立在生成的数据文件夹中的。 为了检查这一点,我吹走了派生数据并重新构建(最后一次使用PRODUCT_NAME
参数),它的构建很好。
老实说,我不确定这个问题到底是什么。 也许这将在未来帮助某人。 如果有人有真正的解决方案,我很乐意听到它。
链接地址: http://www.djcxy.com/p/89637.html上一篇: CocoaPods intermediate files build failure with xcodebuild