Не удается скомпилировать приложение React Native iOS для запуска на физическом устройстве, проблема с React Native Firebase - PullRequest
7 голосов
/ 31 января 2020

По какой-то причине с недавнего времени я не могу запустить свое приложение React Native на физическом устройстве из XCode или даже из командной строки. Я получаю следующую ошибку:

duplicate symbol '_md5_block_data_order' in:
    /XXX/Library/Developer/Xcode/DerivedData/XXXX-bdrylwsxpcqgzvgkcljteyttcdmr/Build/Products/Debug-iphoneos/BoringSSL-GRPC/libBoringSSL-GRPC.a(md5.o)
    /XXX/project/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(md5_dgst.o)
ld: 1 duplicate symbol for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Однако на симуляторе все работает нормально. И я могу загрузить приложение в AppStoreConnect без каких-либо проблем.

Из того, что я понимаю, похоже, что один и тот же символ существует в 2 библиотеках. Не уверен, почему, скорее всего, одна из зависимостей мобильного приложения.

В списке установленных модулей у меня есть и BoringSSL-GRPC (0.0.3), и OpenSSL-Universal (1.0.2.19)

BorbSSL используется Firebase и OpenSSL используется от Flipper.

Это список сторонних зависимостей, которые я использую:

  pod 'Firebase/Core', '~> 6.3.0'

  pod 'Firebase/Messaging', '~> 6.3.0'

  pod 'Firebase/Firestore', '~> 6.3.0'

  pod 'Firebase/Auth', '~> 6.3.0'

  pod 'TrustKit'

  pod 'Stripe', '16.0.0'

  pod 'Amplitude-iOS', '~> 4.5'

  pod 'Intercom', '~> 5.5.1'

  flipper_pods()

Когда я удаляю Firebase все вместе, он отлично работает, и я могу запустить свое приложение на устройстве. Но мне нужна Firebase ...

Есть идеи, как решить эту проблему?

Спасибо!

Ответы [ 3 ]

4 голосов
/ 02 апреля 2020

Это проблема, которую замечают и другие https://github.com/invertase/react-native-firebase/issues/3384

Симптомы, которые чаще всего видят, выглядят так:

Pods/OpenSSL-Universal/ios/lib/libcrypto.a(bio_lib.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64

Зарегистрирована вышестоящая проблема здесь https://github.com/facebook/flipper/issues/485, который был закрыт до того, как стало ясно, что это будет более серьезной проблемой, чем ожидалось.

Я тестировал обходной путь, который является неоптимальным, но функциональным на данный момент, пока библиотека OpenSSL с Бит-код доступен в транзитивных зависимостях - обходной путь:

  • отключить бит-код для разработки (именно там существует флиппер)
  • убедитесь, что у вас везде отключен разбор мертвого кода
  • включить битовый код для режима выпуска

По моему опыту это работало для отладочных сборок на локальных устройствах (где раньше это не удавалось), а сборка TestFlight в режиме выпуска работала

Надеюсь, это помогает!

0 голосов
/ 07 февраля 2020

Как вы упоминали, это из-за нескольких сгенерированных файлов, одну вещь, которую вы можете сделать, это очистить всю папку и перед запуском перезапустить компьютер и xcode. Также очистите папку производных данных для Xcode. и перестройте его, удалите все более старые версии RN APP на вашем «мобильном устройстве», кеш также может это обеспечить. Также надеетесь, что вы недавно не меняли имя цели?

0 голосов
/ 31 января 2020

очистить проект и запустить, библиотеки были скомпилированы для симулятора и созданы дубликаты для устройства

...