Подтвердить что ты не робот

Xcode 9, Карфаген. Ошибка подключения iTunes: "Недействительный пакет - запрещенная аппаратура LLVM"

Сегодня я загрузил Xcode 9 и внес необходимые изменения для моего приложения для компиляции. Приложение компилируется и выполняется локально без каких-либо проблем.

Используя Xcode 9, я загрузил его в App Store. Загрузка прошла успешно без ошибок.

Затем я отправляю следующее письмо от Apple:

Уважаемый разработчик,

Мы обнаружили одну или несколько проблем с вашей недавней доставкой для "KiteSpotter - ветер и прогноз погоды в Кайтсерфе". Чтобы обработать необходимо устранить следующие проблемы:

Недействительный пакет - запрещенная аппаратура LLVM. Не отправлять приложения с включенным профилированием LLVM или набором покрытий. Отключите профилирование LLVM или покрытие кода, перестройте приложение и повторно отправить приложение.

Как только эти проблемы будут исправлены, вы можете повторно добавить исправлено двоичное.

Привет,

Команда App Store

Я пошел и отключил покрытие кода как для моей цели, так и для cocoa pods target, что было единственным подходящим параметром, который я мог найти:

введите описание изображения здесь

Повторно отправил приложение, и я получаю ту же ошибку.

В моем проекте я использую Карфаген, у которого более 15 зависимостей. В поисках решения я обнаружил, что все проекты необходимо обновить с помощью вышеуказанных настроек.

  • Есть ли какое-либо решение для автоматизации этого параметра для всех фреймворков, если это вызывает проблему.
  • Кто-нибудь еще столкнулся с этой проблемой и разобрал ее. Были ли рамки Карфагена, создающие проблему или что-то еще?
4b9b3361

Ответ 1

Решение автоматизировать покрытие кода установки для false для всех зависимостей - запустить следующую команду на терминале (пожалуйста, перейдите в каталог вашего проекта):

grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g'

Это установит покрытие кода в NO, а iTunes не будет жаловаться.

Последовательность, в которой все работает, следующая

  • Запустите carthage update --platform iOS --no-use-binaries --no-build. Это обновит и загрузит все зависимости. Когда Карфаген начнет компиляцию, вы можете нажать ctrl + c для отмены.
  • Запустите приведенную выше команду, чтобы установить покрытие кода на NO
  • Теперь, когда все на месте, запустите carthage build --platform iOS. Это приведет к созданию всего с кодом покрытия NO

Теперь вы можете архивировать и загружать в iTC.

Команда была дана https://github.com/gunterhager, поэтому кредит идет к нему


В качестве альтернативы пользователям fastlane добавьте следующее в свой файл fastlane, который будет автоматизировать все:

  desc "Update Carthage"
  lane :update_carthage do
    carthage(
      command: "update",       # One of: build, bootstrap, update, archive. (default: bootstrap)
      use_binaries: false,         # Check out dependency repositories even when prebuilt frameworks exist
      no_build: true,  # When bootstrapping Carthage do not build
      platform: "iOS"  # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
    )
    sh("grep -lR 'codeCoverageEnabled' --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = 'YES'/codeCoverageEnabled = 'NO'/g'")
    carthage(
      command: "build",       # One of: build, bootstrap, update, archive. (default: bootstrap)
      platform: "iOS"  # Define which platform to build for (one of ‘all’, ‘Mac’, ‘iOS’, ‘watchOS’, ‘tvOS‘, or comma-separated values of the formers except for ‘all’)
    )
  end

Ответ 2

Как быстро исправить, запустите эти команды в терминале (обязательно перейдите в корневую папку проекта):

  • carthage update --platform iOS --no-use-binaries --no-build Это обновит ваши зависимости, но ничего не построит.

  • grep -lR "codeCoverageEnabled" --include *.xcscheme --null Carthage | xargs -0 sed -i '' -e 's/codeCoverageEnabled = "YES"/codeCoverageEnabled = "NO"/g' Это установит покрытие кода NO.

  • carthage build --platform iOS Это окончательно построит все фреймворки без покрытия кода.

Теперь вы можете заархивировать свой проект и загрузить его в iTunes Connect.

Хорошие люди в проекте Carthage уже работают над более удобным для пользователя исправлением, поэтому обязательно проверяйте наличие там релизов.

Ответ 3

Просто обновите Carthage до версии 0.26.0 или выше, а затем снова запустите команду carthage update.

Ответ 4

У меня тоже была такая же ошибка с Xcode 9.1, хотя я обновил Карфаген до последней версии https://github.com/Carthage/Carthage/releases Мне не удалось загрузить сборку в iTunes

введите описание изображения здесь

Работала для меня таким образом: -

Если вы обновили свой Xcode до 9.1, то

Обновите загрузку carthage.pkg из https://github.com/Carthage/Carthage/releases

Установите .pkg и

Дайте команду carthage update в Terminal, обратившись к вашему проекту

и

затем перейдите к проекту Build Settings find Enable Code Coverage Support измените этот параметр с Yes на No

введите описание изображения здесь

Затем архивируйте и загружайте в AppStore. Вы построите ready. Happy!

введите описание изображения здесь