У нас есть проект, в котором используется множество библиотек 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.
Также пробовали ли вы шаги, указанные здесь?
также похоже, что настройка $ONLY_ACTIVE_ARCH
может помочь?
У меня такая же проблема с Firebase. У меня ничего не получается запустить.
Эй, я столкнулся с проблемой. Просто откройте свой старый проект от Rosetta и соберите его. Затем снимите флажок «Открыть с помощью Rosetta» и создайте его. Это помогло мне открыть старый проект на m1
Да, это не сработало. Возвращаясь к Розетте, я получаю ошибки сборки. Будет обновляться.
Я думаю, что лучшим решением для того, чтобы заставить это работать на M1, является использование XC-Frameworks.
carthage update --use-xcframeworks
Это позволит построить только те действительные арки, которые вам нужны. Если у вас есть какие-либо зависимости, которые еще не поддерживают XCFrameworks, вам придется запустить lipo, чтобы удалить цели симулятора x86 на этапе сборки.
Да, я должен был вернуться и обновить это. Это действительно было решением.
Я думаю, у меня есть еще один вопрос о том факте, что пакеты Swift НЕ собираются для XCFrameworks, поэтому вы все равно можете столкнуться с этим, если зависимость исходит от SPM, что отстой ... но да, --use-xcframeworks решил все мои жалобы с Карфаген на М1.
где и как запустить код carthage update --use-xcframeworks?
Вы удалили настройку сборки
$(VALID_ARCHS)
?