React Native на Apple Silicon M1 - в связанной библиотеке libPods-ProjectName.a отсутствует одна или несколько архитектур, необходимых для этой цели: x86_64

Я пытаюсь создать проект React Native на MacBook Pro с архитектурой M1 для симулятора iOS.

Проект прекрасно построен на архитектуре Intel.

Он также строится на устройстве и хорошо архивируется на M1. Но не на симуляторе.

У меня была эта классическая ошибка при переходе на чипсет M1.

в /project-folder/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o), построенном для iOS Simulator, но связываясь в объектном файле, созданном для iOS, file '/ project-folder / ios / Pods / OpenSSL-Universal / ios / lib / libcrypto.a 'для архитектуры arm64

Я добавил arm64 в исключенные архитектуры.

Я также добавил следующий фрагмент, но он также реагирует так же и без него.

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end

Теперь у меня есть:

/project-folder/ios/ProjectName.xcodeproj В связанной библиотеке libPods-ProjectName.a отсутствует одна или несколько архитектур, необходимых для этой цели: x86_64.

Я попытался добавить x86_64 в список архитектур проекта, но безрезультатно.

Я строю из Xcode IDE. Это сообщение об ошибке появляется для всех iPhone, которые я пробовал: 8, 11, 12 и для всех целей, которые я пробовал: iOS 9, 10 и 13.


person Xiiryo    schedule 18.12.2020    source источник
comment
Вы используете какую-либо конкретную версию модуля OpenSSL-Universal? Похоже, что все срезы i386 armv7 armv7s x86_64 arm64 уже включены в версию 1.0.2.20 модуля для библиотеки libcrypto. Так что это может быть конфликт версий.   -  person Ayan Sengupta    schedule 19.12.2020
comment
Нет. Я думаю, что это не связано с Open SSL, просто это первая вызываемая библиотека. Это проблема более высокого уровня.   -  person Xiiryo    schedule 20.12.2020
comment
Проблема с открытым SSL решена при исключении arm64   -  person Xiiryo    schedule 21.12.2020
comment
Большой! Любая идея, как это решило само себя, поскольку в открытом двоичном файле SSL уже есть фрагмент arm64. Так что мне действительно любопытно.   -  person Ayan Sengupta    schedule 21.12.2020
comment
Я исключил arm64 как из модулей, так и из проекта, но у меня все еще есть та же проблема. @Xiiryo ты как-то решил это? Я тоже использую MacBook с Apple Silicon.   -  person DxW    schedule 31.12.2020


Ответы (2)


У меня была такая же проблема, и, наконец, я ее исправил. Есть 2 основные причины ошибок:

  1. arm64 поддержка архитектуры и версия, совместимая с Xcode 12, еще не была предоставлена ​​многими популярными сторонними библиотеками (такими как Firebase, AFNetworking и т. Д.). Xcode 11 раньше автоматически переводил здание для arm64 для симулятора в здание для x86_64, но теперь, когда arm64 является допустимой архитектурой симулятора (это архитектура Apple Silicon), такой перевод больше не происходит.

  2. Поскольку параметр сборки Valid Architectures был удален из Xcode 12, файл проекта, открытый в Xcode 12, автоматически сгенерирует макрос VALID_ARCHS в User-Defines, и этот макрос приведет к сбою сборки.

Я выполняю все шаги в этом сообщении: https://medium.com/@khushwanttanwar/xcode-12-compilation-errors-while-running-with-ios-14-simulators-5731c91326e9

Последним шагом было обновление всех модулей, выполнив команду ниже внутри папки проекта:

pod deintegrate
pod update

Затем я исключаю arm64 для архитектуры Simulator как из основного проекта, так и из проекта Pod.

Настройки сборки Xcode

Очистите проект ( + + k), затем запустите.

person Bek    schedule 21.12.2020
comment
Наконец-то у меня сработало! - person Fancy John; 20.01.2021
comment
Я ЛЮБЛЮ ТЕБЯ ‹3333333333 - person Juanjoo Tocino; 29.03.2021
comment
Спасибо за подробное объяснение и ссылку для дальнейшего чтения. Тщательно, я понимаю не только исправление, но и то, почему исправление работает. - person zkwentz; 08.04.2021

XCode 12.5 сломал большинство из приведенных выше ответов. Для тех, кто использует XCode 12.5 и react-native 0.64.2, я написал небольшое руководство, чтобы все заработало:

https://github.com/aiba/react-native-m1/blob/main/README.md

person Aaron Iba    schedule 27.06.2021