Реагируйте Native / Xcode Upgrade и теперь RCTConvert.h не найден
Приложение работало нормально на React Native 0.35.0. После обновления до 0.40.0 через react-native-git-upgrade
При попытке собрать / запустить приложение в XCode у меня возникает ряд проблем с лексикой / препроцессором.
React/RCTBridgeModule.h' file not found
При нажатии на вопрос я вижу это выделено:
#import <React/RCTBridgeModule.h>
Это не похоже на проблему с поиском.
Я пытался удалить node_modules и запустить npm install
еще раз, но это ничего не исправило.
8 ответов
Как указывалось th0th, в iOS RN 0,40 есть резкое изменение. Короче говоря, объявления заголовка RN обновляются, чтобы указывать на путь включения $(BUILT_PRODUCTS_DIR)/include/React
,
Чтобы решить эту проблему, вы должны сделать следующее:
- В Xcode перейдите к схеме проекта (Продукт -> Схема -> Управление схемой -> дважды щелкните ваш проект).
- Нажмите на опцию "Построить" на левой панели.
- Снимите флажок "Распараллелить сборку" в разделе " Параметры сборки".
- Затем в разделе " Цели " нажмите кнопку "+", затем выполните поиск "Реагировать". Выберите его и нажмите "Добавить".
- "Реакция" должна появиться в разделе " Цели ". Нажмите и перетащите его вверх, чтобы он стал первым элементом в списке (до вашего проекта).
- Очистить проект и построить.
Примечание: у вас все еще может быть похожая проблема с заголовками в других библиотеках (например, response-native-fbsdk), которые ссылаются на эти реагирующие нативные файлы.h.
В реакции-родной 0,40
ты должен заменить #import "RCTBridgeModule.h"
с #import <React/RCTBridgeModule.h>
затем очистите и постройте его снова.
Я была такая же проблема. Я решил это, удалив цель Test моего приложения из схемы сборки.
На 0.40 произошли серьезные изменения, подробности вы можете увидеть здесь.
Цитирование непосредственно из заметок о выпуске:
Это означает, что все нативные библиотеки iOS нуждаются в значительном увеличении версии для RN 0,40. Мы стараемся свести к минимуму изменения этой величины и приносим извинения за причиненные неудобства.
Таким образом, все нативные библиотеки iOS нуждаются в обновлении, прежде чем они станут совместимыми с нативной версией 0.40.
Если ваше приложение не слишком большое, просто
1) rename original app
2) create the same app again react-native init <orig_app_name>
3) copy over all necessary files from your original app to the newly created one
4) adjust the package.json
5) npm install
6) react-native run-<ios|android>
Я потратил часы, чтобы найти, где связать новые библиотеки, это был по крайней мере ценный вариант и ярлык для меня.
надеюсь, это кому-нибудь поможет
Если вы используете pod, возможно, вы можете попробовать это решение:
Перейти к путям поиска заголовка:Pods -> TARGETS -> (YOUR TARGET, like my target is RNGL) -> Build Settings -> All -> Search Paths -> Header Search Paths
добавить путь:"${PODS_ROOT}/Headers/Public/React"
нерекурсивна
Эти шаги помогли решить мою проблему. Я попытался "Снять флажок распараллелить сборку". Это не сработало для меня.
- Откройте свой проект в XCode.
- Откройте папку "Библиотеки". Вы должны увидеть React.xcodeproj и несколько RCT*.xcodeproj.
- Перетащите React.xcodeproj в каждый из других проектов.
- Нажмите на каждый проект и перейдите на вкладку Build Phases.
- Нажмите на целевые зависимости и добавьте React в качестве целевой зависимости.
Изменение пути от:
#import <React/RCTBridgeModule.h>
чтобы:
#import <React/Base/RCTBridgeModule.h>
работал на меня.
Вот как я это сделал:
- Я очистил свой package.json до последней версии,
- Я сделал трюк от @max23_
- Я заменил все
#import '....h'
которые вызывали ошибку в соответствующем#import <React/.....h>
,
Обновление от
импорт "RCT/BridgeModule.h"
в
импорт "React/RCT/BridgeModule.h"
чистить и строить.
Хотя я не проверял это, я подозреваю, что если бы я не внес никаких изменений и просто очистил бы и собрал бы это, то добился бы цели.