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
  • xcodebuild构建$ NEW_PRODUCT_NAME.app
  • xcodebuild构建一个名为$ NEW_PRODUCT_NAME.a的CocoaPods的libray文件 ,它应该是libPods-CocoaLumberjack.alibPods.a 在这里输入图像描述
  • 在链接器步骤中,项目设置要求通过属性-lPods-lPods-CocoaLumberjack链接库(在你的场景中,链接-lPods-AFNetworking失败)。 由于库文件也受到PRODUCT_NAME属性的影响,因此链接程序找不到find * .a文件。 在这里输入图像描述
  • 构建失败
  • 我的解决方案

    最后,我的解决方案是分别构建项目和CocoaPods库

  • 在项目的src文件夹中
  • 使用以下命令构建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

    下一篇: CocoaPods Header Search