Ошибка сборки, интегрирующая Clevertap в реактивное приложение

#objective-c #react-native #cocoapods #clevertap

#objective-c #react-native #cocoapods #clevertap

Вопрос:

Я пытаюсь интегрировать clevertap с собственным react и когда я включаю «use_frameworks!», cocoa pods Чтобы иметь возможность использовать

#import <CleverTapReact / CleverTapReactManager.h>

в UMLCore генерируется ошибка компиляции

  1. Уже создайте ссылку приложения с clevertap
  2. Установите весь пакет через «yarn install»
  3. Установите модули через «pod install»

Это мой подфайл:

 //----

target 'discovery' do
  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge',
    'DevSupport',
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket',
    'RCTAnimation',
    'RCTImage',
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  pod 'Google-Mobile-Ads-SDK'
  pod 'CleverTap-iOS-SDK'
  pod "Segment-CleverTap"

  use_unimodules!
  use_frameworks!

  target 'discoveryTests' do
    inherit! :search_paths
  end
end

//----
  

Я ожидаю хорошей компиляции для приложения, а вместо этого получаю ошибку компиляции

это код ошибки:

 //----


info Undefined symbols for architecture x86_64:
  "_UMLogError", referenced from:
       [UMUtilities NSDate:] in UMUtilities.o
      -[UMViewManager updateProp:withValue:onView:] in UMViewManager.o

info   "_UMLogInfo", referenced from:
       [UMUtilities UIColor:] in UMUtilities.o

info   "_UMLogWarn", referenced from:
      -[UMModuleRegistry registerExportedModule:] in UMModuleRegistry.o
      -[UMModuleRegistry registerViewManager:] in UMModuleRegistry.o
      -[UMModuleRegistry registerSingletonModule:] in UMModuleRegistry.o
      -[UMModuleRegistryProvider moduleRegistryForExperienceId:] in UMModuleRegistryProvider.o
      -[UMViewManager updateProp:withValue:onView:] in UMViewManager.o
ld: symbol(s) not found for architecture x86_64

info clang: error: linker command failed with exit code 1 (use -v to see invocation)


//----
  

Ответ №1:

Похоже, что вы интегрируете CleverTap React Native с использованием Cocoapods для своего приложения iOS, и, насколько я понимаю, проблема заключается в том, что вы не можете найти класс CleverTapReactManager.h .

Я бы предложил добавить pod 'clevertap-react-native', :path => '../node_modules/clevertap-react-native' в качестве зависимости в ваш ios / Podfile вместо pod 'CleverTap-iOS-SDK'

Этот локальный подспек clevertap-react-native интегрирует React Native iOS bridge через Cocoapods.

Ссылка для помощи в установке того же: https://github.com/CleverTap/clevertap-react-native/blob/master/docs/install.md#installing-clevertap-react-native

Надеюсь, это поможет. Для получения дополнительных вопросов вы можете опубликовать на https://community.clevertap.com /

Комментарии:

1. Спасибо, Адити, я попробовал этот подход, но в этом сценарии и без use_frameworks! Я получаю сообщение об ошибке /node_modules/clevertap-react-native/ios/CleverTapReact/CleverTapReactManager.m:9:9: фатальная ошибка: файл ‘CleverTapSDK/CleverTap.h’ не найден #импорт <CleverTapSDK/CleverTap.h>

2. CleverTapSDK — это динамический фреймворк, с указанием use_frameworks! вы можете заставить CocoaPods интегрироваться в ваш проект через фреймворки вместо статических библиотек. Поэтому я предлагаю попробовать включить use_framework! в файле pod, а затем создайте свой проект.

3. Привет, Адити, спасибо за ответ, но дело в том, что если мы используем этот подход, мы получаем ошибку .. / .. / ../ ios / Pods / Headers / Public / Firebase / Firebase.h:1:9: фатальная ошибка: файл ‘FirebaseCore / FirebaseCore.h’ не найден #импорт/FirebaseCore.h> и это происходит в основном потому, что мы используем Firebase для настройки Google analytics, а Firebase несовместим с use_frameworks! RNFirebase не компилируется с помощью use_frameworks!

Ответ №2:

или при импорте в файл Appdelegate вместо

 #import <<CleverTapReact/CleverTap.h>
#import <CleverTapReact/CleverTapReactManager.h>
  

использование

 #import <CleverTapReactManager.h>
#import <CleverTap.h>