Reactnative - файл 'React / RCTBridgeModule.h' не найден - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь использовать response-native-linea в моем приложении native native, и во время сборки я получаю файл React / RCTBridgeModule.h 'not found. Не могли бы вы помочь?

Шаги, которые я попробовал -

1. react-native init ScannerApp
2. cd ScannerApp/
3. npm i react-native-linea --save
4. react-native link react-native-linea
5.Drag and drop the InfineaSDK Framework into the General > Embedded Binaries section of your Project. The framework will also display the Linked Frameworks and Libraries.
a. Verify that Copy Items if needed is checked.
6.Add the following to General > Linked Frameworks and Libraries:
• CoreLocation.framework
• ExternalAccessory.framework 
• Foundation.framework
7.Add a new Run Script phase.
At the end of your project’s Build phase(s), add new running scripts to set up InfineaSDK.
FRAMEWORKS="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}" "${FRAMEWORKS}/InfineaSDK.framework/SDKSetup"
8.react-native run-ios
****Error*****
simulator/react-native-linea.build/Objects-normal/x86_64/RCTLinea.o
In file included from /Users/****/reactnative/ScannerApp/node_modules/react-native-linea/react-native-linea/RCTLinea.m:9:
/Users/****/reactnative/ScannerApp/node_modules/react-native-linea/react-native-linea/RCTLinea.h:9:9: fatal error: 'React/RCTBridgeModule.h' file not found
#import <React/RCTBridgeModule.h>
        ^~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.


** BUILD FAILED **

1 Ответ

0 голосов
/ 12 июля 2019

Решение 1: Добавление подспец

Предварительное условие : Вам нужно будет настроить React как зависимость cocoapod, чтобы это работало. Кроме того, прежде чем попробовать это, убедитесь, что у вас есть пакет react-native-linea, доступный в node_modules.

В этом решении вам нужно создать файл podspec для linea. Вы можете оставить его в своем проекте ScannerApp или создать оригинальный репозиторий и добавить в него файл podspec. Если вы разветвляетесь, пожалуйста, измените git url в podspec на ваш репо и добавьте пакет react-native-linea из вашего репо. Вот подспец, который работал для меня,

require 'json'

package = JSON.parse(File.read(File.join(__dir__, '../node_modules/react-native-linea/package.json')))

Pod::Spec.new do |s|
s.name                 = 'LineaPro'
s.version              = package['version']
s.summary              = package['description']
s.license              = package['license']
s.homepage             = 'https://github.com/pablo-coco/react-native-linea'
s.authors              = 'pablo-coco'
s.source               = { :git => 'https://github.com/pablo-coco/react-native-linea.git', :tag => s.version }
s.source_files         = '*.{h,m}','react-native-linea/*.{h,m}'
s.requires_arc         = true
s.platforms            = { :ios => "9.0" }
s.vendored_libraries   = 'libdtdev.a'
s.frameworks           = 'ExternalAccessory', 'CoreLocation'
s.dependency           'React'
end

Теперь вам нужно добавить это как зависимость cocoapod в ваш ScannerApp подфайл. Если вы добавляете файл podspec локально, обязательно укажите его путь, как показано ниже:

pod 'LineaPro', :path => '../node_modules/react-native-linea', :podspec => '../ios/LineaPro.podspec'

Если вы создали fork и добавили podspec для репо, пропустите часть :podspec.

Решение 2: Добавить исходные файлы напрямую

Это довольно простое решение, и я бы порекомендовал это. Вы можете клонировать репо react-native-linea локально на своей машине.

  • Копирование DTDevices.h, RCTLinea.h, RCTLinea.m исходных файлов в проект ios
  • Копирование LineaPro.js, NativeBridges.js в проект js
  • Скопировать libdtdev.a статическую библиотеку в проект
  • Ссылка ExternalAccessory, CoreLocation фреймворки и libdtdev.a на вашу цель

Скомпилируйте и напишите js-код для инициализации модуля LineaPro.

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

...