У меня есть приложение, которое компилируется и отлично работает на старых компьютерах Mac с процессорами Intel на физических устройствах и симуляторах iOS.
Это же приложение также компилируется и отлично работает на новом Apple Silicon Mac с процессором M1 с физическими устройствами iPhone, но оно отказывается компилироваться для симулятора iOS.
Без поддержки симулятора время отладки становится очень долгим, поэтому я пытаюсь решить эту проблему. Не говоря уже о том, что функция предварительного просмотра Xcode тоже не работает, что раздражает.
Первая ошибка, с которой я столкнулся, не внося никаких изменений (но перенесенная с Intel Mac на M1 Mac), выглядит следующим образом.
building for iOS Simulator, but linking in dylib built for iOS, file '/Users/andy/workspace/app/Pods/GoogleWebRTC/Frameworks/frameworks/WebRTC.framework/WebRTC' for architecture arm64
Библиотека Cocoapods, которую я использую, - это GoogleWebRTC, и, согласно ее документу, arm64 должен поддерживаться, поэтому я сбит с толку, почему возникает ошибка выше. Как я уже сказал, он отлично компилируется на реальном устройстве, которое, как я полагаю, работает на arm64.
Согласно док ..
Этот модуль содержит SDK WebRTC для iOS в двоичной форме. Это динамическая библиотека, содержащая срезы armv7, arm64 и x86_64. Битовый код не поддерживается. В настоящее время предоставляемые нами API предназначены только для цели C.
Я искал в Интернете и похоже, есть 2 способа решения этой проблемы.
- Первый - добавлением
arm64
кExcluded Architectures
- Второй вариант - пометить
Build Active Architecture Only
для сборкиRelease
.
Я не совсем понимаю, необходимо ли это, даже когда я компилирую свое приложение на M1 Mac, которое работает под архитектурой arm64, потому что решение, похоже, применимо только для Intel Mac, который не поддерживает симулятор arm64, как для Intel Mac , симуляторы могли работать в x86_64, а не в arm64, поэтому решение №1 в моем случае неприменимо.
Когда я адаптирую только второе изменение, на самом деле ничего не меняется, и возникает та же ошибка.
Когда я вношу оба изменения и пытаюсь построить, теперь я получаю следующую вторую ошибку во время сборки. (не совсем уверен на 100%, решил ли я 1-ю ошибку / я мог бы ввести 2-ю ошибку в дополнение к 1-й, адаптировав два изменения)
Could not find module 'Lottie' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator
Вторая библиотека, которую я использую, - это lottie-ios, и я использую ее в быстром пакете. менеджер. Я предполагаю, что происходит следующее: поскольку я исключил arm64
в настройках сборки для симулятора iOS, Xcode пытается запустить мое приложение в x86_64
. Однако библиотека по какой-то причине не поддерживается в x86_64
и выдает ошибку. У меня нет особого представления о том, что определяет, может ли библиотека работать в x86_64 или arm64, поэтому я не мог копать, чтобы исследовать эту проблему.
Мой слабый вывод состоит в том, что GoogleWebRTC
не может быть скомпилирован для запуска в симуляторе iOS с arm64
по какой-то причине (в отличие от того, что его документ говорит), и lottie-ios
не может быть скомпилирован для работы в симуляторе iOS с x86_64
. Поэтому я не могу использовать их оба в этом случае.
Q1. Я хочу знать, какие изменения я могу внести, чтобы решить эту проблему ...
Приложение компилируется и отлично работает как на устройстве, так и в симуляторе при компиляции с Intel Mac. Приложение компилируется и отлично работает на устройстве при компиляции из Apple Silicon Mac. Просто это приложение отказывается компилироваться и запускаться в симуляторе iOS от Apple Silicon Mac, и я не могу понять, почему.
Q2. Если решения нет, я хочу понять, почему это вообще происходит.
Я действительно не хочу снова покупать старый Intel Mac просто для того, чтобы все работало в симуляторе.
Could not find module 'X' for target 'x86_64-apple-ios-simulator'; found: arm64, arm64-apple-ios-simulator
проблемы? - person Martin Dinh   schedule 07.02.2021