Этап Gitlab содержит ссылку на отсутствующий файл при добавлении фреймворка в проект Xcode

#swift #xcode #gitlab #gitlab-ci #gitlab-ci-runner

#swift #xcode #gitlab #gitlab-ci #gitlab-ci-runner

Вопрос:

Я борюсь с проблемой при использовании Gitlab CI / CD. Я использую для своего проекта две мои внешние фреймворки. Проект создается без ошибок, но при запуске конвейера я получаю сообщение об ошибке, в котором говорится

Этот этап сборки копирования файлов содержит ссылку на отсутствующий файл ‘xxxxxx.framework’.

Мой проект выглядит следующим образом

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

Это ошибка, которую я получаю:

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

Когда я добавляю файл фреймворка, а не проект framework, тогда CI / CD пройдет, НО затем я получаю ошибку при попытке архивировать проект

Сборка для iOS, но связанный фреймворк «xxxxxx.framework» был создан для iOS Simulator.

Я не знаю, как решить эти проблемы, чтобы все заработало.

Спасибо за любую помощь. С уважением

Ответ №1:

В случае, если у кого-то возникла эта проблема и он клонирует репозиторий git, в котором есть подмодули, обязательно включите подмодули при клонировании.

Ответ №2:

Скорее всего, вам понадобится использовать x.framework один из этих 2 вариантов. Ошибка

Сборка для iOS, но связанный фреймворк «xxxxxx.framework» был создан для iOS Simulator.

как говорится, это связано с тем, что фреймворк создан только для iOS Simulator.

Почему это?

Ну, симулятор iOS работает на архитектуре x86_64 (как и OS X), в то время как iOS работает на архитектуре arm. Поэтому вам придется скомпилировать фреймворки для обеих архитектур. К счастью, есть способ сделать это, и в основном то, что вам нужно достичь, — это создать толстый двоичный файл фреймворка.

Здесь есть скрипт от Sundeep Gupta https://gist.github.com/sundeepgupta/3ad9c6106e2cd9f51c68cf9f475191fa который может быть использован для компиляции фреймворков как для iOS Simulator, так и для целевых архитектур iOS. В Интернете также есть несколько различных ресурсов, которые объясняют, какие шаги вам нужно выполнить, чтобы создать двоичные файлы fat.