前提・実現したいこと
react nativeを使用してアプリを開発していますが、ビルドをする際にエラーが発生しました。
iOSアプリの開発者ではないため、エラーの解消に手間取ってます。
エラーを解消してbuildが通る状態にしたい。
発生している問題・エラーメッセージ
'UMCore/UMModuleRegistry.h' file not found
該当のソースコード
#import <Foundation/Foundation.h> #import <UMCore/UMModuleRegistry.h> typedef enum UMPermissionStatus { UMPermissionStatusDenied, UMPermissionStatusGranted, UMPermissionStatusUndetermined, } UMPermissionStatus; @protocol UMPermissionsRequester <NSObject> + (NSString *)permissionType; - (void)requestPermissionsWithResolver:(UMPromiseResolveBlock)resolve rejecter:(UMPromiseRejectBlock)reject; - (NSDictionary *)getPermissions; @end @protocol UMPermissionsInterface - (void)registerRequesters:(NSArray<id<UMPermissionsRequester>> *)newRequesters; - (void)getPermissionUsingRequesterClass:(Class)requesterClass resolve:(UMPromiseResolveBlock)resolve reject:(UMPromiseRejectBlock)reject; - (BOOL)hasGrantedPermissionUsingRequesterClass:(Class)requesterClass; - (void)askForPermissionUsingRequesterClass:(Class)requesterClass resolve:(UMPromiseResolveBlock)resolve reject:(UMPromiseRejectBlock)reject; @end
試したこと
すでに存在する、Podfile,Gemfileに沿って、以下コマンドを実行(Podfile.lock,Gemfile.lockは名前変更)
bundle exec pod install
以下のエラーが発生したため、以下コマンドを実行しpod update
[!] CocoaPods could not find compatible versions for pod "Firebase/Crashlytics": In snapshot (Podfile.lock): Firebase/Crashlytics (= 7.1.0, ~> 7.1.0) In Podfile: RNFBCrashlytics (from `../node_modules/@react-native-firebase/crashlytics`) was resolved to 10.8.1, which depends on Firebase/Crashlytics (~> 7.6.0) You have either: * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`. * changed the constraints of dependency `Firebase/Crashlytics` inside your development pod `RNFBCrashlytics`. You should run `pod update Firebase/Crashlytics` to apply changes you've made.
bundle exec pod update Firebase/Crashlytics
その後、xcode上でbuildを実施
補足情報(FW/ツールのバージョンなど)
Podfileは以下。
platform :ios, '11.0' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' require_relative '../node_modules/react-native-unimodules/cocoapods.rb' target 'myproject' do target 'myproject-stg' target 'myproject-dev' # Pods for myproject use_frameworks! pod 'React', :path => '../node_modules/react-native' pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga/yoga.podspec' 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 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety" pod 'React-Core', :path => '../node_modules/react-native/' pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules' pod 'React-Core/DevSupport', :path => '../node_modules/react-native/' pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS' pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation' pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob' pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image' pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS' pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network' pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings' pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text' pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration' pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/' pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact' pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi' pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor' pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector' pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon" pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon" permissions_path = '../node_modules/react-native-permissions/ios' pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec" pod 'Firebase/Messaging' use_unimodules! target 'myprojectTests' do inherit! :search_paths end use_native_modules! static_libraries = ['RNPermissions', 'Permission-Camera'] pre_install do |installer| # workaround for https://github.com/CocoaPods/CocoaPods/issues/3289 Pod::Installer::Xcode::TargetValidator.send(:define_method, :verify_no_static_framework_transitive_dependencies) {} installer.pod_targets.each do |target| if static_libraries.include?(target.name) def target.build_type; Pod::BuildType.static_library end end if target.name == "UMPermissionsInterface" # https://github.com/expo/expo/issues/6477 target.dependent_targets << installer.pod_targets.select{|t| t.pod_name == 'UMCore'}.first end if target.name == 'UMReactNativeAdapter' target.dependent_targets << installer.pod_targets.select{|t| t.pod_name == 'React-CoreModules'}.first end end end post_install do |installer| installer.pods_project.targets.each do |target| if ['RNFBApp', 'RNFBMessaging'].include?(target.name) target.add_system_framework(installer.pods_project.targets.find{|target| target.name == 'GoogleUtilities'}) end if ['RNFBCrashlytics'].include?(target.name) target.add_system_framework(installer.pods_project.targets.find{|target| target.name == 'Fabric'}) target.add_system_framework(installer.pods_project.targets.find{|target| target.name == 'Crashlytics'}) end end
Gemfileは以下。
# frozen_string_literal: true source "https://rubygems.org" git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } gem "cocoapods"
'UMCore/UMModuleRegistry.h' file not foundのエラー箇所のissue(https://github.com/expo/expo/issues/6477)を見ていくと、
#import <UMPermissionsInterface/UMPermissionsMethodsDelegate.h> in file included from /Users/hikoyukisakai/workspace/okanpay-reactnative2019/node_modules/unimodules-permissions-interface/ios/UMPermissionsInterface/UMPermissionsMethodsDelegate.m:3:
in fileとなっているため検索しているパスが違う可能性。デフォルト設定だとうまく行かない記事を見つけたので、XcodeのSearchパスの設定見直ししたが、解消せず。
https://teratail.com/questions/62702
https://qiita.com/shtnkgm/items/e1c3c0b7a2dfa67fe7c0
UMPermissionsInterface は node-moduleを確認するとUMCore/UMModuleRegistry には存在しないため
#import <UMCore/UMModuleRegistry.h> ↓ 以下に変更 #import <UMPermissionsInterface/UMPermissionsInterface.h>
file not found のエラーは消えた
Expected a type 別のエラー発生。データの型が見つからない意味らしい
#import<UIKit/UIKit.h>
を追加すると解消するらしいが解消せず・・
http://s-prism3.seesaa.net/article/414478694.htm
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー