Xcode 9 не находит React Native 0,56 или 0,57 - PullRequest
0 голосов
/ 12 сентября 2018

Я работал над своим первым React Native NativeModule.Простое «Привет, мир!»Функция Objective-C просто чтобы понять, как это работает.Все шло относительно гладко, однако, похоже, xcode потерял ссылку на все файлы React Native.Я подумал, что эта проблема, вероятно, связана с конкретным проектом, поэтому я запустил новое TestApp, используя react-native init TestApp, но когда я открываю этот файл .xcodeproj, у меня возникает та же проблема.

Первая ошибка в этом новом TestApp - в файле AppDelegate.m: 'React/RCTBundleURLProvider.h' file not found, но, как и следовало ожидать, оттуда происходит лавина.

Я потратил большую часть вчера, пробуя все видыпотенциальных решений безрезультатно.

Это может быть ложное указание, но, возможно, нет, однако я заметил, что Header Search Paths пусто всякий раз, когда я впервые открываю .xcodeproj в недавно инициализированном проекте.При этом я пробовал многочисленные пути поиска, основанные на ответах, которые я нашел здесь, на StackOverflow, GitHub и т. Д., Последнее из которых $(SRCROOT)/../node_modules/react-native/React

Я знаю, что эта проблема может быть немного расплывчатой, но любая помощьс благодарностью.Как разработчик iOS, я изо всех сил стараюсь быть открытым для React Native, но постоянно сталкиваюсь с такими проблемами, как это, на самом деле мешает.

Спасибо!

пс.На данный момент я задаюсь вопросом, будет ли переустановка xcode, узла, npm и самого нативного решения полностью верным решением.

Редактирует для ясности

Сначала я запускаю react-native init TestAppи cd TestApp, за которым следует npm install.Я также попытался запустить react-native link на этом этапе.

Затем я открываю ios/TestApp.xcodeproj.После того, как xcode выполнит свою обычную индексацию, меня неизбежно встретит красный 'React/RCTBundleURLProvider.h' file not found в AppDelegate.Иногда 'React/RCTRootView.' file not found' тоже бывает.В большинстве случаев, даже если это второе предупреждение не появляется, RCTRootView * в didFinishLaunchingWithOptions не окрашивается.

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

#import <Foundation/Foundation.h>
#import "RCTBridgeModule.h"

@interface Test : NSObject <RCTBridgeModule>

@end

Я получаю немедленный 'RCTBridgeModule.h' file not found.

Другими словами, Xcode не находит ничего RCT.Автозаполнение ничего не предлагает RCT.

Даже с этими предупреждениями я могу запустить приложение из Xcode или с помощью react-native run-ios.

Этот дополнительный бит может иметь или не иметь значение:

Если в моем App.js есть import { NativeModules } from 'react-native', NativeModules окажется неопределенным.

В настоящее время у меня такое ощущение, что в настройке есть важный шаг, которого нет в RN Docs, и почему-то другие учебники тоже не затрагиваются.Я пытался на другом компьютере к тому же результату.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

Наконец-то связать нативный код с реагировать-нативный! Итак, я точно не решил точную проблему, но мне удалось обойти эту проблему.

Ранее я пытался инициализировать реактивный проект, а затем модифицировал проект Xcode, встроенный в инициализацию.

Вместо этого я решил подойти к проблеме с противоположной точки зрения, связывая реагирующий с существующим проектом xcode, следуя этой документации: https://facebook.github.io/react-native/docs/integration-with-existing-apps.html

Мне удалось многократно связать нативный код (как swift, так и objc) с реагирующим-нативным после react-native init TestApp, удалив содержимое TestApp/ios и следуя процессу, описанному в ссылке выше.

Спасибо @Artal за предоставление ценной информации о том, как она должна работать.

0 голосов
/ 13 сентября 2018

«Пути поиска в заголовке», будучи пустыми, совершенно нормально.RN выставляет свои заголовки из проекта React.Если вы перейдете к React.xcodeproj (в разделе Библиотеки), то увидите, что у цели React есть фаза сборки «Копировать заголовки», и эти заголовки открываются при упаковке библиотеки как публичные заголовки.

Комуубедитесь, что ваше приложение может использовать заголовки, перейдите к схеме вашего приложения и в раздел Build - цель React должна быть в списке и до цели вашего приложения.Кроме того, флажок Parallelize Build должен быть выключен.Он должен быть настроен таким образом из коробки в новых проектах RN, но, возможно, что-то изменилось в вашем проекте, так что стоит проверить.

Когда сборка только начинается, особенно в недавно инициализированном проектеможно ожидать появления некоторых ошибок в среде IDE во время сборки, касающихся общедоступных React заголовков, но они должны быть устранены и устранены после завершения сборки всех сторонних библиотек React и упаковки самого React.

Есливсе настроено правильно и все еще не работает, удалите папку DerivedData и соберите заново.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...