Ошибка сборки на Xcode 10.2.1 в проекте для tvOS и iOS

У меня есть библиотека, в которой есть цели для tvOS и iOS в одной рабочей области.

Когда я собираю tvOS, я получаю сообщение об ошибке:

The following build commands failed:
    CompileSwift normal arm64
    CompileXIB /Users/.../<project_folder>/Pods/Clappr/Sources/Clappr_iOS/Classes/Plugin/Core/MediaControl/Seekbar/Views/SeekbarView.xib
    CompileSwift normal arm64

Команда Fastlane для запуска сборки: set -o pipefail && xcodebuild -workspace "<project_name>.xcworkspace" -scheme "<scheme_name>_tvOS" -configuration "Release" -sdk "appletvos" -derivedDataPath "build/tvOS-appletvos" clean build GCC_PREPROCESSOR_DEFINITIONS='${inherited}' BITCODE_GENERATION_MODE=bitcode ENABLE_BITCODE=YES

И когда я запускаю его в режиме verbose, часть, которая, кажется, показывает ошибку:

CompileXIB /Users/<project_folder>/Pods/Clappr/Sources/Clappr_iOS/Classes/Plugin/Core/MediaControl/Seekbar/Views/SeekbarView.xib (in target: Clappr-iOS)
    cd /Users/<project_folder>/Pods
    export XCODE_DEVELOPER_USR_PATH=/Applications/Xcode.app/Contents/Developer/usr/bin/..
    /Applications/Xcode.app/Contents/Developer/usr/bin/ibtool --errors --warnings --notices --module Clappr --output-partial-info-plist /Users/<project_folder>/build/tvOS-appletvos/Build/Intermediates.noindex/Pods.build/Release-appletvos/Clappr-iOS.build/SeekbarView-PartialInfo.plist --auto-activate-custom-fonts --target-device tv --minimum-deployment-target 10.0 --output-format human-readable-text --compile /Users/<project_folder>/build/tvOS-appletvos/Build/Products/Release-appletvos/Clappr-iOS/Clappr.framework/SeekbarView.nib /Users/<project_folder>/Pods/Clappr/Sources/Clappr_iOS/Classes/Plugin/Core/MediaControl/Seekbar/Views/SeekbarView.xib
/* com.apple.ibtool.errors */
/Users/<project_folder>/Pods/Clappr/Sources/Clappr_iOS/Classes/Plugin/Core/MediaControl/Seekbar/Views/SeekbarView.xib: error: iOS xibs do not support target device type "tv".

Он выбирает xib, который в зависимости (Clappr) не принадлежит tvOS цель.

Кроме того, когда я пытаюсь построить с использованием цели iOS, он отвечает мне следующим образом:

The following build commands failed:
    CompileSwift normal armv7
    CompileSwiftSources normal armv7 com.apple.xcode.tools.swift.compiler
    CompileSwift normal arm64
    CompileSwift normal armv7
    CompileSwift normal arm64

Полоса скоростного режима, используемая для запуска сборки для tvOS, следующая:

private_lane :xc_build do |params|
  xcodebuild(
    workspace: "ProjectName.xcworkspace",
    scheme: params[:scheme],
    configuration: 'Release',
    sdk: params[:sdk],
    derivedDataPath: params[:derivedDataPath],
    clean: true,
    build: true,
    xcargs: params[:xcargs]
  )
end

lane :build_tvos do
  remove_previous_builds_of(platform: "tvOS")

  #It breaks on the following command
  xc_build(
    scheme: 'ProjectScheme_tvOS',
    sdk: 'appletvos',
    derivedDataPath: 'build/tvOS-appletvos',
    xcargs: "GCC_PREPROCESSOR_DEFINITIONS='${inherited}' BITCODE_GENERATION_MODE=bitcode ENABLE_BITCODE=YES"
  )

  xc_build(
    scheme: 'ProjectScheme_tvOS',
    sdk: 'appletvsimulator',
    derivedDataPath: 'build/tvOS-appletvsimulator',
    xcargs: "GCC_PREPROCESSOR_DEFINITIONS='${inherited}' BITCODE_GENERATION_MODE=bitcode ENABLE_BITCODE=YES"
  )

  #This uses lipo to build universal frameworks
  make_universal_framework(
    universal_framework_folder: "Framework/tvOS",
    device_framework_folder: "build/tvOS-appletvos/Build/Products/Release-appletvos",
    simulator_framework_folder: "build/tvOS-appletvsimulator/Build/Products/Release-appletvsimulator"
  )
end

Информация о среде:
* Цель iOS имеет место сборки valid architectures со значением arm64 arm64e armv7 armv7s, а tvOS имеет значение: arm64
* Fastlane версии 2.123.0
* Cocoapods версии 1.6.1
* make_universal_framework использует lipo для сборки


person jademcosta    schedule 27.05.2019    source источник
comment
Какая ваша целевая ОС для iOS / tvOS? В файле отсутствует импорт UIKit, который, возможно, зависел от импорта фреймворка? Обратите внимание, что tvOS также поддерживает только arm64.   -  person Daniel Storm    schedule 27.05.2019
comment
Вы имеете в виду цель развертывания? Это 10.0. Мне не удалось найти отсутствующий файл или что-то в этом роде :(   -  person jademcosta    schedule 29.05.2019


Ответы (1)


Честно говоря, я не знаю, почему это не удается, хотя я нашел решение.

Этот ответ привел меня в правильное русло: https://github.com/Webtrekk/webtrekk-ios-sdk/issues/55#issuecomment-481720922.

Я знаю, что моя проблема не имеет ничего общего с той, что написана для проблемы с GitHub, но она подтолкнула меня к ее решению. Я пошел в меню

Файл -> Настройки проекта (рабочей области) -> Настройки рабочей области -> Система сборки => «Устаревшая система сборки»

И это решило проблему!

Кажется, это разница в системе сборки, но я не нашел подтверждающей документации.

person jademcosta    schedule 29.05.2019
comment
Спасибо, друг мой, люблю тебя! У меня была такая же проблема, и это решило ее. - person Michal; 16.01.2020