xcodebuild 在仅请求 tvOS 时构建 iOS 和 tvOS 目标

xcodebuild building both iOS and tvOS targets when only tvOS is requested

我有一个包含 2 个目标的 Xcode 项目:一个用于 iOS,一个用于 tvOS。我正在使用以下命令行命令来构建它:

xcodebuild -workspace "/Users/xxx/Code/project.xcworkspace" -scheme "tvOS" -configuration Release -sdk appletvos ONLY_ACTIVE_ARCH=NO BUILD_DIR="/Users/xxx/Library/Developer/Xcode/DerivedData/project-abcdef/Build/Products" BUILD_ROOT="/Users/xxx/Library/Developer/Xcode/DerivedData/project-abcdef/Build/Products" BITCODE_GENERATION_MODE=bitcode ENABLE_BITCODE=YES OTHER_CFLAGS="-fembed-bitcode"

我的项目通过 CocoaPods 使用以下 Podfile 引入了两个依赖项:

use_frameworks!

def common()
    pod 'CocoaLumberjack', '~> 3.5'
    pod 'JSONModel', '~> 1.8'
end

target 'iOS' do
    platform :ios, '9.0'
    common()
    pod 'GoogleAds-IMA-iOS-SDK', '~> 3.9'
end

target 'tvOS' do
    platform :tvos, '9.1'
    common()
    pod 'GoogleAds-IMA-tvOS-SDK', '~> 4.2'
end

当我构建 iOS 目标时,它工作正常。在构建目录中,我看到如下内容:

Build
  - Intermediates.noindex
  - Products
    - Release-ios
       - project.framework
       - CocoaLumberjack-iOS
       - JSONModel-iOS
       - Pods_project_tvOS.framework

当我构建 tvOS 目标时,它会生成 iOS 和 tvOS 版本的依赖项:

Build
  - Intermediates.noindex
  - Products
    - Release-appletvos
       - project.framework
       - CocoaLumberjack-iOS
       - CocoaLumberjack-tvOS
       - JSONModel-iOS
       - JSONModel-tvOS
       - Pods_project_tvOS.framework

我一直在试图找出发生这种情况的原因,因为它会导致下游构建管道中出现其他问题。到目前为止我已经尝试过:

作为测试,我使用 Xcode(未使用 xcodebuild 命令行工具)和 构建得很好。所以我的命令有问题。但是我不能依赖 Xcode 来构建这个项目,因为我需要从单个命令自动创建一个胖二进制文件 - 因此我有一个 shell 脚本调用 xcodebuild 两次然后使用 lipo 合并结果

这看起来像 https://github.com/CocoaPods/CocoaPods/issues/8729 which started with Xcode 10.2 which is related to this Apple radar

我们切换到 运行 使用单一平台 Podfile 的 xcodebuild 测试。

另一种可能的解决方法是选择旧的 Xcode 构建系统。