Проект сборки для 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.

Вы удалили настройку сборки $(VALID_ARCHS)?

Pranav Kasetti 08.01.2021 06:22

Также пробовали ли вы шаги, указанные здесь?

Pranav Kasetti 08.01.2021 06:42

также похоже, что настройка $ONLY_ACTIVE_ARCH может помочь?

Pranav Kasetti 08.01.2021 06:44

У меня такая же проблема с Firebase. У меня ничего не получается запустить.

Bryan Deemer 15.04.2021 23:24
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
4
5 622
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Да, это не сработало. Возвращаясь к Розетте, я получаю ошибки сборки. Будет обновляться.

Rob 14.01.2021 23:46
Ответ принят как подходящий

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

carthage update --use-xcframeworks

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

Да, я должен был вернуться и обновить это. Это действительно было решением.

Rob 19.04.2021 21:03

Я думаю, у меня есть еще один вопрос о том факте, что пакеты Swift НЕ собираются для XCFrameworks, поэтому вы все равно можете столкнуться с этим, если зависимость исходит от SPM, что отстой ... но да, --use-xcframeworks решил все мои жалобы с Карфаген на М1.

Rob 19.04.2021 21:03

где и как запустить код carthage update --use-xcframeworks?

user1090751 22.07.2021 19:03

Другие вопросы по теме