Проект сборки для M1 Mac терпит неудачу из-за того, что, по его мнению, отсутствуют архитектуры

У нас есть проект, в котором используется множество библиотек AWS. При первой попытке собрать его с помощью carthage он загрузил двоичные файлы, но не построил его вообще. Итак, мы запустили carthage --no-use-binaries и собрали библиотеки.

Затем возникает такая ошибка:

LoginService.swift:9:8: Module 'AWSMobileClient' was created for incompatible target arm64-apple-ios9.0: ..Carthage/Build/iOS/AWSMobileClient.framework/Modules/AWSMobileClient.swiftmodule/arm64.swiftmodule

На основе этого потока переполнения стека , мы добавляем arm64 к исключенным архитектурам для симулятора.

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

Это заставляет компилировать весь код aws (ура), но затем эта ошибка возникает при попытке использовать фреймворк, который поступает через диспетчер пакетов Swift:

[].swift:10:8: Could not find module 'Parma' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator

Таким образом, он хочет версию этой библиотеки x86 и не может ее найти.

Приложение теперь работает на телефоне. Но не на симуляторе, конечно. Не уверены, есть ли способ выяснить, какие архитектуры построены с помощью SPM? или контролировать это. Я сбросил кеш SPM после исключения арки arm64.


person Rob    schedule 19.12.2020    source источник
comment
Вы удалили настройку сборки $(VALID_ARCHS)?   -  person Pranav Kasetti    schedule 08.01.2021
comment
Вы также пробовали шаги, указанные здесь?   -  person Pranav Kasetti    schedule 08.01.2021
comment
также $ONLY_ACTIVE_ARCHsetting выглядит так, как будто это может помочь?   -  person Pranav Kasetti    schedule 08.01.2021
comment
У меня такая же проблема с Firebase. Я не могу ни от чего бежать.   -  person Bryan Deemer    schedule 16.04.2021


Ответы (2)


Я думаю, что лучшее решение для того, чтобы это работало на M1, - это использовать XC-Frameworks.

carthage update --use-xcframeworks

Это позволит построить только те действительные арки, которые вам нужны. Если у вас есть какие-либо зависимости, которые еще не поддерживают XCFrameworks, вам придется запустить липо, чтобы удалить цели симулятора x86 на этапе сборки.

person Retebitall    schedule 19.04.2021
comment
Да, я должен был вернуться и обновить это. Это действительно было решение. - person Rob; 19.04.2021
comment
Я думаю, у меня есть еще один вопрос о том, что пакеты Swift НЕ собираются в XCFrameworks, поэтому вы все равно можете столкнуться с этим, если зависимость исходит от SPM, что отстой ... но да, --use-xcframeworks разрешил все мои жалобы с Карфаген на M1. - person Rob; 19.04.2021

Привет, я столкнулся с проблемой. Просто откройте свой старый проект от Rosetta и соберите его. Затем снимите флажок «Открыть с помощью Rosetta» и создайте его. Помог мне открыть старый проект на m1

person Temirlan Merekeyev    schedule 08.01.2021
comment
Попробую, спасибо. - person Rob; 08.01.2021
comment
Да, это не сработало. Вернувшись в Розетту, я получаю отказы от сборки. Буду обновлять. - person Rob; 15.01.2021