Как удалить use_frameworks! И продолжать использовать быстрые модули в проекте Objective-C?

наш проект является проектом Objective-c.

Поскольку мы используем react-native-firebase, мы не можем использовать< /strong> use_frameworks! в какао-стручках.

Проблема в том, что у нас есть зависимость модуля Swift (PromiseKit) и использовать swift зависимости мы должны использовать use_frameworks! насколько я понимаю.

То, что я пытаюсь сделать, это взять лучшее из обоих миров, иначе:

  • удалите use_frameworks!, чтобы react-native-firebase работало И
  • сохраните быструю зависимость PromiseKit.

текущий подфайл:

platform :ios, '10.0'

target 'TestApp' do

    use_frameworks!

    # swift pod
    pod 'PromiseKit'

    # react-native-firebase
    pod 'Firebase/Core', '~> 5.3.0'
    pod 'Firebase/DynamicLinks', '~> 5.3.0'
    pod 'Firebase/Messaging', '~> 5.3.0'

end

Я заметил, что есть эта команда :modular_headers => true или use_modular_headers, которая, как я чувствую, может иметь или не иметь отношение к решению, которое я ищу, поскольку Cocoapods 1.5, но я не могу соединить точки.

Редактировать:

Если я удаляю use_frameworks! (даже если я заменяю его на use_modular_headers!), я получаю эту ошибку:

введите описание изображения здесь Любая помощь, пожалуйста?


person SudoPlz    schedule 20.10.2018    source источник
comment
У меня такая же проблема, как реагировать на родной огонь, и, согласно документации firebase, это ограничение Cocoapods и то, как оно взаимодействует с динамическими фреймворками, такими как Firebase. 2) Не используйте use_frameworks! флаг включен, но нам нужно использовать библиотеку react-native-augment, а для этого явно требуется use_frameworks! и это основано на быстром, поэтому, если включить react-native-augment, работает, но react-native-firebase (файл FirebaseCore/FirebaseCore.h не найден) не работает, и наоборот, :(   -  person Jan    schedule 12.01.2019


Ответы (3)


Я также столкнулся с этой проблемой. и найти идеальное решение для этого.

https://github.com/joncardasis/cocoapods-user-defined-build-types

это плагин для кокоаподов, с помощью которого мы можем указать использовать «динамическую структуру» (то есть то, что делает «use_framework») для конкретного модуля. эта функция в настоящее время не поддерживается в Cocoapods, поэтому используйте этот плагин для решения вашей проблемы.

person Rishabh    schedule 21.04.2020
comment
Благодарю вас! Я пробовал все решения, это единственное, что сработало для меня. - person Andrew Smith; 14.03.2021

Замените use_frameworks! на use_modular_headers! в подфайле.

В примечании к выпуску CocoaPods 1.5 указано:

В CocoaPods 1.5.0 разработчики больше не ограничены в указании use_frameworks! в своем подфайле, чтобы установить модули, использующие Swift. Взаимодействие с Objective-C должно работать. Однако, если ваш модуль Swift зависит от модуля Objective-C, вам необходимо включить «модульные заголовки» (см. ниже) для этого модуля Objective-C.

С CocoaPods 1.9.0 теперь можно создавать фреймворки как статически, так и динамически. Используйте use_frameworks! :linkage => :static

person Paul Beusterien    schedule 21.10.2018
comment
Я уже пробовал это, и это не сработало, я все еще получаю ошибки сборки с отсутствием быстрых базовых библиотек. Также я не думаю, что набор обещаний зависит от цели c pod - person SudoPlz; 21.10.2018
comment
Возможно - stackoverflow.com/questions/50096025/ - person Paul Beusterien; 21.10.2018
comment
Я попробую это и отпишусь - person SudoPlz; 21.10.2018
comment
Нет, не работает, вот ошибка d2ddoduugvun08.cloudfront.net/items/291W1l1f2D133t3P2f1S/ - person SudoPlz; 23.10.2018
comment
Хм, похоже, он все еще не находит стандартные библиотеки Swift. - person Paul Beusterien; 23.10.2018
comment
Да, там написано, что arm64 не найдено, но я не могу понять, почему это так. Мне как-то нужно указать архитектуру вручную, чтобы заставить ее собирать для arm64? - person SudoPlz; 23.10.2018
comment
После шести часов крайнего разочарования это решило это для меня. - person Kwaku Eshun; 22.11.2019
comment
Невозможно использовать use_modular_headers! в реактивном проекте :( Он конфликтует с реактивным, я все еще нахожу рабочий обходной путь: | - person Neo.Mxn0; 04.03.2020
comment
В CocoaPods 1.9.0 другим вариантом является use_frameworks! :linkage => :static. - person Paul Beusterien; 04.03.2020

Я столкнулся с похожей проблемой на прошлой неделе, поэтому я создал базовый проект, в котором я использую Swift, Firebase, но не use_frameworks!, а вместо этого использую заголовки мостов.

Не знаю, есть ли у людей проблемы с этим, дайте мне знать, если это поможет. https://github.com/jenshandersson/React-Native-Swift

person Jens Andersson    schedule 14.02.2019